Update documentation
diff --git a/.lock b/.lock
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/.lock
diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.nojekyll
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
new file mode 100644
index 0000000..af77776
--- /dev/null
+++ b/COPYRIGHT.txt
@@ -0,0 +1,45 @@
+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.woff, FiraSans-Medium.woff):
+
+    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.woff, SourceCodePro-Semibold.woff):
+
+    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 Pro (SourceSerifPro-Regular.ttf.woff,
+    SourceSerifPro-Bold.ttf.woff, SourceSerifPro-It.ttf.woff):
+
+    Copyright 2014 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 SourceSerifPro-LICENSE.txt.
+
+This copyright file is intended to be distributed with rustdoc output.
diff --git a/FiraSans-LICENSE.txt b/FiraSans-LICENSE.txt
new file mode 100644
index 0000000..d444ea9
--- /dev/null
+++ b/FiraSans-LICENSE.txt
@@ -0,0 +1,94 @@
+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.
diff --git a/FiraSans-Medium.woff b/FiraSans-Medium.woff
new file mode 100644
index 0000000..7d742c5
--- /dev/null
+++ b/FiraSans-Medium.woff
Binary files differ
diff --git a/FiraSans-Medium.woff2 b/FiraSans-Medium.woff2
new file mode 100644
index 0000000..7a1e5fc
--- /dev/null
+++ b/FiraSans-Medium.woff2
Binary files differ
diff --git a/FiraSans-Regular.woff b/FiraSans-Regular.woff
new file mode 100644
index 0000000..d8e0363
--- /dev/null
+++ b/FiraSans-Regular.woff
Binary files differ
diff --git a/FiraSans-Regular.woff2 b/FiraSans-Regular.woff2
new file mode 100644
index 0000000..e766e06
--- /dev/null
+++ b/FiraSans-Regular.woff2
Binary files differ
diff --git a/LICENSE-APACHE.txt b/LICENSE-APACHE.txt
new file mode 100644
index 0000000..16fe87b
--- /dev/null
+++ b/LICENSE-APACHE.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/LICENSE-MIT.txt b/LICENSE-MIT.txt
new file mode 100644
index 0000000..31aa793
--- /dev/null
+++ b/LICENSE-MIT.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/SourceCodePro-LICENSE.txt b/SourceCodePro-LICENSE.txt
new file mode 100644
index 0000000..0754257
--- /dev/null
+++ b/SourceCodePro-LICENSE.txt
@@ -0,0 +1,93 @@
+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.
diff --git a/SourceCodePro-Regular.woff b/SourceCodePro-Regular.woff
new file mode 100644
index 0000000..5576670
--- /dev/null
+++ b/SourceCodePro-Regular.woff
Binary files differ
diff --git a/SourceCodePro-Semibold.woff b/SourceCodePro-Semibold.woff
new file mode 100644
index 0000000..ca972a1
--- /dev/null
+++ b/SourceCodePro-Semibold.woff
Binary files differ
diff --git a/SourceSerifPro-Bold.ttf.woff b/SourceSerifPro-Bold.ttf.woff
new file mode 100644
index 0000000..ca25431
--- /dev/null
+++ b/SourceSerifPro-Bold.ttf.woff
Binary files differ
diff --git a/SourceSerifPro-It.ttf.woff b/SourceSerifPro-It.ttf.woff
new file mode 100644
index 0000000..a287bbe
--- /dev/null
+++ b/SourceSerifPro-It.ttf.woff
Binary files differ
diff --git a/SourceSerifPro-LICENSE.md b/SourceSerifPro-LICENSE.md
new file mode 100644
index 0000000..22cb755
--- /dev/null
+++ b/SourceSerifPro-LICENSE.md
@@ -0,0 +1,93 @@
+Copyright 2014-2018 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.
diff --git a/SourceSerifPro-Regular.ttf.woff b/SourceSerifPro-Regular.ttf.woff
new file mode 100644
index 0000000..a3d55cf
--- /dev/null
+++ b/SourceSerifPro-Regular.ttf.woff
Binary files differ
diff --git a/ayu.css b/ayu.css
new file mode 100644
index 0000000..77e6843
--- /dev/null
+++ b/ayu.css
@@ -0,0 +1 @@
+ body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod){border-bottom-color:#5c6773;}h4:not(.method):not(.type):not(.tymethod):not(.associatedconstant){border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}code{color:#ffb454;}h3>code,h4>code,h5>code{color:#e6e1cf;}pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre{color:#e6e1cf;background-color:#191f26;}.sidebar{background-color:#14191f;}.logo-container.rust-logo>img{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);}*{scrollbar-color:#5c6773 transparent;}.sidebar{scrollbar-color:#5c6773 transparent;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#0f1419;}.sidebar .location{border-color:#000;background-color:#0f1419;color:#fff;}.sidebar-elems .location{color:#ff7733;}.sidebar-elems .location a{color:#fff;}.sidebar .version{border-bottom-color:#424c57;}.sidebar-title{border-top-color:#5c6773;border-bottom-color:#5c6773;}.block a:hover{background:transparent;color:#ffb44c;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#5c6773;}.docblock table,.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.content .highlighted{color:#000 !important;background-color:#c6afb3;}.content .highlighted a,.content .highlighted span{color:#000 !important;}.content .highlighted{background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a span.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ef57ff;}.content span.union,.content a.union{color:#98a01c;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#6380a0;}.content span.primitive,.content a.primitive{color:#32889b;}.content span.traitalias,.content a.traitalias{color:#57d399;}.content span.keyword,.content a.keyword{color:#de5249;}.content span.externcrate,.content span.mod,.content a.mod{color:#acccf9;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#99e0c9;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#cfbcf5;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav:not(.sidebar){border-bottom-color:#424c57;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#c5c5c5;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#39AFD7;}.collapse-toggle{color:#999;}#crate-search{color:#c5c5c5;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;border-color:#424c57;}.search-input{color:#ffffff;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;transition:box-shadow 150ms ease-in-out;}#crate-search+.search-input:focus{box-shadow:0 0 0 1px #148099,0 0 0 2px transparent;}.search-focus:disabled{color:#929292;}.module-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help>div>span{border-bottom-color:#5c6773;}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label{color:#999;}:target>code,:target>.in-band{background:rgba(255,236,164,0.06);border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.content .highlighted.mod,.content .highlighted.externcrate{}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content .highlighted.trait{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content .highlighted.traitalias{}.content span.type,.content a.type,.block a.current.type{}.content span.union,.content a.union,.block a.current.union{}.content .highlighted.foreigntype{}pre.rust .lifetime{}.content .highlighted.primitive{}.content .highlighted.constant,.content .highlighted.static{}.stab.unstable{}.content .highlighted.fn,.content .highlighted.method,.content .highlighted.tymethod{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content .highlighted.enum{}.content .highlighted.struct{}.content .highlighted.keyword{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content .highlighted.attr,.content .highlighted.derive,.content .highlighted.macro{}.stab.portability{}.content .highlighted.union{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}.content .highlighted.type{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,.help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,.help-button:hover,.help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}#all-types{background-color:#14191f;}#all-types:hover{background-color:rgba(70,70,70,0.33);}.search-results td span.alias{color:#c5c5c5;}.search-results td span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;}
\ No newline at end of file
diff --git a/brush.svg b/brush.svg
new file mode 100644
index 0000000..ea266e8
--- /dev/null
+++ b/brush.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1792" height="1792" viewBox="0 0 1792 1792"><path d="M1615 0q70 0 122.5 46.5t52.5 116.5q0 63-45 151-332 629-465 752-97 91-218 91-126 0-216.5-92.5t-90.5-219.5q0-128 92-212l638-579q59-54 130-54zm-909 1034q39 76 106.5 130t150.5 76l1 71q4 213-129.5 347t-348.5 134q-123 0-218-46.5t-152.5-127.5-86.5-183-29-220q7 5 41 30t62 44.5 59 36.5 46 17q41 0 55-37 25-66 57.5-112.5t69.5-76 88-47.5 103-25.5 125-10.5z"/></svg>
\ No newline at end of file
diff --git a/crates.js b/crates.js
new file mode 100644
index 0000000..88f26ba
--- /dev/null
+++ b/crates.js
@@ -0,0 +1 @@
+window.ALL_CRATES = ["unicode_segmentation"];
\ No newline at end of file
diff --git a/dark.css b/dark.css
new file mode 100644
index 0000000..8ee9c65
--- /dev/null
+++ b/dark.css
@@ -0,0 +1 @@
+body{background-color:#353535;color:#ddd;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre{background-color:#2A2A2A;}.sidebar{background-color:#505050;}.logo-container.rust-logo>img{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)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) transparent;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current{background-color:#333;}.source .sidebar{background-color:#353535;}.sidebar .location{border-color:#fff;background:#575757;color:#DDD;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#444;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#DDD;}.docblock table,.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.content .highlighted{color:#eee !important;background-color:#616161;}.content .highlighted a,.content .highlighted span{color:#eee !important;}.content .highlighted.trait{background-color:#013191;}.content .highlighted.traitalias{background-color:#013191;}.content .highlighted.mod,.content .highlighted.externcrate{background-color:#afc6e4;}.content .highlighted.mod{background-color:#803a1b;}.content .highlighted.externcrate{background-color:#396bac;}.content .highlighted.enum{background-color:#5b4e68;}.content .highlighted.struct{background-color:#194e9f;}.content .highlighted.union{background-color:#b7bd49;}.content .highlighted.fn,.content .highlighted.method,.content .highlighted.tymethod{background-color:#4950ed;}.content .highlighted.type{background-color:#38902c;}.content .highlighted.foreigntype{background-color:#b200d6;}.content .highlighted.attr,.content .highlighted.derive,.content .highlighted.macro{background-color:#217d1c;}.content .highlighted.constant,.content .highlighted.static{background-color:#0063cc;}.content .highlighted.primitive{background-color:#00708a;}.content .highlighted.keyword{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#82b089;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#ff7f00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#dd7de8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#a6ae37;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#82a5c9;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#43aec7;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#bda000;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b397da;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav:not(.sidebar){border-bottom-color:#4e4e4e;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#ddd;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#D2991D;}a.test-arrow{color:#dedede;}.collapse-toggle{color:#999;}#crate-search{color:#111;background-color:#f0f0f0;border-color:#000;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input{color:#111;background-color:#f0f0f0;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input:focus{border-color:#008dfd;}.search-focus:disabled{background-color:#c5c4c4;}#crate-search+.search-input:focus{box-shadow:0 0 8px 4px #078dd8;}.module-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#F3DFFF;border-color:#7F0087;color:#2f2f2f;}.stab.portability{background:#C4ECFF;border-color:#7BA5DB;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label{color:#999;}:target>code,:target>.in-band{background-color:#494a3d;border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,.help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,.help-button:hover,.help-button:focus{border-color:#ffb900;}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}#all-types{background-color:#505050;}#all-types:hover{background-color:#606060;}.search-results td span.alias{color:#fff;}.search-results td span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;}
\ No newline at end of file
diff --git a/down-arrow.svg b/down-arrow.svg
new file mode 100644
index 0000000..35437e7
--- /dev/null
+++ b/down-arrow.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" width="128" height="128" enable-background="new 0 0 128 128" version="1.1" viewBox="-30 -20 176 176" xml:space="preserve"><g><line x1="111" x2="64" y1="40.5" y2="87.499" fill="none" stroke="#2F3435" stroke-linecap="square" stroke-miterlimit="10" stroke-width="12"/><line x1="64" x2="17" y1="87.499" y2="40.5" fill="none" stroke="#2F3435" stroke-linecap="square" stroke-miterlimit="10" stroke-width="12"/></g></svg>
\ No newline at end of file
diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js
new file mode 100644
index 0000000..6d03bf7
--- /dev/null
+++ b/implementors/core/clone/trait.Clone.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/struct.GraphemeIndices.html\" title=\"struct unicode_segmentation::GraphemeIndices\">GraphemeIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIndices"]},{"text":"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=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl <a 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=\"unicode_segmentation/struct.GraphemeCursor.html\" title=\"struct unicode_segmentation::GraphemeCursor\">GraphemeCursor</a>","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeCursor"]},{"text":"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=\"unicode_segmentation/struct.UWordBounds.html\" title=\"struct unicode_segmentation::UWordBounds\">UWordBounds</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UWordBounds"]},{"text":"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=\"unicode_segmentation/struct.UWordBoundIndices.html\" title=\"struct unicode_segmentation::UWordBoundIndices\">UWordBoundIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UWordBoundIndices"]},{"text":"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=\"unicode_segmentation/struct.UnicodeSentences.html\" title=\"struct unicode_segmentation::UnicodeSentences\">UnicodeSentences</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::sentence::UnicodeSentences"]},{"text":"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=\"unicode_segmentation/struct.USentenceBounds.html\" title=\"struct unicode_segmentation::USentenceBounds\">USentenceBounds</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::sentence::USentenceBounds"]},{"text":"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=\"unicode_segmentation/struct.USentenceBoundIndices.html\" title=\"struct unicode_segmentation::USentenceBoundIndices\">USentenceBoundIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::sentence::USentenceBoundIndices"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/cmp/trait.Eq.js b/implementors/core/cmp/trait.Eq.js
new file mode 100644
index 0000000..43a7c4b
--- /dev/null
+++ b/implementors/core/cmp/trait.Eq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/cmp/trait.PartialEq.js b/implementors/core/cmp/trait.PartialEq.js
new file mode 100644
index 0000000..9f3bd09
--- /dev/null
+++ b/implementors/core/cmp/trait.PartialEq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>&gt; for <a class=\"enum\" href=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js
new file mode 100644
index 0000000..c0d2014
--- /dev/null
+++ b/implementors/core/fmt/trait.Debug.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl <a 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=\"unicode_segmentation/struct.GraphemeCursor.html\" title=\"struct unicode_segmentation::GraphemeCursor\">GraphemeCursor</a>","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeCursor"]},{"text":"impl <a 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=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js b/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js
new file mode 100644
index 0000000..58bd210
--- /dev/null
+++ b/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html\" title=\"trait core::iter::traits::double_ended::DoubleEndedIterator\">DoubleEndedIterator</a> for <a class=\"struct\" href=\"unicode_segmentation/struct.GraphemeIndices.html\" title=\"struct unicode_segmentation::GraphemeIndices\">GraphemeIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIndices"]},{"text":"impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html\" title=\"trait core::iter::traits::double_ended::DoubleEndedIterator\">DoubleEndedIterator</a> for <a class=\"struct\" href=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html\" title=\"trait core::iter::traits::double_ended::DoubleEndedIterator\">DoubleEndedIterator</a> for <a class=\"struct\" href=\"unicode_segmentation/struct.UnicodeWords.html\" title=\"struct unicode_segmentation::UnicodeWords\">UnicodeWords</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UnicodeWords"]},{"text":"impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html\" title=\"trait core::iter::traits::double_ended::DoubleEndedIterator\">DoubleEndedIterator</a> for <a class=\"struct\" href=\"unicode_segmentation/struct.UnicodeWordIndices.html\" title=\"struct unicode_segmentation::UnicodeWordIndices\">UnicodeWordIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UnicodeWordIndices"]},{"text":"impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html\" title=\"trait core::iter::traits::double_ended::DoubleEndedIterator\">DoubleEndedIterator</a> for <a class=\"struct\" href=\"unicode_segmentation/struct.UWordBoundIndices.html\" title=\"struct unicode_segmentation::UWordBoundIndices\">UWordBoundIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UWordBoundIndices"]},{"text":"impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html\" title=\"trait core::iter::traits::double_ended::DoubleEndedIterator\">DoubleEndedIterator</a> for <a class=\"struct\" href=\"unicode_segmentation/struct.UWordBounds.html\" title=\"struct unicode_segmentation::UWordBounds\">UWordBounds</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UWordBounds"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/iter/traits/iterator/trait.Iterator.js b/implementors/core/iter/traits/iterator/trait.Iterator.js
new file mode 100644
index 0000000..ac734c6
--- /dev/null
+++ b/implementors/core/iter/traits/iterator/trait.Iterator.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.GraphemeIndices.html\" title=\"struct unicode_segmentation::GraphemeIndices\">GraphemeIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIndices"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.UnicodeWords.html\" title=\"struct unicode_segmentation::UnicodeWords\">UnicodeWords</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UnicodeWords"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.UnicodeWordIndices.html\" title=\"struct unicode_segmentation::UnicodeWordIndices\">UnicodeWordIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UnicodeWordIndices"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.UWordBoundIndices.html\" title=\"struct unicode_segmentation::UWordBoundIndices\">UWordBoundIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UWordBoundIndices"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.UWordBounds.html\" title=\"struct unicode_segmentation::UWordBounds\">UWordBounds</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::word::UWordBounds"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.UnicodeSentences.html\" title=\"struct unicode_segmentation::UnicodeSentences\">UnicodeSentences</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::sentence::UnicodeSentences"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.USentenceBounds.html\" title=\"struct unicode_segmentation::USentenceBounds\">USentenceBounds</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::sentence::USentenceBounds"]},{"text":"impl&lt;'a&gt; <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=\"unicode_segmentation/struct.USentenceBoundIndices.html\" title=\"struct unicode_segmentation::USentenceBoundIndices\">USentenceBoundIndices</a>&lt;'a&gt;","synthetic":false,"types":["unicode_segmentation::sentence::USentenceBoundIndices"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js
new file mode 100644
index 0000000..45ec9f5
--- /dev/null
+++ b/implementors/core/marker/trait.Freeze.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.GraphemeIndices.html\" title=\"struct unicode_segmentation::GraphemeIndices\">GraphemeIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIndices"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.GraphemeCursor.html\" title=\"struct unicode_segmentation::GraphemeCursor\">GraphemeCursor</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeCursor"]},{"text":"impl Freeze for <a class=\"enum\" href=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.UnicodeWords.html\" title=\"struct unicode_segmentation::UnicodeWords\">UnicodeWords</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWords"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.UnicodeWordIndices.html\" title=\"struct unicode_segmentation::UnicodeWordIndices\">UnicodeWordIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWordIndices"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.UWordBounds.html\" title=\"struct unicode_segmentation::UWordBounds\">UWordBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBounds"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.UWordBoundIndices.html\" title=\"struct unicode_segmentation::UWordBoundIndices\">UWordBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBoundIndices"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.UnicodeSentences.html\" title=\"struct unicode_segmentation::UnicodeSentences\">UnicodeSentences</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::UnicodeSentences"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.USentenceBounds.html\" title=\"struct unicode_segmentation::USentenceBounds\">USentenceBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBounds"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"unicode_segmentation/struct.USentenceBoundIndices.html\" title=\"struct unicode_segmentation::USentenceBoundIndices\">USentenceBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBoundIndices"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js
new file mode 100644
index 0000000..144d612
--- /dev/null
+++ b/implementors/core/marker/trait.Send.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/struct.GraphemeIndices.html\" title=\"struct unicode_segmentation::GraphemeIndices\">GraphemeIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIndices"]},{"text":"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=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl <a 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=\"unicode_segmentation/struct.GraphemeCursor.html\" title=\"struct unicode_segmentation::GraphemeCursor\">GraphemeCursor</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeCursor"]},{"text":"impl <a 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=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]},{"text":"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=\"unicode_segmentation/struct.UnicodeWords.html\" title=\"struct unicode_segmentation::UnicodeWords\">UnicodeWords</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWords"]},{"text":"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=\"unicode_segmentation/struct.UnicodeWordIndices.html\" title=\"struct unicode_segmentation::UnicodeWordIndices\">UnicodeWordIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWordIndices"]},{"text":"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=\"unicode_segmentation/struct.UWordBounds.html\" title=\"struct unicode_segmentation::UWordBounds\">UWordBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBounds"]},{"text":"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=\"unicode_segmentation/struct.UWordBoundIndices.html\" title=\"struct unicode_segmentation::UWordBoundIndices\">UWordBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBoundIndices"]},{"text":"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=\"unicode_segmentation/struct.UnicodeSentences.html\" title=\"struct unicode_segmentation::UnicodeSentences\">UnicodeSentences</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::UnicodeSentences"]},{"text":"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=\"unicode_segmentation/struct.USentenceBounds.html\" title=\"struct unicode_segmentation::USentenceBounds\">USentenceBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBounds"]},{"text":"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=\"unicode_segmentation/struct.USentenceBoundIndices.html\" title=\"struct unicode_segmentation::USentenceBoundIndices\">USentenceBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBoundIndices"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.StructuralEq.js b/implementors/core/marker/trait.StructuralEq.js
new file mode 100644
index 0000000..37fd531
--- /dev/null
+++ b/implementors/core/marker/trait.StructuralEq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.StructuralPartialEq.js b/implementors/core/marker/trait.StructuralPartialEq.js
new file mode 100644
index 0000000..cc5df55
--- /dev/null
+++ b/implementors/core/marker/trait.StructuralPartialEq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":false,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js
new file mode 100644
index 0000000..bfd2d65
--- /dev/null
+++ b/implementors/core/marker/trait.Sync.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/struct.GraphemeIndices.html\" title=\"struct unicode_segmentation::GraphemeIndices\">GraphemeIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIndices"]},{"text":"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=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl <a 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=\"unicode_segmentation/struct.GraphemeCursor.html\" title=\"struct unicode_segmentation::GraphemeCursor\">GraphemeCursor</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeCursor"]},{"text":"impl <a 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=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]},{"text":"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=\"unicode_segmentation/struct.UnicodeWords.html\" title=\"struct unicode_segmentation::UnicodeWords\">UnicodeWords</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWords"]},{"text":"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=\"unicode_segmentation/struct.UnicodeWordIndices.html\" title=\"struct unicode_segmentation::UnicodeWordIndices\">UnicodeWordIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWordIndices"]},{"text":"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=\"unicode_segmentation/struct.UWordBounds.html\" title=\"struct unicode_segmentation::UWordBounds\">UWordBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBounds"]},{"text":"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=\"unicode_segmentation/struct.UWordBoundIndices.html\" title=\"struct unicode_segmentation::UWordBoundIndices\">UWordBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBoundIndices"]},{"text":"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=\"unicode_segmentation/struct.UnicodeSentences.html\" title=\"struct unicode_segmentation::UnicodeSentences\">UnicodeSentences</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::UnicodeSentences"]},{"text":"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=\"unicode_segmentation/struct.USentenceBounds.html\" title=\"struct unicode_segmentation::USentenceBounds\">USentenceBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBounds"]},{"text":"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=\"unicode_segmentation/struct.USentenceBoundIndices.html\" title=\"struct unicode_segmentation::USentenceBoundIndices\">USentenceBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBoundIndices"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js
new file mode 100644
index 0000000..cc20142
--- /dev/null
+++ b/implementors/core/marker/trait.Unpin.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [{"text":"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=\"unicode_segmentation/struct.GraphemeIndices.html\" title=\"struct unicode_segmentation::GraphemeIndices\">GraphemeIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIndices"]},{"text":"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=\"unicode_segmentation/struct.Graphemes.html\" title=\"struct unicode_segmentation::Graphemes\">Graphemes</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::grapheme::Graphemes"]},{"text":"impl <a 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=\"unicode_segmentation/struct.GraphemeCursor.html\" title=\"struct unicode_segmentation::GraphemeCursor\">GraphemeCursor</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeCursor"]},{"text":"impl <a 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=\"unicode_segmentation/enum.GraphemeIncomplete.html\" title=\"enum unicode_segmentation::GraphemeIncomplete\">GraphemeIncomplete</a>","synthetic":true,"types":["unicode_segmentation::grapheme::GraphemeIncomplete"]},{"text":"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=\"unicode_segmentation/struct.UnicodeWords.html\" title=\"struct unicode_segmentation::UnicodeWords\">UnicodeWords</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWords"]},{"text":"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=\"unicode_segmentation/struct.UnicodeWordIndices.html\" title=\"struct unicode_segmentation::UnicodeWordIndices\">UnicodeWordIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UnicodeWordIndices"]},{"text":"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=\"unicode_segmentation/struct.UWordBounds.html\" title=\"struct unicode_segmentation::UWordBounds\">UWordBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBounds"]},{"text":"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=\"unicode_segmentation/struct.UWordBoundIndices.html\" title=\"struct unicode_segmentation::UWordBoundIndices\">UWordBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::word::UWordBoundIndices"]},{"text":"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=\"unicode_segmentation/struct.UnicodeSentences.html\" title=\"struct unicode_segmentation::UnicodeSentences\">UnicodeSentences</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::UnicodeSentences"]},{"text":"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=\"unicode_segmentation/struct.USentenceBounds.html\" title=\"struct unicode_segmentation::USentenceBounds\">USentenceBounds</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBounds"]},{"text":"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=\"unicode_segmentation/struct.USentenceBoundIndices.html\" title=\"struct unicode_segmentation::USentenceBoundIndices\">USentenceBoundIndices</a>&lt;'a&gt;","synthetic":true,"types":["unicode_segmentation::sentence::USentenceBoundIndices"]}];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/unicode_segmentation/trait.UnicodeSegmentation.js b/implementors/unicode_segmentation/trait.UnicodeSegmentation.js
new file mode 100644
index 0000000..cb89759
--- /dev/null
+++ b/implementors/unicode_segmentation/trait.UnicodeSegmentation.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["unicode_segmentation"] = [];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..cc6f57e
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+<meta http-equiv=refresh content=0;url=unicode_segmentation/index.html>
diff --git a/light.css b/light.css
new file mode 100644
index 0000000..050c4f2
--- /dev/null
+++ b/light.css
@@ -0,0 +1 @@
+ body{background-color:white;color:black;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){color:black;}h1.fqn{border-bottom-color:#D5D5D5;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre{background-color:#F5F5F5;}.sidebar{background-color:#F1F1F1;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.logo-container.rust-logo>img{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current{background-color:#fff;}.source .sidebar{background-color:#fff;}.sidebar .location{border-color:#000;background-color:#fff;color:#333;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#F5F5F5;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#f6fdb0 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#ddd;}.docblock table,.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.content .highlighted{color:#000 !important;background-color:#ccc;}.content .highlighted a,.content .highlighted span{color:#000 !important;}.content .highlighted.trait{background-color:#c7b6ff;}.content .highlighted.traitalias{background-color:#c7b6ff;}.content .highlighted.mod,.content .highlighted.externcrate{background-color:#afc6e4;}.content .highlighted.enum{background-color:#b4d1b9;}.content .highlighted.struct{background-color:#e7b1a0;}.content .highlighted.union{background-color:#b7bd49;}.content .highlighted.fn,.content .highlighted.method,.content .highlighted.tymethod{background-color:#c6afb3;}.content .highlighted.type{background-color:#ffc891;}.content .highlighted.foreigntype{background-color:#f5c4ff;}.content .highlighted.attr,.content .highlighted.derive,.content .highlighted.macro{background-color:#8ce488;}.content .highlighted.constant,.content .highlighted.static{background-color:#c3e0ff;}.content .highlighted.primitive{background-color:#9aecff;}.content .highlighted.keyword{background-color:#f99650;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#508157;}.content span.struct,.content a.struct,.block a.current.struct{color:#ad448e;}.content span.type,.content a.type,.block a.current.type{color:#ba5d00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#cd00e2;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#767b27;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#546e8a;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2c8093;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#4d76ae;}.content span.trait,.content a.trait,.block a.current.trait{color:#7c5af3;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#6841f1;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#9a6e31;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}nav:not(.sidebar){border-bottom-color:#e0e0e0;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#000;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#3873AD;}a.test-arrow{color:#f5f5f5;}.collapse-toggle{color:#999;}#crate-search{color:#555;background-color:white;border-color:#e0e0e0;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input{color:#555;background-color:white;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input:focus{border-color:#66afe9;}.search-focus:disabled{background-color:#e6e6e6;}#crate-search+.search-input:focus{box-shadow:0 0 8px #078dd8;}.module-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#F3DFFF;border-color:#7F0087;}.stab.portability{background:#C4ECFF;border-color:#7BA5DB;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label{color:#999;}:target>code,:target>.in-band{background:#FDFFD3;border-right:3px solid #ffb44c;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F1F1F1;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F1F1F1;border-right-color:#000;}#sidebar-filler{background-color:#F1F1F1;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,.help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,.help-button:hover,.help-button:focus{border-color:#717171;}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}#all-types{background-color:#fff;}#all-types:hover{background-color:#f9f9f9;}.search-results td span.alias{color:#000;}.search-results td span.grey{color:#999;}#sidebar-toggle{background-color:#F1F1F1;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F1F1F1;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;}
\ No newline at end of file
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..9beaa88
--- /dev/null
+++ b/main.js
@@ -0,0 +1,8 @@
+if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}(function(){var rustdocVars=document.getElementById("rustdoc-vars");if(rustdocVars){window.rootPath=rustdocVars.attributes["data-root-path"].value;window.currentCrate=rustdocVars.attributes["data-current-crate"].value;window.searchJS=rustdocVars.attributes["data-search-js"].value}var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}function getSearchInput(){return document.getElementsByClassName("search-input")[0]}function getSearchElement(){return document.getElementById("search")}function getThemesElement(){return document.getElementById("theme-choices")}function getThemePickerElement(){return document.getElementById("theme-picker")}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function focusSearchBar(){getSearchInput().focus()}function defocusSearchBar(){getSearchInput().blur()}(function(){"use strict";var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias"];var disableShortcuts=getSettingValue("disable-shortcuts")==="true";var search_input=getSearchInput();var searchTimeout=null;var toggleAllDocsId="toggle-all-docs";var currentTab=0;var mouseMovedAfterSearch=true;var titleBeforeSearch=document.title;var searchTitle=null;function clearInputTimeout(){if(searchTimeout!==null){clearTimeout(searchTimeout);searchTimeout=null}}function getPageId(){if(window.location.hash){var tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}function showSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){addClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];if(sidebar){addClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(!filler){var div=document.createElement("div");div.id="sidebar-filler";sidebar.appendChild(div)}}}function hideSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){removeClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(filler){filler.remove()}document.getElementsByTagName("body")[0].style.marginTop=""}function showSearchResults(search){if(search===null||typeof search==='undefined'){search=getSearchElement()}addClass(main,"hidden");removeClass(search,"hidden");mouseMovedAfterSearch=false;document.title=searchTitle}function hideSearchResults(search){if(search===null||typeof search==='undefined'){search=getSearchElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}}var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function getQueryStringParams(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function isHidden(elem){return elem.offsetHeight===0}var main=document.getElementById("main");var savedHash="";function handleHashes(ev){var elem;var search=getSearchElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){hideSearchResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(hash,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}elem=document.getElementById(savedHash.slice(1));if(!elem||!isHidden(elem)){return}var parent=elem.parentNode;if(parent&&hasClass(parent,"impl-items")){onEachLazy(parent.getElementsByClassName("collapsed"),function(e){if(e.parentNode===parent){e.click();return true}});if(isHidden(elem)){if(hasClass(parent.lastElementChild,"collapse-toggle")){parent.lastElementChild.click()}}}}}function highlightSourceLines(match,ev){if(typeof match==="undefined"){hideSidebar();match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to<from){var tmp=to;to=from;from=tmp}var elem=document.getElementById(from);if(!elem){return}if(!ev){var x=document.getElementById(from);if(x){x.scrollIntoView()}}onEachLazy(document.getElementsByClassName("line-numbers"),function(e){onEachLazy(e.getElementsByTagName("span"),function(i_e){removeClass(i_e,"line-highlighted")})});for(var i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}function onHashChange(ev){hideSidebar();var match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(match){return highlightSourceLines(match,ev)}handleHashes(ev)}function expandSection(id){var elem=document.getElementById(id);if(elem&&isHidden(elem)){var h3=elem.parentNode.previousElementSibling;if(h3&&h3.tagName!=="H3"){h3=h3.previousElementSibling}if(h3){var collapses=h3.getElementsByClassName("collapse-toggle");if(collapses.length>0){collapseDocs(collapses[0],"show")}}}}function getHelpElement(build){if(build!==false){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display===true){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&hasClass(help,"hidden")===false){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=getSearchElement();if(hasClass(help,"hidden")===false){displayHelp(false,ev,help)}else if(hasClass(search,"hidden")===false){clearInputTimeout();ev.preventDefault();hideSearchResults(search)}defocusSearchBar();hideThemeButtonState()}function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts===true){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();focusSearchBar();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:var themePicker=getThemePickerElement();if(themePicker.parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!=="theme-picker"){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!=="theme-picker"){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id==="theme-picker"&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}function findParentElement(elem,tagName){do{if(elem&&elem.tagName===tagName){return elem}elem=elem.parentNode}while(elem);return null}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);document.addEventListener("mousemove",function(){mouseMovedAfterSearch=true});var handleSourceHighlight=(function(){var prev_line_id=0;var set_fragment=function(name){var x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return function(ev){var cur_line_id=parseInt(ev.target.id,10);ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){var 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)}}}());document.addEventListener("click",function(ev){var helpElem=getHelpElement(false);if(hasClass(ev.target,"help-button")){displayHelp(true,ev)}else if(hasClass(ev.target,"collapse-toggle")){collapseDocs(ev.target,"toggle")}else if(hasClass(ev.target.parentNode,"collapse-toggle")){collapseDocs(ev.target.parentNode,"toggle")}else if(ev.target.tagName==="SPAN"&&hasClass(ev.target.parentNode,"line-numbers")){handleSourceHighlight(ev)}else if(helpElem&&hasClass(helpElem,"hidden")===false){var is_inside_help_popup=ev.target!==helpElem&&helpElem.contains(ev.target);if(is_inside_help_popup===false){addClass(helpElem,"hidden");removeClass(document.body,"blur")}}else{var a=findParentElement(ev.target,"A");if(a&&a.hash){expandSection(a.hash.replace(/^#/,""))}}});(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i<len;++i){match=url.match(/\/[^\/]*$/);if(i<len-1){stripped=match[0]+stripped}url=url.substring(0,url.length-match[0].length)}var selectedVersion=document.getElementsByClassName("version-selector")[0].value;url+="/"+selectedVersion+stripped;document.location.href=url}}}());var levenshtein_row2=[];function levenshtein(s1,s2){if(s1===s2){return 0}var s1_len=s1.length,s2_len=s2.length;if(s1_len&&s2_len){var i1=0,i2=0,a,b,c,c2,row=levenshtein_row2;while(i1<s1_len){row[i1]=++i1}while(i2<s2_len){c2=s2.charCodeAt(i2);a=i2;++i2;b=i2;for(i1=0;i1<s1_len;++i1){c=a+(s1.charCodeAt(i1)!==c2?1:0);a=row[i1];b=b<a?(b<c?b+1:c):(a<c?a+1:c);row[i1]=b}}return b}return s1_len+s2_len}window.initSearch=function(rawSearchIndex){var MAX_LEV_DISTANCE=3;var MAX_RESULTS=200;var GENERICS_DATA=1;var NAME=0;var INPUTS_DATA=0;var OUTPUT_DATA=1;var NO_TYPE_FILTER=-1;var currentResults,index,searchIndex;var ALIASES={};var params=getQueryStringParams();if(search_input.value===""){search_input.value=params.search||""}function execQuery(query,searchWords,filterCrates){function itemTypeFromName(typename){for(var i=0,len=itemTypes.length;i<len;++i){if(itemTypes[i]===typename){return i}}return NO_TYPE_FILTER}var valLower=query.query.toLowerCase(),val=valLower,typeFilter=itemTypeFromName(query.type),results={},results_in_args={},results_returned={},split=valLower.split("::");split=split.filter(function(segment){return segment!==""});function transformResults(results,isType){var out=[];for(var i=0,len=results.length;i<len;++i){if(results[i].id>-1){var obj=searchIndex[results[i].id];obj.lev=results[i].lev;if(isType!==true||obj.type){var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnProperty(results,entry)){ar.push(results[entry])}}results=ar;var i,len,result;for(i=0,len=results.length;i<len;++i){result=results[i];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{}}if(results.length===0){return[]}results.sort(function(aaa,bbb){var a,b;a=(aaa.word!==val);b=(bbb.word!==val);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==window.currentCrate);b=(bbb.item.crate!==window.currentCrate);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=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");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});for(i=0,len=results.length;i<len;++i){var result=results[i];if(result.dontValidate){continue}var name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(isType!==true&&validateResult(name,path,split,parent)===false){result.id=-1}}return transformResults(results)}function extractGenerics(val){val=val.toLowerCase();if(val.indexOf("<")!==-1){var values=val.substring(val.indexOf("<")+1,val.lastIndexOf(">"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function getObjectNameFromId(id){if(typeof id==="number"){return searchIndex[id].name}return id}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=object[GENERICS_DATA].length;for(var x=0;x<elength;++x){elems[getObjectNameFromId(obj[GENERICS_DATA][x])]+=1}var total=0;var done=0;var vlength=val.generics.length;for(x=0;x<vlength;++x){var lev=MAX_LEV_DISTANCE+1;var firstGeneric=getObjectNameFromId(val.generics[x]);var match=null;if(elems[firstGeneric]){match=firstGeneric;lev=0}else{for(elem_name in elems){tmp_lev=levenshtein(elem_name,firstGeneric);if(tmp_lev<lev){lev=tmp_lev;match=elem_name}}}if(match!==null){elems[match]-=1;if(elems[match]==0){delete elems[match]}total+=lev;done+=1}else{return MAX_LEV_DISTANCE+1}}return Math.ceil(total/done)}}return MAX_LEV_DISTANCE+1}function checkType(obj,val,literalSearch){var lev_distance=MAX_LEV_DISTANCE+1;var len,x,firstGeneric;if(obj[NAME]===val.name){if(literalSearch===true){if(val.generics&&val.generics.length!==0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;x<len;++x){elems[getObjectNameFromId(obj[GENERICS_DATA][x])]+=1}var allFound=true;len=val.generics.length;for(x=0;x<len;++x){firstGeneric=getObjectNameFromId(val.generics[x]);if(elems[firstGeneric]){elems[firstGeneric]-=1}else{allFound=false;break}}if(allFound===true){return true}}else{return false}}return true}if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length!==0){var tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}else{return 0}}if(literalSearch===true){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){return obj[GENERICS_DATA].some(function(name){return name===val.name})}return false}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}else if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x<olength;++x){lev_distance=Math.min(levenshtein(obj[GENERICS_DATA][x],val.name),lev_distance)}}return lev_distance+1}function findArg(obj,val,literalSearch,typeFilter){var lev_distance=MAX_LEV_DISTANCE+1;if(obj&&obj.type&&obj.type[INPUTS_DATA]&&obj.type[INPUTS_DATA].length>0){var length=obj.type[INPUTS_DATA].length;for(var i=0;i<length;i++){var tmp=obj.type[INPUTS_DATA][i];if(typePassesFilter(typeFilter,tmp[1])===false){continue}tmp=checkType(tmp,val,literalSearch);if(literalSearch===true){if(tmp===true){return true}continue}lev_distance=Math.min(tmp,lev_distance);if(lev_distance===0){return 0}}}return literalSearch===true?false:lev_distance}function checkReturned(obj,val,literalSearch,typeFilter){var lev_distance=MAX_LEV_DISTANCE+1;if(obj&&obj.type&&obj.type.length>OUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;x<len;++x){var tmp=ret[x];if(typePassesFilter(typeFilter,tmp[1])===false){continue}tmp=checkType(tmp,val,literalSearch);if(literalSearch===true){if(tmp===true){return true}continue}lev_distance=Math.min(tmp,lev_distance);if(lev_distance===0){return 0}}}return literalSearch===true?false:lev_distance}function checkPath(contains,lastElem,ty){if(contains.length===0){return 0}var ret_lev=MAX_LEV_DISTANCE+1;var path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}var length=path.length;var clength=contains.length;if(clength>length){return MAX_LEV_DISTANCE+1}for(var i=0;i<length;++i){if(i+clength>length){break}var lev_total=0;var aborted=false;for(var x=0;x<clength;++x){var lev=levenshtein(path[i+x],contains[x]);if(lev>MAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(aborted===false){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER)return true;if(filter===type)return true;var 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,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==undefined){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;i<len;++i){aliases.push(createAliasFromItem(searchIndex[query_aliases[i]]))}}}else{Object.keys(ALIASES).forEach(function(crate){if(ALIASES[crate][query.search]){var pushTo=crate===window.currentCrate?crateAliases:aliases;var query_aliases=ALIASES[crate][query.search];var len=query_aliases.length;for(var i=0;i<len;++i){pushTo.push(createAliasFromItem(searchIndex[query_aliases[i]]))}}})}var sortFunc=function(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);var pushFunc=function(alias){alias.alias=query.raw;var 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()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i<nSearchWords;++i){if(filterCrates!==undefined&&searchIndex[i].crate!==filterCrates){continue}in_args=findArg(searchIndex[i],val,true,typeFilter);returned=checkReturned(searchIndex[i],val,true,typeFilter);ty=searchIndex[i];fullId=ty.id;if(searchWords[i]===val.name&&typePassesFilter(typeFilter,searchIndex[i].ty)&&results[fullId]===undefined){results[fullId]={id:i,index:-1,dontValidate:true,}}if(in_args===true&&results_in_args[fullId]===undefined){results_in_args[fullId]={id:i,index:-1,dontValidate:true,}}if(returned===true&&results_returned[fullId]===undefined){results_returned[fullId]={id:i,index:-1,dontValidate:true,}}}query.inputs=[val];query.output=val;query.search=val}else if(val.search("->")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i<len;++i){inputs[i]=extractGenerics(inputs[i])}var output=extractGenerics(parts[1]);for(i=0;i<nSearchWords;++i){if(filterCrates!==undefined&&searchIndex[i].crate!==filterCrates){continue}var type=searchIndex[i].type;ty=searchIndex[i];if(!type){continue}fullId=ty.id;returned=checkReturned(ty,output,true,NO_TYPE_FILTER);if(output.name==="*"||returned===true){in_args=false;var is_module=false;if(input==="*"){is_module=true}else{var allFound=true;for(it=0,len=inputs.length;allFound===true&&it<len;it++){allFound=checkType(type,inputs[it],true)}in_args=allFound}if(in_args===true){results_in_args[fullId]={id:i,index:-1,dontValidate:true,}}if(returned===true){results_returned[fullId]={id:i,index:-1,dontValidate:true,}}if(is_module===true){results[fullId]={id:i,index:-1,dontValidate:true,}}}}query.inputs=inputs.map(function(input){return input.name});query.output=output.name}else{query.inputs=[val];query.output=val;query.search=val;val=val.replace(/\_/g,"");var valGenerics=extractGenerics(val);var paths=valLower.split("::");var j;for(j=0,len=paths.length;j<len;++j){if(paths[j]===""){paths.splice(j,1);j-=1}}val=paths[paths.length-1];var contains=paths.slice(0,paths.length>1?paths.length-1:1);var lev;for(j=0;j<nSearchWords;++j){ty=searchIndex[j];if(!ty||(filterCrates!==undefined&&ty.crate!==filterCrates)){continue}var lev_add=0;if(paths.length>1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)===false){lev=MAX_LEV_DISTANCE+1}else{lev+=1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}if(in_args<=MAX_LEV_DISTANCE){if(results_in_args[fullId]===undefined){results_in_args[fullId]={id:j,index:index,lev:in_args,}}results_in_args[fullId].lev=Math.min(results_in_args[fullId].lev,in_args)}if(returned<=MAX_LEV_DISTANCE){if(results_returned[fullId]===undefined){results_returned[fullId]={id:j,index:index,lev:returned,}}results_returned[fullId].lev=Math.min(results_returned[fullId].lev,returned)}if(index!==-1||lev<=MAX_LEV_DISTANCE){if(index!==-1&&paths.length<2){lev=0}if(results[fullId]===undefined){results[fullId]={id:j,index:index,lev:lev,}}results[fullId].lev=Math.min(results[fullId].lev,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i<len;++i){if(!(name.indexOf(keys[i])>-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type,query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function initSearchNav(){var hoverTimeout;var click_func=function(e){var el=e.target;while(el.tagName!=="TR"){el=el.parentNode}var dst=e.target.getElementsByTagName("a");if(dst.length<1){return}dst=dst[0];if(window.location.pathname===dst.pathname){hideSearchResults();document.location.href=dst.href}};var mouseover_func=function(e){if(mouseMovedAfterSearch){var el=e.target;while(el.tagName!=="TR"){el=el.parentNode}clearTimeout(hoverTimeout);hoverTimeout=setTimeout(function(){onEachLazy(document.getElementsByClassName("search-results"),function(e){onEachLazy(e.getElementsByClassName("result"),function(i_e){removeClass(i_e,"highlighted")})});addClass(el,"highlighted")},20)}};onEachLazy(document.getElementsByClassName("search-results"),function(e){onEachLazy(e.getElementsByClassName("result"),function(i_e){i_e.onclick=click_func;i_e.onmouseover=mouseover_func})});search_input.onkeydown=function(e){var actives=[[],[],[]];var current=0;onEachLazy(document.getElementById("results").childNodes,function(e){onEachLazy(e.getElementsByClassName("highlighted"),function(h_e){actives[current].push(h_e)});current+=1});if(e.which===38){if(e.ctrlKey){printTab(currentTab>0?currentTab-1:2)}else{if(!actives[currentTab].length||!actives[currentTab][0].previousElementSibling){return}addClass(actives[currentTab][0].previousElementSibling,"highlighted");removeClass(actives[currentTab][0],"highlighted")}e.preventDefault()}else if(e.which===40){if(e.ctrlKey){printTab(currentTab>1?0:currentTab+1)}else if(!actives[currentTab].length){var results=document.getElementById("results").childNodes;if(results.length>0){var res=results[currentTab].getElementsByClassName("result");if(res.length>0){addClass(res[0],"highlighted")}}}else if(actives[currentTab][0].nextElementSibling){addClass(actives[currentTab][0].nextElementSibling,"highlighted");removeClass(actives[currentTab][0],"highlighted")}e.preventDefault()}else if(e.which===13){if(actives[currentTab].length){document.location.href=actives[currentTab][0].getElementsByTagName("a")[0].href}}else if(e.which===16){}else if(actives[currentTab].length>0){removeClass(actives[currentTab][0],"highlighted")}}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var 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+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp="<span>"+path.replace(/::/g,"::</span><span>");if(tmp.endsWith("<span>")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraStyle="";if(display===false){extraStyle=" style=\"display: none;\""}var output="";var duplicates={};var length=0;if(array.length>0){output="<table class=\"search-results\""+extraStyle+">";array.forEach(function(item){var name,type;name=item.name;type=itemTypes[item.ty];if(item.is_alias!==true){if(duplicates[item.fullPath]){return}duplicates[item.fullPath]=true}length+=1;output+="<tr class=\""+type+" result\"><td>"+"<a href=\""+item.href+"\">"+(item.is_alias===true?("<span class=\"alias\"><b>"+item.alias+" </b></span><span "+"class=\"grey\"><i>&nbsp;- see&nbsp;</i></span>"):"")+item.displayPath+"<span class=\""+type+"\">"+name+"</span></a></td><td>"+"<a href=\""+item.href+"\">"+"<span class=\"desc\">"+item.desc+"&nbsp;</span></a></td></tr>"});output+="</table>"}else{output="<div class=\"search-failed\""+extraStyle+">No results :(<br/>"+"Try on <a href=\"https://duckduckgo.com/?q="+encodeURIComponent("rust "+query.query)+"\">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></div>"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(currentTab===tabNb){return"<button class=\"selected\">"+text+" <div class=\"count\">("+nbElems+")</div></button>"}return"<button>"+text+" <div class=\"count\">("+nbElems+")</div></button>"}function showResults(results){var search=getSearchElement();if(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==getSearchLoadingText())){var elem=document.createElement("a");elem.href=results.others[0].href;elem.style.display="none";document.body.appendChild(elem);elem.click();return}var query=getQuery(search_input.value);currentResults=query.id;var ret_others=addTab(results.others,query);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);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}}var output="<h1>Results for "+escape(query.query)+(query.type?" (type: "+escape(query.type)+")":"")+"</h1>"+"<div id=\"titles\">"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"</div><div id=\"results\">"+ret_others[0]+ret_in_args[0]+ret_returned[0]+"</div>";search.innerHTML=output;showSearchResults(search);initSearchNav();var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){function getSmallest(arrays,positions,notDuplicates){var start=null;for(var it=0,len=positions.length;it<len;++it){if(arrays[it].length>positions[it]&&(start===null||start>arrays[it][positions[it]].lev)&&!notDuplicates[arrays[it][positions[it]].fullPath]){start=arrays[it][positions[it]].lev}}return start}function mergeArrays(arrays){var ret=[];var positions=[];var notDuplicates={};for(var x=0,arrays_len=arrays.length;x<arrays_len;++x){positions.push(0)}while(ret.length<MAX_RESULTS){var smallest=getSmallest(arrays,positions,notDuplicates);if(smallest===null){break}for(x=0;x<arrays_len&&ret.length<MAX_RESULTS;++x){if(arrays[x].length>positions[x]&&arrays[x][positions[x]].lev===smallest&&!notDuplicates[arrays[x][positions[x]].fullPath]){ret.push(arrays[x][positions[x]]);notDuplicates[arrays[x][positions[x]].fullPath]=true;positions[x]+=1}}}return ret}var queries=query.raw.split(",");var results={"in_args":[],"returned":[],"others":[],};for(var i=0,len=queries.length;i<len;++i){query=queries[i].trim();if(query.length!==0){var tmp=execQuery(getQuery(query),searchWords,filterCrates);results.in_args.push(tmp.in_args);results.returned.push(tmp.returned);results.others.push(tmp.others)}}if(queries.length>1){return{"in_args":mergeArrays(results.in_args),"returned":mergeArrays(results.returned),"others":mergeArrays(results.others),}}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function getFilterCrates(){var elem=document.getElementById("crate-search");if(elem&&elem.value!=="All crates"&&hasOwnProperty(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=getQueryStringParams();var query=getQuery(search_input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(forced!==true&&query.id===currentResults){if(query.query.length>0){putBackSearch(search_input)}return}searchTitle="Results for "+query.query+" - Rust";if(browserSupportsHistoryApi()){var newURL=getNakedUrl()+"?search="+encodeURIComponent(query.raw)+window.location.hash;if(!history.state&&!params.search){history.pushState(query,"",newURL)}else{history.replaceState(query,"",newURL)}}var filterCrates=getFilterCrates();showResults(execSearch(query,index,filterCrates))}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnProperty(rawSearchIndex,crate)){continue}var crateSize=0;searchWords.push(crate);var normalizedName=crate.indexOf("_")===-1?crate:crate.replace(/_/g,"");var crateRow={crate:crate,ty:1,name:crate,path:"",desc:rawSearchIndex[crate].doc,parent:undefined,type:null,id:id,normalizedName:normalizedName,};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=rawSearchIndex[crate].t;var itemNames=rawSearchIndex[crate].n;var itemPaths=rawSearchIndex[crate].q;var itemDescs=rawSearchIndex[crate].d;var itemParentIdxs=rawSearchIndex[crate].i;var itemFunctionSearchTypes=rawSearchIndex[crate].f;var paths=rawSearchIndex[crate].p;var aliases=rawSearchIndex[crate].a;var len=paths.length;for(i=0;i<len;++i){paths[i]={ty:paths[i][0],name:paths[i][1]}}len=itemTypes.length;var lastPath="";for(i=0;i<len;++i){if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase();searchWords.push(word)}else{word="";searchWords.push("")}var normalizedName=word.indexOf("_")===-1?word:word.replace(/_/g,"");var row={crate:crate,ty:itemTypes[i],name:itemNames[i],path:itemPaths[i]?itemPaths[i]:lastPath,desc:itemDescs[i],parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:normalizedName,};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!aliases.hasOwnProperty(alias_name)){continue}if(!ALIASES[crate].hasOwnProperty(alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j<len;++j){ALIASES[crate][alias_name].push(local_aliases[j]+currentIndex)}}}currentIndex+=crateSize}return searchWords}function registerSearchEvents(){var searchAfter500ms=function(){clearInputTimeout();if(search_input.value.length===0){if(browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}hideSearchResults()}else{searchTimeout=setTimeout(search,500)}};search_input.onkeyup=searchAfter500ms;search_input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=function(e){e.preventDefault();clearInputTimeout();search()};search_input.onchange=function(e){if(e.target!==document.activeElement){return}clearInputTimeout();setTimeout(search,0)};search_input.onpaste=search_input.onchange;var selectCrate=document.getElementById("crate-search");if(selectCrate){selectCrate.onchange=function(){updateLocalStorage("rustdoc-saved-filter-crate",selectCrate.value);search(undefined,true)}}if(browserSupportsHistoryApi()){var previousTitle=document.title;window.addEventListener("popstate",function(e){var params=getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&&params.search.length>0){search_input.value=params.search;search(e)}else{search_input.value="";hideSearchResults()}})}window.onpageshow=function(){var qSearch=getQueryStringParams().search;if(search_input.value===""&&qSearch){search_input.value=qSearch}search()}}index=buildIndex(rawSearchIndex);registerSearchEvents();if(getQueryStringParams().search){search()}};function addSidebarCrates(crates){if(window.rootPath==="../"||window.rootPath==="./"){var sidebar=document.getElementsByClassName("sidebar-elems")[0];if(sidebar){var div=document.createElement("div");div.className="block crate";div.innerHTML="<h3>Crates</h3>";var ul=document.createElement("ul");div.appendChild(ul);for(var i=0;i<crates.length;++i){var klass="crate";if(window.rootPath!=="./"&&crates[i]===window.currentCrate){klass+=" current"}var link=document.createElement("a");link.href=window.rootPath+crates[i]+"/index.html";link.className=klass;link.textContent=crates[i];var li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(div)}}}window.initSidebarItems=function(items){var sidebar=document.getElementsByClassName("sidebar-elems")[0];var current=window.sidebarCurrent;function block(shortty,longty){var filtered=items[shortty];if(!filtered){return}var div=document.createElement("div");div.className="block "+shortty;var h3=document.createElement("h3");h3.textContent=longty;div.appendChild(h3);var ul=document.createElement("ul");for(var i=0,len=filtered.length;i<len;++i){var item=filtered[i];var name=item[0];var desc=item[1];var klass=shortty;if(name===current.name&&shortty===current.ty){klass+=" current"}var path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}var link=document.createElement("a");link.href=current.relpath+path;link.title=desc;link.className=klass;link.textContent=name;var li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}div.appendChild(ul);if(sidebar){sidebar.appendChild(div)}}block("primitive","Primitive Types");block("mod","Modules");block("macro","Macros");block("struct","Structs");block("enum","Enums");block("union","Unions");block("constant","Constants");block("static","Statics");block("trait","Traits");block("fn","Functions");block("type","Type Definitions");block("foreigntype","Foreign Types");block("keyword","Keywords");block("traitalias","Trait Aliases")};window.register_implementors=function(imp){var implementors=document.getElementById("implementors-list");var synthetic_implementors=document.getElementById("synthetic-implementors-list");if(synthetic_implementors){var inlined_types=new Set();onEachLazy(synthetic_implementors.getElementsByClassName("impl"),function(el){var aliases=el.getAttribute("aliases");if(!aliases){return}aliases.split(",").forEach(function(alias){inlined_types.add(alias)})})}var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;i<llength;++i){if(libs[i]===window.currentCrate){continue}var structs=imp[libs[i]];struct_loop:for(var j=0,slength=structs.length;j<slength;++j){var struct=structs[j];var list=struct.synthetic?synthetic_implementors:implementors;if(struct.synthetic){for(var k=0,stlength=struct.types.length;k<stlength;k++){if(inlined_types.has(struct.types[k])){continue struct_loop}inlined_types.add(struct.types[k])}}var code=document.createElement("code");code.innerHTML=struct.text;onEachLazy(code.getElementsByTagName("a"),function(elem){var href=elem.getAttribute("href");if(href&&href.indexOf("http")!==0){elem.setAttribute("href",window.rootPath+href)}});var display=document.createElement("h3");addClass(display,"impl");display.innerHTML="<span class=\"in-band\"><table class=\"table-display\">"+"<tbody><tr><td><code>"+code.outerHTML+"</code></td><td></td></tr>"+"</tbody></table></span>";list.appendChild(display)}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function labelForToggleButton(sectionIsCollapsed){if(sectionIsCollapsed){return"+"}return"\u2212"}function onEveryMatchingChild(elem,className,func){if(elem&&className&&func){var length=elem.childNodes.length;var nodes=elem.childNodes;for(var i=0;i<length;++i){if(hasClass(nodes[i],className)){func(nodes[i])}else{onEveryMatchingChild(nodes[i],className,func)}}}}function toggleAllDocs(fromAutoCollapse){var innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){updateLocalStorage("rustdoc-collapse","false");removeClass(innerToggle,"will-expand");onEveryMatchingChild(innerToggle,"inner",function(e){e.innerHTML=labelForToggleButton(false)});innerToggle.title="collapse all docs";if(fromAutoCollapse!==true){onEachLazy(document.getElementsByClassName("collapse-toggle"),function(e){collapseDocs(e,"show")})}}else{updateLocalStorage("rustdoc-collapse","true");addClass(innerToggle,"will-expand");onEveryMatchingChild(innerToggle,"inner",function(e){var parent=e.parentNode;var superParent=null;if(parent){superParent=parent.parentNode}if(!parent||!superParent||superParent.id!=="main"||hasClass(parent,"impl")===false){e.innerHTML=labelForToggleButton(true)}});innerToggle.title="expand all docs";if(fromAutoCollapse!==true){onEachLazy(document.getElementsByClassName("collapse-toggle"),function(e){var parent=e.parentNode;var superParent=null;if(parent){superParent=parent.parentNode}if(!parent||!superParent||superParent.id!=="main"||hasClass(parent,"impl")===false){collapseDocs(e,"hide")}})}}}function collapseDocs(toggle,mode){if(!toggle||!toggle.parentNode){return}function adjustToggle(arg){return function(e){if(hasClass(e,"toggle-label")){if(arg){e.style.display="inline-block"}else{e.style.display="none"}}if(hasClass(e,"inner")){e.innerHTML=labelForToggleButton(arg)}}}function implHider(addOrRemove,fullHide){return function(n){var shouldHide=fullHide===true||hasClass(n,"method")===true||hasClass(n,"associatedconstant")===true;if(shouldHide===true||hasClass(n,"type")===true){if(shouldHide===true){if(addOrRemove){addClass(n,"hidden-by-impl-hider")}else{removeClass(n,"hidden-by-impl-hider")}}var ns=n.nextElementSibling;while(ns&&(hasClass(ns,"docblock")||hasClass(ns,"item-info"))){if(addOrRemove){addClass(ns,"hidden-by-impl-hider")}else{removeClass(ns,"hidden-by-impl-hider")}ns=ns.nextElementSibling}}}}var relatedDoc;var action=mode;if(hasClass(toggle.parentNode,"impl")===false){relatedDoc=toggle.parentNode.nextElementSibling;if(hasClass(relatedDoc,"item-info")){relatedDoc=relatedDoc.nextElementSibling}if(hasClass(relatedDoc,"docblock")||hasClass(relatedDoc,"sub-variant")){if(mode==="toggle"){if(hasClass(relatedDoc,"hidden-by-usual-hider")){action="show"}else{action="hide"}}if(action==="hide"){addClass(relatedDoc,"hidden-by-usual-hider");onEachLazy(toggle.childNodes,adjustToggle(true));addClass(toggle.parentNode,"collapsed")}else if(action==="show"){removeClass(relatedDoc,"hidden-by-usual-hider");removeClass(toggle.parentNode,"collapsed");onEachLazy(toggle.childNodes,adjustToggle(false))}}}else{var parentElem=toggle.parentNode;relatedDoc=parentElem;var docblock=relatedDoc.nextElementSibling;while(hasClass(relatedDoc,"impl-items")===false){relatedDoc=relatedDoc.nextElementSibling}if(!relatedDoc&&hasClass(docblock,"docblock")===false){return}if(mode==="toggle"){if(hasClass(relatedDoc,"fns-now-collapsed")||hasClass(docblock,"hidden-by-impl-hider")){action="show"}else{action="hide"}}var dontApplyBlockRule=toggle.parentNode.parentNode.id!=="main";if(action==="show"){removeClass(relatedDoc,"fns-now-collapsed");if(hasClass(docblock,"item-info")===false){removeClass(docblock,"hidden-by-usual-hider")}onEachLazy(toggle.childNodes,adjustToggle(false,dontApplyBlockRule));onEachLazy(relatedDoc.childNodes,implHider(false,dontApplyBlockRule))}else if(action==="hide"){addClass(relatedDoc,"fns-now-collapsed");if(hasClass(docblock,"item-info")===false){addClass(docblock,"hidden-by-usual-hider")}onEachLazy(toggle.childNodes,adjustToggle(true,dontApplyBlockRule));onEachLazy(relatedDoc.childNodes,implHider(true,dontApplyBlockRule))}}}function collapser(e,collapse){var n=e.parentElement;if(n.id.match(/^impl(?:-\d+)?$/)===null){if(collapse||hasClass(n,"impl")){collapseDocs(e,"hide")}}}function autoCollapse(collapse){if(collapse){toggleAllDocs(true)}else if(getSettingValue("auto-hide-trait-implementations")!=="false"){var impl_list=document.getElementById("trait-implementations-list");if(impl_list!==null){onEachLazy(impl_list.getElementsByClassName("collapse-toggle"),function(e){collapser(e,collapse)})}var blanket_list=document.getElementById("blanket-implementations-list");if(blanket_list!==null){onEachLazy(blanket_list.getElementsByClassName("collapse-toggle"),function(e){collapser(e,collapse)})}}}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function createSimpleToggle(sectionIsCollapsed){var toggle=document.createElement("a");toggle.href="javascript:void(0)";toggle.className="collapse-toggle";toggle.innerHTML="[<span class=\"inner\">"+labelForToggleButton(sectionIsCollapsed)+"</span>]";return toggle}function createToggle(toggle,otherMessage,fontSize,extraClass,show){var span=document.createElement("span");span.className="toggle-label";if(show){span.style.display="none"}if(!otherMessage){span.innerHTML="&nbsp;Expand&nbsp;description"}else{span.innerHTML=otherMessage}if(fontSize){span.style.fontSize=fontSize}var mainToggle=toggle.cloneNode(true);mainToggle.appendChild(span);var wrapper=document.createElement("div");wrapper.className="toggle-wrapper";if(!show){addClass(wrapper,"collapsed");var inner=mainToggle.getElementsByClassName("inner");if(inner&&inner.length>0){inner[0].innerHTML="+"}}if(extraClass){addClass(wrapper,extraClass)}wrapper.appendChild(mainToggle);return wrapper}(function(){var toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}var toggle=createSimpleToggle(false);var hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";var hideImplementors=getSettingValue("auto-collapse-implementors")!=="false";var func=function(e){var next=e.nextElementSibling;if(next&&hasClass(next,"item-info")){next=next.nextElementSibling}if(!next){return}if(hasClass(next,"docblock")){var newToggle=toggle.cloneNode(true);insertAfter(newToggle,e.childNodes[e.childNodes.length-1]);if(hideMethodDocs===true&&hasClass(e,"method")===true){collapseDocs(newToggle,"hide")}}};var funcImpl=function(e){var next=e.nextElementSibling;if(next&&hasClass(next,"item-info")){next=next.nextElementSibling}if(next&&hasClass(next,"docblock")){next=next.nextElementSibling}if(!next){return}if(hasClass(e,"impl")&&(next.getElementsByClassName("method").length>0||next.getElementsByClassName("associatedconstant").length>0)){var newToggle=toggle.cloneNode(true);insertAfter(newToggle,e.childNodes[e.childNodes.length-1]);if(hideImplementors===true&&e.parentNode.id==="implementors-list"){collapseDocs(newToggle,"hide")}}};onEachLazy(document.getElementsByClassName("method"),func);onEachLazy(document.getElementsByClassName("associatedconstant"),func);onEachLazy(document.getElementsByClassName("impl"),funcImpl);var impl_call=function(){};if(hideMethodDocs===true){impl_call=function(e,newToggle){if(e.id.match(/^impl(?:-\d+)?$/)===null){if(hasClass(e,"impl")===true){collapseDocs(newToggle,"hide")}}}}var newToggle=document.createElement("a");newToggle.href="javascript:void(0)";newToggle.className="collapse-toggle hidden-default collapsed";newToggle.innerHTML="[<span class=\"inner\">"+labelForToggleButton(true)+"</span>] Show hidden undocumented items";function toggleClicked(){if(hasClass(this,"collapsed")){removeClass(this,"collapsed");onEachLazy(this.parentNode.getElementsByClassName("hidden"),function(x){if(hasClass(x,"content")===false){removeClass(x,"hidden");addClass(x,"x")}},true);this.innerHTML="[<span class=\"inner\">"+labelForToggleButton(false)+"</span>] Hide undocumented items"}else{addClass(this,"collapsed");onEachLazy(this.parentNode.getElementsByClassName("x"),function(x){if(hasClass(x,"content")===false){addClass(x,"hidden");removeClass(x,"x")}},true);this.innerHTML="[<span class=\"inner\">"+labelForToggleButton(true)+"</span>] Show hidden undocumented items"}}onEachLazy(document.getElementsByClassName("impl-items"),function(e){onEachLazy(e.getElementsByClassName("associatedconstant"),func);var hiddenElems=Array.prototype.slice.call(e.getElementsByClassName("hidden"));var needToggle=hiddenElems.some(function(hiddenElem){return hasClass(hiddenElem,"content")===false&&hasClass(hiddenElem,"docblock")===false});if(needToggle===true){var inner_toggle=newToggle.cloneNode(true);inner_toggle.onclick=toggleClicked;e.insertBefore(inner_toggle,e.firstChild);impl_call(e.previousSibling,inner_toggle)}});var currentType=document.getElementsByClassName("type-decl")[0];var className=null;if(currentType){currentType=currentType.getElementsByClassName("rust")[0];if(currentType){currentType.classList.forEach(function(item){if(item!=="main"){className=item;return true}})}}var showItemDeclarations=getSettingValue("auto-hide-"+className);if(showItemDeclarations===null){if(className==="enum"||className==="macro"){showItemDeclarations="false"}else if(className==="struct"||className==="union"||className==="trait"){showItemDeclarations="true"}else{showItemDeclarations=getSettingValue("auto-hide-declarations")}}showItemDeclarations=showItemDeclarations==="false";function buildToggleWrapper(e){if(hasClass(e,"autohide")){var wrap=e.previousElementSibling;if(wrap&&hasClass(wrap,"toggle-wrapper")){var inner_toggle=wrap.childNodes[0];var extra=e.childNodes[0].tagName==="H3";e.style.display="none";addClass(wrap,"collapsed");onEachLazy(inner_toggle.getElementsByClassName("inner"),function(e){e.innerHTML=labelForToggleButton(true)});onEachLazy(inner_toggle.getElementsByClassName("toggle-label"),function(e){e.style.display="inline-block";if(extra===true){e.innerHTML=" Show "+e.childNodes[0].innerHTML}})}}if(e.parentNode.id==="main"){var otherMessage="";var fontSize;var extraClass;if(hasClass(e,"type-decl")){fontSize="20px";otherMessage="&nbsp;Show&nbsp;declaration";if(showItemDeclarations===false){extraClass="collapsed"}}else if(hasClass(e,"sub-variant")){otherMessage="&nbsp;Show&nbsp;fields"}else if(hasClass(e,"non-exhaustive")){otherMessage="&nbsp;This&nbsp;";if(hasClass(e,"non-exhaustive-struct")){otherMessage+="struct"}else if(hasClass(e,"non-exhaustive-enum")){otherMessage+="enum"}else if(hasClass(e,"non-exhaustive-variant")){otherMessage+="enum variant"}else if(hasClass(e,"non-exhaustive-type")){otherMessage+="type"}otherMessage+="&nbsp;is&nbsp;marked&nbsp;as&nbsp;non-exhaustive"}else if(hasClass(e.childNodes[0],"impl-items")){extraClass="marg-left"}e.parentNode.insertBefore(createToggle(toggle,otherMessage,fontSize,extraClass,hasClass(e,"type-decl")===false||showItemDeclarations===true),e);if(hasClass(e,"type-decl")===true&&showItemDeclarations===true){collapseDocs(e.previousSibling.childNodes[0],"toggle")}if(hasClass(e,"non-exhaustive")===true){collapseDocs(e.previousSibling.childNodes[0],"toggle")}}}onEachLazy(document.getElementsByClassName("docblock"),buildToggleWrapper);onEachLazy(document.getElementsByClassName("sub-variant"),buildToggleWrapper);autoCollapse(getSettingValue("collapse")==="true");var pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());function createToggleWrapper(tog){var span=document.createElement("span");span.className="toggle-label";span.style.display="none";span.innerHTML="&nbsp;Expand&nbsp;attributes";tog.appendChild(span);var wrapper=document.createElement("div");wrapper.className="toggle-wrapper toggle-attributes";wrapper.appendChild(tog);return wrapper}(function(){var itemAttributesFunc=function(){};if(getSettingValue("auto-hide-attributes")!=="false"){itemAttributesFunc=function(x){collapseDocs(x.previousSibling.childNodes[0],"toggle")}}var attributesToggle=createToggleWrapper(createSimpleToggle(false));onEachLazy(main.getElementsByClassName("attributes"),function(i_e){var attr_tog=attributesToggle.cloneNode(true);if(hasClass(i_e,"top-attr")===true){addClass(attr_tog,"top-attr")}i_e.parentNode.insertBefore(attr_tog,i_e);itemAttributesFunc(i_e)})}());(function(){var lineNumbersFunc=function(){};if(getSettingValue("line-numbers")==="true"){lineNumbersFunc=function(x){var count=x.textContent.split("\n").length;var elems=[];for(var i=0;i<count;++i){elems.push(i+1)}var node=document.createElement("pre");addClass(node,"line-number");node.innerHTML=elems.join("\n");x.parentNode.insertBefore(node,x)}}onEachLazy(document.getElementsByClassName("rust-example-rendered"),function(e){if(hasClass(e,"compile_fail")){e.addEventListener("mouseover",function(){this.parentElement.previousElementSibling.childNodes[0].style.color="#f00"});e.addEventListener("mouseout",function(){this.parentElement.previousElementSibling.childNodes[0].style.color=""})}else if(hasClass(e,"ignore")){e.addEventListener("mouseover",function(){this.parentElement.previousElementSibling.childNodes[0].style.color="#ff9200"});e.addEventListener("mouseout",function(){this.parentElement.previousElementSibling.childNodes[0].style.color=""})}lineNumbersFunc(e)})}());onEachLazy(document.getElementsByClassName("notable-traits"),function(e){e.onclick=function(){this.getElementsByClassName('notable-traits-tooltiptext')[0].classList.toggle("force-tooltip")}});function printTab(nb){if(nb===0||nb===1||nb===2){currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){elem.style.display=""}else{elem.style.display="none"}nb-=1})}function putBackSearch(search_input){var search=getSearchElement();if(search_input.value!==""&&hasClass(search,"hidden")){showSearchResults(search);if(browserSupportsHistoryApi()){var extra="?search="+encodeURIComponent(search_input.value);history.replaceState(search_input.value,"",getNakedUrl()+extra+window.location.hash)}document.title=searchTitle}}function getSearchLoadingText(){return"Loading search results..."}if(search_input){search_input.onfocus=function(){putBackSearch(this)}}var params=getQueryStringParams();if(params&&params.search){var search=getSearchElement();search.innerHTML="<h3 style=\"text-align: center;\">"+getSearchLoadingText()+"</h3>";showSearchResults(search)}var sidebar_menu=document.getElementsByClassName("sidebar-menu")[0];if(sidebar_menu){sidebar_menu.onclick=function(){var sidebar=document.getElementsByClassName("sidebar")[0];if(hasClass(sidebar,"mobile")===true){hideSidebar()}else{showSidebar()}}}if(main){onEachLazy(main.getElementsByClassName("loading-content"),function(e){e.remove()});onEachLazy(main.childNodes,function(e){if(e.tagName==="H2"||e.tagName==="H3"){var nextTagName=e.nextElementSibling.tagName;if(nextTagName=="H2"||nextTagName=="H3"){e.nextElementSibling.style.display="flex"}else{e.nextElementSibling.style.display="block"}}})}function addSearchOptions(crates){var elem=document.getElementById("crate-search");if(!elem){return}var savedCrate=getSettingValue("saved-filter-crate");for(var i=0,len=crates.length;i<len;++i){var option=document.createElement("option");option.value=crates[i];option.innerText=crates[i];elem.appendChild(option);if(crates[i]===savedCrate){elem.value=savedCrate}}};function buildHelperPopup(){var popup=document.createElement("aside");addClass(popup,"hidden");popup.id="help";var book_info=document.createElement("span");book_info.innerHTML="You can find more information in \
+            <a href=\"https://doc.rust-lang.org/rustdoc/\">the rustdoc book</a>.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["ctrl + ↑ / ↓","Switch result tab"],["&#9166;","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return"<dt>"+x[0].split(" ").map(function(y,index){return(index&1)===0?"<kbd>"+y+"</kbd>":" "+y+" "}).join("")+"</dt><dd>"+x[1]+"</dd>"}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="<h2>Keyboard Shortcuts</h2><dl>"+shortcuts+"</dl></div>";var infos=["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>)","Search multiple things at once by splitting your query with comma (e.g., \
+             <code>str,u8</code> or <code>String,struct:Vec,test</code>)","You can look for items with an exact name by putting double quotes around \
+             your request: <code>\"string\"</code>","Look for items inside another one by searching for a path: <code>vec::Vec</code>",].map(function(x){return"<p>"+x+"</p>"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="<h2>Search Tricks</h2>"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);popup.appendChild(container);insertAfter(popup,getSearchElement());buildHelperPopup=function(){}}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}function setupSearchLoader(){var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS)}}addSearchOptions(window.ALL_CRATES);addSidebarCrates(window.ALL_CRATES);search_input.addEventListener("focus",function(){search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=search_input.origPlaceholder});search_input.removeAttribute('disabled');var crateSearchDropDown=document.getElementById("crate-search");if(crateSearchDropDown){crateSearchDropDown.addEventListener("focus",loadSearch)}var params=getQueryStringParams();if(params.search!==undefined){loadSearch()}}onHashChange(null);window.onhashchange=onHashChange;setupSearchLoader()}())
\ No newline at end of file
diff --git a/normalize.css b/normalize.css
new file mode 100644
index 0000000..6d692b5
--- /dev/null
+++ b/normalize.css
@@ -0,0 +1,2 @@
+ /*! normalize.css v3.0.0 | MIT License | git.io/normalize */
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}
\ No newline at end of file
diff --git a/noscript.css b/noscript.css
new file mode 100644
index 0000000..b833ff8
--- /dev/null
+++ b/noscript.css
@@ -0,0 +1 @@
+ #main>h2+div,#main>h2+h3,#main>h3+div{display:block;}.loading-content{display:none;}#main>h2+div,#main>h3+div{display:block;}#main>h2+h3{display:flex;}#main .impl-items .hidden{display:block !important;}#main .impl-items h4.hidden{display:flex !important;}#main .attributes{margin-left:0 !important;}
\ No newline at end of file
diff --git a/rustdoc.css b/rustdoc.css
new file mode 100644
index 0000000..e5412cb
--- /dev/null
+++ b/rustdoc.css
@@ -0,0 +1 @@
+ @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif Pro';font-style:normal;font-weight:400;src:local('Source Serif Pro'),url("SourceSerifPro-Regular.ttf.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif Pro';font-style:italic;font-weight:400;src:local('Source Serif Pro Italic'),url("SourceSerifPro-It.ttf.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif Pro';font-style:normal;font-weight:700;src:local('Source Serif Pro Bold'),url("SourceSerifPro-Bold.ttf.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.woff") format('woff');font-display:swap;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:16px/1.4 "Source Serif Pro",serif;margin:0;position:relative;padding:10px 15px 20px 15px;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5em;}h2{font-size:1.4em;}h3{font-size:1.3em;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod):not(.notable),h4:not(.method):not(.type):not(.tymethod):not(.associatedconstant){font-weight:500;margin:20px 0 15px 0;padding-bottom:6px;}h1.fqn{border-bottom:1px dashed;margin-top:0;}h1.fqn>.in-band>a:hover{text-decoration:underline;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod):not(.associatedconstant){border-bottom:1px solid;}h3.impl,h3.method,h4.method,h3.type,h4.type,h4.associatedconstant{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}h3.impl,h3.method,h3.type{padding-left:15px;}h1,h2,h3,h4,.sidebar,a.source,.search-input,.content table td:first-child>a,.collapse-toggle,div.item-list .out-of-band,#source-sidebar,#sidebar-toggle,#main>ul.docblock>li>a{font-family:"Fira Sans",Arial,sans-serif;}.content ul.crate a.crate{font-size:16px/1.6;font-family:"Fira Sans",Arial,sans-serif;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}code,pre,a.test-arrow{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code,.docblock code.spotlight{padding:0;padding-right:1ex;}.docblock code.spotlight :last-child{padding-bottom:0.6em;}pre{padding:14px;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{margin-top:50px;max-width:none;overflow:visible;margin-left:0px;min-width:70em;}nav.sub{font-size:16px;text-transform:uppercase;}.sidebar{width:200px;position:fixed;left:0;top:0;bottom:0;overflow:auto;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.content,nav{max-width:960px;}.hidden{display:none !important;}.logo-container{height:100px;width:100px;position:relative;margin:20px auto;display:block;margin-top:10px;}.logo-container>img{max-width:100px;max-height:100px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;}.sidebar .location{border:1px solid;font-size:17px;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;}.sidebar .version{font-size:15px;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-child{font-weight:500;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{margin-top:0;margin-bottom:8px;text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:14px;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:17px;margin-bottom:5px;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.content{padding:15px 0;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc:not(.source) .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;border-top-left-radius:5px;border-bottom-left-radius:5px;padding:13px 8px;text-align:right;}.rustdoc:not(.source) .example-wrap>pre.rust{width:100%;overflow-x:auto;}.rustdoc:not(.source) .example-wrap>pre{margin:0;}#search{margin-left:230px;position:relative;}#results{position:absolute;right:0;left:0;overflow:auto;}#results>table{width:100%;table-layout:fixed;margin-bottom:40px;}.content pre.line-numbers{float:left;border:none;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock-short code{white-space:pre-wrap;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom:1px solid;}#main>.docblock h1{font-size:1.3em;}#main>.docblock h2{font-size:1.15em;}#main>.docblock h3,#main>.docblock h4,#main>.docblock h5{font-size:1em;}#main>h2+div,#main>h2+h3,#main>h3+div{display:none;flex-wrap:wrap;}.docblock h1{font-size:1em;}.docblock h2{font-size:0.95em;}.docblock h3,.docblock h4,.docblock h5{font-size:0.9em;}.docblock{margin-left:24px;position:relative;}.content .out-of-band{float:right;font-size:23px;margin:0px;padding:0px;font-weight:normal;}h3.impl>.out-of-band{font-size:21px;}h4.method>.out-of-band{font-size:19px;}h4>code,h3>code,.invisible>code{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{margin:0px;padding:0px;}.in-band>code{display:inline-block;}#main{position:relative;}#main>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1em;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);border:1px dashed;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content .method{font-size:1em;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8em;}.content .methods>div:not(.notable-traits){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items>h4{border-bottom:0;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.toggle-wrapper.marg-left>.collapse-toggle{left:-24px;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:90%;}.content .item-info{position:relative;margin-left:33px;margin-top:-13px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:25px;position:absolute;top:-6px;left:-19px;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant{margin-left:20px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main>.item-info{margin-top:0;}nav:not(.sidebar){border-bottom:1px solid;padding-bottom:10px;margin-bottom:10px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}nav.sub,.content{margin-left:230px;}a{text-decoration:none;background:transparent;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-7px;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-28px;padding-right:10px;}.anchor:before{content:'\2002\00a7\2002';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,h4>code+.srclink,h3>code+.srclink{position:absolute;top:0;right:0;font-size:17px;font-weight:normal;}.block a.current.crate{font-weight:500;}.search-container{position:relative;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}#crate-search{min-width:115px;margin-top:5px;padding:6px;padding-right:19px;flex:none;border:0;border-right:0;border-radius:4px 0 0 4px;outline:none;cursor:pointer;border-right:1px solid;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:17px;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}#crate-search+.search-input{border-radius:0 1px 1px 0;width:calc(100% - 32px);}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results .desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results a{display:block;}.content .search-results td:first-child{padding-right:0;width:50%;}.content .search-results td:first-child a{padding-right:10px;}.content .search-results td:first-child a:after{clear:both;content:"";display:block;}.content .search-results td:first-child a span{float:left;}tr.result span.primitive::after{content:' (primitive type)';font-style:italic;}tr.result span.keyword::after{content:' (keyword)';font-style:italic;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help>div>span{text-align:center;display:block;margin:10px 0;font-size:18px;border-bottom:1px solid #ccc;padding-bottom:4px;margin-bottom:6px;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.stab{display:table;border-width:1px;border-style:solid;padding:3px;margin-bottom:5px;font-size:90%;}.stab p{display:inline;}.stab summary{display:list-item;}.stab .emoji{font-size:1.5em;}.module-item .stab{border-radius:3px;display:inline-block;font-size:80%;line-height:1.2;margin-bottom:0;margin-right:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;position:absolute;right:0;top:0;}.impl-items .since,.impl .since,.methods .since{flex-grow:0;padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{flex-grow:0;font-size:17px;font-weight:normal;}.impl-items code,.impl code,.methods code{flex-grow:1;}.impl-items h4,h4.impl,h3.impl,.methods h3{display:flex;flex-basis:100%;font-size:16px;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:130%;top:5px;right:5px;z-index:1;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.section-header a{color:inherit;}.collapse-toggle{font-weight:300;position:absolute;left:-23px;top:0;}h3>.collapse-toggle,h4>.collapse-toggle{font-size:0.8em;top:5px;}.toggle-wrapper>.collapse-toggle{left:-24px;margin-top:0px;}.toggle-wrapper{position:relative;margin-top:0;}.toggle-wrapper.collapsed{height:25px;transition:height .2s;margin-bottom:.6em;}.collapse-toggle>.inner{display:inline-block;width:1.2ch;text-align:center;}.collapse-toggle.hidden-default{position:relative;margin-left:20px;}.since+.srclink{display:table-cell;padding-left:10px;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:20px;margin-right:5px;}.toggle-wrapper>.collapse-toggle{left:0;}.variant+.toggle-wrapper+.docblock>p{margin-top:5px;}.sub-variant,.sub-variant>h3{margin-top:1px !important;}#main>.sub-variant>h3{font-size:15px;margin-left:25px;margin-bottom:5px;}.sub-variant>div{margin-left:20px;margin-bottom:10px;}.sub-variant>div>span{display:block;position:relative;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.enum>.toggle-wrapper+.docblock,.struct>.toggle-wrapper+.docblock{margin-left:30px;margin-bottom:20px;margin-top:5px;}.docblock>.section-header:first-child{margin-left:15px;margin-top:0;}.docblock>.section-header:first-child:hover>a:before{left:-10px;}.enum>.collapsed,.struct>.collapsed{margin-bottom:25px;}#main>.variant,#main>.structfield{display:block;}.attributes{display:block;margin-top:0px !important;margin-right:0px;margin-bottom:0px !important;margin-left:30px;}.toggle-attributes.collapsed{margin-bottom:0;}.impl-items>.toggle-attributes{margin-left:20px;}.impl-items .attributes{font-weight:500;}:target>code{opacity:1;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:16px;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:20px;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:16px;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:20px;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:18px;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:16px;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}h4>.notable-traits{position:absolute;left:-44px;top:2px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:fixed;top:30px;left:300px;z-index:10;padding:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;transition:left .5s;font-size:1.2em;border:1px solid;border-left:0;}#source-sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;z-index:1;overflow:auto;transition:left .5s;border-right:1px solid;}#source-sidebar>.title{font-size:1.5em;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:211px;top:19px;}.theme-picker button{outline:none;}#settings-menu,.help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}.help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:17px;}#theme-picker,#settings-menu,.help-button{padding:4px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);}#theme-choices>button:not(:first-child){border-top:1px solid;}@media (min-width:701px){.information:first-child>.tooltip{margin-top:16px;}}@media (max-width:700px){body{padding-top:0px;}.rustdoc>.sidebar{height:45px;min-height:40px;margin:0;margin-left:-15px;padding:0 15px;position:static;z-index:11;}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:24px;}.sidebar .location:empty{padding:0;}.sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;left:0;top:45px;bottom:0;overflow-y:auto;border-right:1px solid;display:none;}.sidebar>.block.version{border-bottom:none;margin-top:12px;margin-bottom:0;}nav.sub{width:calc(100% - 32px);float:right;}.content{margin-left:0px;}#main,#search{margin-top:45px;padding:0;}.content .in-band{width:100%;}.content h4>.out-of-band{position:inherit;}.toggle-wrapper>.collapse-toggle{left:0px;}.toggle-wrapper{height:1.5em;}#search{margin-left:0;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant{display:flex;}.anchor{display:none !important;}h1.fqn{overflow:initial;}.theme-picker{left:10px;top:54px;z-index:1;}h4>.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.sidebar.mobile{position:fixed;width:100%;margin-left:0;background-color:rgba(0,0,0,0);height:100%;}.sidebar.mobile>div.version{overflow:hidden;max-height:33px;}.sidebar{width:calc(100% + 30px);}.show-it{display:block;width:246px;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:21px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}.collapse-toggle{left:-20px;}.impl>.collapse-toggle{left:-10px;}#all-types{margin:10px;}#sidebar-toggle{top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;}#source-sidebar{z-index:11;}#main>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}.help-button{display:none;}.search-container>div{width:calc(100% - 32px);}}@media print{nav.sub,.content .out-of-band,.collapse-toggle{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main,#search{margin-top:100px;}#main>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{width:100%;border-radius:4px;border:0;}#crate-search+.search-input{width:calc(100% + 71px);margin-left:-36px;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}}h3.notable{margin:0;margin-bottom:13px;font-size:19px;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:16px;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:19px;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:17px;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main>ul{padding-left:10px;}#main>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7em;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}.type-decl>pre>.toggle-wrapper.toggle-attributes.top-attr{margin-left:0 !important;}.type-decl>pre>.docblock.attributes.top-attr{margin-left:1.8em !important;}.type-decl>pre>.toggle-attributes{margin-left:2.2em;}.type-decl>pre>.docblock.attributes{margin-left:4em;}
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
new file mode 100644
index 0000000..e52ee02
--- /dev/null
+++ b/search-index.js
@@ -0,0 +1,4 @@
+var searchIndex = JSON.parse('{\
+"unicode_segmentation":{"doc":"Iterators which split strings on Grapheme Cluster, Word …","t":[3,3,3,4,13,13,13,13,17,3,3,3,3,3,3,3,8,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Graphemes","GraphemeIndices","GraphemeCursor","GraphemeIncomplete","PreContext","PrevChunk","NextChunk","InvalidOffset","UNICODE_VERSION","UWordBounds","UWordBoundIndices","UnicodeWords","UnicodeWordIndices","USentenceBounds","USentenceBoundIndices","UnicodeSentences","UnicodeSegmentation","graphemes","grapheme_indices","unicode_words","unicode_word_indices","split_word_bounds","split_word_bound_indices","unicode_sentences","split_sentence_bounds","split_sentence_bound_indices","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","from","into","try_into","type_id","borrow","borrow_mut","try_from","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","borrow","borrow_mut","try_from","into_iter","from","into","try_into","type_id","fmt","fmt","fmt","eq","ne","next_back","next_back","next_back","next_back","next_back","next_back","next","size_hint","size_hint","next","next","next","next","size_hint","size_hint","next","next","size_hint","next","next","size_hint","clone","clone","clone","clone","clone","clone","clone","clone","as_str","as_str","new","set_cursor","cur_cursor","provide_context","is_boundary","next_boundary","prev_boundary","as_str","as_str"],"q":["unicode_segmentation","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["External iterator for a string’s grapheme clusters.","External iterator for grapheme clusters and byte offsets.","Cursor-based segmenter for grapheme clusters.","An error return indicating that not enough content was …","More pre-context is needed. The caller should call …","When requesting <code>prev_boundary</code>, the cursor is moving past …","When requesting <code>next_boundary</code>, the cursor is moving past …","An error returned when the chunk given does not contain …","The version of Unicode that this version of …","External iterator for a string’s word boundaries.","External iterator for word boundaries and byte offsets.","An iterator over the substrings of a string which, after …","An iterator over the substrings of a string which, after …","External iterator for a string’s sentence boundaries.","External iterator for sentence boundaries and byte …","An iterator over the substrings of a string which, after …","Methods for segmenting strings according to Unicode …","Returns an iterator over the grapheme clusters of <code>self</code>.","Returns an iterator over the grapheme clusters of <code>self</code> …","Returns an iterator over the words of <code>self</code>, separated on …","Returns an iterator over the words of <code>self</code>, separated on …","Returns an iterator over substrings of <code>self</code> separated on …","Returns an iterator over substrings of <code>self</code>, split on …","Returns an iterator over substrings of <code>self</code> separated on …","Returns an iterator over substrings of <code>self</code> separated on …","Returns an iterator over substrings of <code>self</code>, split on …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","View the underlying data (the part yet to be iterated) as …","View the underlying data (the part yet to be iterated) as …","Create a new cursor. The string and initial offset are …","Set the cursor to a new location in the same string.","The current offset of the cursor. Equal to the last value …","Provide additional pre-context when it is needed to …","Determine whether the current cursor location is a …","Find the next boundary after the current cursor position. …","Find the previous boundary after the current cursor …","View the underlying data (the part yet to be iterated) as …","View the underlying data (the part yet to be iterated) as …"],"i":[0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,4,5,1,1,1,3,4,6,7,9,8,3,3,4,4,6,7,9,9,8,8,10,11,11,12,12,3,4,5,8,9,10,11,12,3,4,5,5,5,5,5,5,5,9,8],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["bool",15]],["graphemes",3]],[[["bool",15]],["graphemeindices",3]],[[],["unicodewords",3]],[[],["unicodewordindices",3]],[[],["uwordbounds",3]],[[],["uwordboundindices",3]],[[],["unicodesentences",3]],[[],["usentencebounds",3]],[[],["usentenceboundindices",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["typeid",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["graphemeincomplete",4]],["bool",15]],[[["graphemeincomplete",4]],["bool",15]],[[],["option",4]],[[],[["str",15],["option",4]]],[[],[["str",15],["option",4]]],[[],["option",4]],[[],["option",4]],[[],[["str",15],["option",4]]],[[],["option",4]],[[]],[[]],[[],[["str",15],["option",4]]],[[],[["str",15],["option",4]]],[[],["option",4]],[[],["option",4]],[[]],[[]],[[],[["str",15],["option",4]]],[[],[["str",15],["option",4]]],[[]],[[],[["str",15],["option",4]]],[[],["option",4]],[[]],[[],["graphemeindices",3]],[[],["graphemes",3]],[[],["graphemecursor",3]],[[],["uwordbounds",3]],[[],["uwordboundindices",3]],[[],["unicodesentences",3]],[[],["usentencebounds",3]],[[],["usentenceboundindices",3]],[[],["str",15]],[[],["str",15]],[[["usize",15],["bool",15]],["graphemecursor",3]],[[["usize",15]]],[[],["usize",15]],[[["usize",15],["str",15]]],[[["usize",15],["str",15]],[["result",4],["bool",15],["graphemeincomplete",4]]],[[["usize",15],["str",15]],[["graphemeincomplete",4],["result",4],["option",4]]],[[["usize",15],["str",15]],[["graphemeincomplete",4],["result",4],["option",4]]],[[],["str",15]],[[],["str",15]]],"p":[[4,"GraphemeIncomplete"],[8,"UnicodeSegmentation"],[3,"GraphemeIndices"],[3,"Graphemes"],[3,"GraphemeCursor"],[3,"UnicodeWords"],[3,"UnicodeWordIndices"],[3,"UWordBounds"],[3,"UWordBoundIndices"],[3,"UnicodeSentences"],[3,"USentenceBounds"],[3,"USentenceBoundIndices"]]}\
+}');
+initSearch(searchIndex);
\ No newline at end of file
diff --git a/settings.css b/settings.css
new file mode 100644
index 0000000..6709865
--- /dev/null
+++ b/settings.css
@@ -0,0 +1 @@
+.setting-line{padding:5px;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;}
\ No newline at end of file
diff --git a/settings.html b/settings.html
new file mode 100644
index 0000000..f0600ff
--- /dev/null
+++ b/settings.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="Settings of Rustdoc"><meta name="keywords" content="rust, rustlang, rust-lang"><title>Rustdoc settings</title><link rel="stylesheet" type="text/css" href="./normalize.css"><link rel="stylesheet" type="text/css" href="./rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="./light.css"  id="themeStyle"><link rel="stylesheet" type="text/css" href="./dark.css" disabled ><link rel="stylesheet" type="text/css" href="./ayu.css" disabled ><link rel="stylesheet" type="text/css" href="./settings.css"  ><script id="default-settings"></script><script src="./storage.js"></script><script src="./crates.js"></script><noscript><link rel="stylesheet" href="./noscript.css"></noscript><link rel="shortcut icon" href="https://unicode-rs.github.io/unicode-rs_sm.png"><style type="text/css">#crate-search{background-image:url("./down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='./unicode_segmentation/index.html'><div class='logo-container'><img src='https://unicode-rs.github.io/unicode-rs_sm.png' alt='logo'></div></a><p class="location">Settings</p><div class="sidebar-elems"></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="./brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="./theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
+                <a id="settings-menu" href="./settings.html"><img src="./wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Rustdoc settings</span></h1><div class="settings"><div class="setting-line"><div class="title">Theme preferences</div><div class="sub-settings"><div class="setting-line"><label class="toggle"><input type="checkbox" id="use-system-theme"  checked><span class="slider"></span></label><div>Use system theme</div></div><div class="setting-line"><div>Preferred dark theme</div><label class="select-wrapper"><select id="preferred-dark-theme" autocomplete="off"><option value="light" >light</option><option value="dark" selected>dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div><div class="setting-line"><div>Preferred light theme</div><label class="select-wrapper"><select id="preferred-light-theme" autocomplete="off"><option value="light" selected>light</option><option value="dark" >dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div></div>
+                 </div><div class="setting-line"><div class="title">Auto-hide item declarations</div><div class="sub-settings"><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-struct"  checked><span class="slider"></span></label><div>Auto-hide structs declaration</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-enum" ><span class="slider"></span></label><div>Auto-hide enums declaration</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-union"  checked><span class="slider"></span></label><div>Auto-hide unions declaration</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-trait"  checked><span class="slider"></span></label><div>Auto-hide traits declaration</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-macro" ><span class="slider"></span></label><div>Auto-hide macros declaration</div></div></div>
+                 </div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-attributes"  checked><span class="slider"></span></label><div>Auto-hide item attributes.</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-method-docs" ><span class="slider"></span></label><div>Auto-hide item methods' documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-trait-implementations"  checked><span class="slider"></span></label><div>Auto-hide trait implementation documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-collapse-implementors"  checked><span class="slider"></span></label><div>Auto-hide implementors of a trait</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="go-to-only-result" ><span class="slider"></span></label><div>Directly go to item in search if there is only one result</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="line-numbers" ><span class="slider"></span></label><div>Show line numbers on code examples</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="disable-shortcuts" ><span class="slider"></span></label><div>Disable keyboard shortcuts</div></div></div><script src="./settings.js"></script></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="./" data-current-crate="unicode_segmentation" data-search-js="./search-index.js"></div>
+    <script src="./main.js"></script></body></html>
\ No newline at end of file
diff --git a/settings.js b/settings.js
new file mode 100644
index 0000000..b4d6fdc
--- /dev/null
+++ b/settings.js
@@ -0,0 +1 @@
+(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function setEvents(){onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}})}window.addEventListener("DOMContentLoaded",setEvents)})()
\ No newline at end of file
diff --git a/source-files.js b/source-files.js
new file mode 100644
index 0000000..e7754c6
--- /dev/null
+++ b/source-files.js
@@ -0,0 +1,3 @@
+var N = null;var sourcesIndex = {};
+sourcesIndex["unicode_segmentation"] = {"name":"","files":["grapheme.rs","lib.rs","sentence.rs","tables.rs","word.rs"]};
+createSourceSidebar();
diff --git a/source-script.js b/source-script.js
new file mode 100644
index 0000000..67f62a1
--- /dev/null
+++ b/source-script.js
@@ -0,0 +1 @@
+function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i<len;++i){if(rootPathParts[i]===".."){parts.pop()}}var file=window.location.pathname.substring(parts.join("/").length);if(file.startsWith("/")){file=file.substring(1)}return file.substring(0,file.length-5)}function createDirEntry(elem,parent,fullPath,currentFile,hasFoundFile){var name=document.createElement("div");name.className="name";fullPath+=elem["name"]+"/";name.onclick=function(){if(hasClass(this,"expand")){removeClass(this,"expand")}else{addClass(this,"expand")}};name.innerText=elem["name"];var i,len;var children=document.createElement("div");children.className="children";var folders=document.createElement("div");folders.className="folders";if(elem.dirs){for(i=0,len=elem.dirs.length;i<len;++i){if(createDirEntry(elem.dirs[i],folders,fullPath,currentFile,hasFoundFile)===true){addClass(name,"expand");hasFoundFile=true}}}children.appendChild(folders);var files=document.createElement("div");files.className="files";if(elem.files){for(i=0,len=elem.files.length;i<len;++i){var file=document.createElement("a");file.innerText=elem.files[i];file.href=window.rootPath+"src/"+fullPath+elem.files[i]+".html";if(hasFoundFile===false&&currentFile===fullPath+elem.files[i]){file.className="selected";addClass(name,"expand");hasFoundFile=true}files.appendChild(file)}}search.fullPath=fullPath;children.appendChild(files);parent.appendChild(name);parent.appendChild(children);return hasFoundFile===true&&currentFile.startsWith(fullPath)}function toggleSidebar(){var sidebar=document.getElementById("source-sidebar");var child=this.children[0].children[0];if(child.innerText===">"){sidebar.style.left="";this.style.left="";child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.style.left="-300px";this.style.left="0";child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner1=document.createElement("div");inner1.style.position="relative";var inner2=document.createElement("div");inner2.style.paddingTop="3px";if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner2.innerText="<"}else{inner2.innerText=">";sidebarToggle.style.left="0"}inner1.appendChild(inner2);sidebarToggle.appendChild(inner1);return sidebarToggle}function createSourceSidebar(){if(window.rootPath.endsWith("/")===false){window.rootPath+="/"}var main=document.getElementById("main");var sidebarToggle=createSidebarToggle();main.insertBefore(sidebarToggle,main.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){sidebar.style.left="-300px"}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});main.insertBefore(sidebar,main.firstChild);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}
\ No newline at end of file
diff --git a/src/unicode_segmentation/grapheme.rs.html b/src/unicode_segmentation/grapheme.rs.html
new file mode 100644
index 0000000..5ffe93a
--- /dev/null
+++ b/src/unicode_segmentation/grapheme.rs.html
@@ -0,0 +1,1519 @@
+<!DOCTYPE html><html lang="en"><head><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 `src/grapheme.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>grapheme.rs - source</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../light.css"  id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><script src="../../crates.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="https://unicode-rs.github.io/unicode-rs_sm.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../unicode_segmentation/index.html'><div class='logo-container'><img src='https://unicode-rs.github.io/unicode-rs_sm.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
+                <a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1">  1</span>
+<span id="2">  2</span>
+<span id="3">  3</span>
+<span id="4">  4</span>
+<span id="5">  5</span>
+<span id="6">  6</span>
+<span id="7">  7</span>
+<span id="8">  8</span>
+<span id="9">  9</span>
+<span id="10"> 10</span>
+<span id="11"> 11</span>
+<span id="12"> 12</span>
+<span id="13"> 13</span>
+<span id="14"> 14</span>
+<span id="15"> 15</span>
+<span id="16"> 16</span>
+<span id="17"> 17</span>
+<span id="18"> 18</span>
+<span id="19"> 19</span>
+<span id="20"> 20</span>
+<span id="21"> 21</span>
+<span id="22"> 22</span>
+<span id="23"> 23</span>
+<span id="24"> 24</span>
+<span id="25"> 25</span>
+<span id="26"> 26</span>
+<span id="27"> 27</span>
+<span id="28"> 28</span>
+<span id="29"> 29</span>
+<span id="30"> 30</span>
+<span id="31"> 31</span>
+<span id="32"> 32</span>
+<span id="33"> 33</span>
+<span id="34"> 34</span>
+<span id="35"> 35</span>
+<span id="36"> 36</span>
+<span id="37"> 37</span>
+<span id="38"> 38</span>
+<span id="39"> 39</span>
+<span id="40"> 40</span>
+<span id="41"> 41</span>
+<span id="42"> 42</span>
+<span id="43"> 43</span>
+<span id="44"> 44</span>
+<span id="45"> 45</span>
+<span id="46"> 46</span>
+<span id="47"> 47</span>
+<span id="48"> 48</span>
+<span id="49"> 49</span>
+<span id="50"> 50</span>
+<span id="51"> 51</span>
+<span id="52"> 52</span>
+<span id="53"> 53</span>
+<span id="54"> 54</span>
+<span id="55"> 55</span>
+<span id="56"> 56</span>
+<span id="57"> 57</span>
+<span id="58"> 58</span>
+<span id="59"> 59</span>
+<span id="60"> 60</span>
+<span id="61"> 61</span>
+<span id="62"> 62</span>
+<span id="63"> 63</span>
+<span id="64"> 64</span>
+<span id="65"> 65</span>
+<span id="66"> 66</span>
+<span id="67"> 67</span>
+<span id="68"> 68</span>
+<span id="69"> 69</span>
+<span id="70"> 70</span>
+<span id="71"> 71</span>
+<span id="72"> 72</span>
+<span id="73"> 73</span>
+<span id="74"> 74</span>
+<span id="75"> 75</span>
+<span id="76"> 76</span>
+<span id="77"> 77</span>
+<span id="78"> 78</span>
+<span id="79"> 79</span>
+<span id="80"> 80</span>
+<span id="81"> 81</span>
+<span id="82"> 82</span>
+<span id="83"> 83</span>
+<span id="84"> 84</span>
+<span id="85"> 85</span>
+<span id="86"> 86</span>
+<span id="87"> 87</span>
+<span id="88"> 88</span>
+<span id="89"> 89</span>
+<span id="90"> 90</span>
+<span id="91"> 91</span>
+<span id="92"> 92</span>
+<span id="93"> 93</span>
+<span id="94"> 94</span>
+<span id="95"> 95</span>
+<span id="96"> 96</span>
+<span id="97"> 97</span>
+<span id="98"> 98</span>
+<span id="99"> 99</span>
+<span id="100">100</span>
+<span id="101">101</span>
+<span id="102">102</span>
+<span id="103">103</span>
+<span id="104">104</span>
+<span id="105">105</span>
+<span id="106">106</span>
+<span id="107">107</span>
+<span id="108">108</span>
+<span id="109">109</span>
+<span id="110">110</span>
+<span id="111">111</span>
+<span id="112">112</span>
+<span id="113">113</span>
+<span id="114">114</span>
+<span id="115">115</span>
+<span id="116">116</span>
+<span id="117">117</span>
+<span id="118">118</span>
+<span id="119">119</span>
+<span id="120">120</span>
+<span id="121">121</span>
+<span id="122">122</span>
+<span id="123">123</span>
+<span id="124">124</span>
+<span id="125">125</span>
+<span id="126">126</span>
+<span id="127">127</span>
+<span id="128">128</span>
+<span id="129">129</span>
+<span id="130">130</span>
+<span id="131">131</span>
+<span id="132">132</span>
+<span id="133">133</span>
+<span id="134">134</span>
+<span id="135">135</span>
+<span id="136">136</span>
+<span id="137">137</span>
+<span id="138">138</span>
+<span id="139">139</span>
+<span id="140">140</span>
+<span id="141">141</span>
+<span id="142">142</span>
+<span id="143">143</span>
+<span id="144">144</span>
+<span id="145">145</span>
+<span id="146">146</span>
+<span id="147">147</span>
+<span id="148">148</span>
+<span id="149">149</span>
+<span id="150">150</span>
+<span id="151">151</span>
+<span id="152">152</span>
+<span id="153">153</span>
+<span id="154">154</span>
+<span id="155">155</span>
+<span id="156">156</span>
+<span id="157">157</span>
+<span id="158">158</span>
+<span id="159">159</span>
+<span id="160">160</span>
+<span id="161">161</span>
+<span id="162">162</span>
+<span id="163">163</span>
+<span id="164">164</span>
+<span id="165">165</span>
+<span id="166">166</span>
+<span id="167">167</span>
+<span id="168">168</span>
+<span id="169">169</span>
+<span id="170">170</span>
+<span id="171">171</span>
+<span id="172">172</span>
+<span id="173">173</span>
+<span id="174">174</span>
+<span id="175">175</span>
+<span id="176">176</span>
+<span id="177">177</span>
+<span id="178">178</span>
+<span id="179">179</span>
+<span id="180">180</span>
+<span id="181">181</span>
+<span id="182">182</span>
+<span id="183">183</span>
+<span id="184">184</span>
+<span id="185">185</span>
+<span id="186">186</span>
+<span id="187">187</span>
+<span id="188">188</span>
+<span id="189">189</span>
+<span id="190">190</span>
+<span id="191">191</span>
+<span id="192">192</span>
+<span id="193">193</span>
+<span id="194">194</span>
+<span id="195">195</span>
+<span id="196">196</span>
+<span id="197">197</span>
+<span id="198">198</span>
+<span id="199">199</span>
+<span id="200">200</span>
+<span id="201">201</span>
+<span id="202">202</span>
+<span id="203">203</span>
+<span id="204">204</span>
+<span id="205">205</span>
+<span id="206">206</span>
+<span id="207">207</span>
+<span id="208">208</span>
+<span id="209">209</span>
+<span id="210">210</span>
+<span id="211">211</span>
+<span id="212">212</span>
+<span id="213">213</span>
+<span id="214">214</span>
+<span id="215">215</span>
+<span id="216">216</span>
+<span id="217">217</span>
+<span id="218">218</span>
+<span id="219">219</span>
+<span id="220">220</span>
+<span id="221">221</span>
+<span id="222">222</span>
+<span id="223">223</span>
+<span id="224">224</span>
+<span id="225">225</span>
+<span id="226">226</span>
+<span id="227">227</span>
+<span id="228">228</span>
+<span id="229">229</span>
+<span id="230">230</span>
+<span id="231">231</span>
+<span id="232">232</span>
+<span id="233">233</span>
+<span id="234">234</span>
+<span id="235">235</span>
+<span id="236">236</span>
+<span id="237">237</span>
+<span id="238">238</span>
+<span id="239">239</span>
+<span id="240">240</span>
+<span id="241">241</span>
+<span id="242">242</span>
+<span id="243">243</span>
+<span id="244">244</span>
+<span id="245">245</span>
+<span id="246">246</span>
+<span id="247">247</span>
+<span id="248">248</span>
+<span id="249">249</span>
+<span id="250">250</span>
+<span id="251">251</span>
+<span id="252">252</span>
+<span id="253">253</span>
+<span id="254">254</span>
+<span id="255">255</span>
+<span id="256">256</span>
+<span id="257">257</span>
+<span id="258">258</span>
+<span id="259">259</span>
+<span id="260">260</span>
+<span id="261">261</span>
+<span id="262">262</span>
+<span id="263">263</span>
+<span id="264">264</span>
+<span id="265">265</span>
+<span id="266">266</span>
+<span id="267">267</span>
+<span id="268">268</span>
+<span id="269">269</span>
+<span id="270">270</span>
+<span id="271">271</span>
+<span id="272">272</span>
+<span id="273">273</span>
+<span id="274">274</span>
+<span id="275">275</span>
+<span id="276">276</span>
+<span id="277">277</span>
+<span id="278">278</span>
+<span id="279">279</span>
+<span id="280">280</span>
+<span id="281">281</span>
+<span id="282">282</span>
+<span id="283">283</span>
+<span id="284">284</span>
+<span id="285">285</span>
+<span id="286">286</span>
+<span id="287">287</span>
+<span id="288">288</span>
+<span id="289">289</span>
+<span id="290">290</span>
+<span id="291">291</span>
+<span id="292">292</span>
+<span id="293">293</span>
+<span id="294">294</span>
+<span id="295">295</span>
+<span id="296">296</span>
+<span id="297">297</span>
+<span id="298">298</span>
+<span id="299">299</span>
+<span id="300">300</span>
+<span id="301">301</span>
+<span id="302">302</span>
+<span id="303">303</span>
+<span id="304">304</span>
+<span id="305">305</span>
+<span id="306">306</span>
+<span id="307">307</span>
+<span id="308">308</span>
+<span id="309">309</span>
+<span id="310">310</span>
+<span id="311">311</span>
+<span id="312">312</span>
+<span id="313">313</span>
+<span id="314">314</span>
+<span id="315">315</span>
+<span id="316">316</span>
+<span id="317">317</span>
+<span id="318">318</span>
+<span id="319">319</span>
+<span id="320">320</span>
+<span id="321">321</span>
+<span id="322">322</span>
+<span id="323">323</span>
+<span id="324">324</span>
+<span id="325">325</span>
+<span id="326">326</span>
+<span id="327">327</span>
+<span id="328">328</span>
+<span id="329">329</span>
+<span id="330">330</span>
+<span id="331">331</span>
+<span id="332">332</span>
+<span id="333">333</span>
+<span id="334">334</span>
+<span id="335">335</span>
+<span id="336">336</span>
+<span id="337">337</span>
+<span id="338">338</span>
+<span id="339">339</span>
+<span id="340">340</span>
+<span id="341">341</span>
+<span id="342">342</span>
+<span id="343">343</span>
+<span id="344">344</span>
+<span id="345">345</span>
+<span id="346">346</span>
+<span id="347">347</span>
+<span id="348">348</span>
+<span id="349">349</span>
+<span id="350">350</span>
+<span id="351">351</span>
+<span id="352">352</span>
+<span id="353">353</span>
+<span id="354">354</span>
+<span id="355">355</span>
+<span id="356">356</span>
+<span id="357">357</span>
+<span id="358">358</span>
+<span id="359">359</span>
+<span id="360">360</span>
+<span id="361">361</span>
+<span id="362">362</span>
+<span id="363">363</span>
+<span id="364">364</span>
+<span id="365">365</span>
+<span id="366">366</span>
+<span id="367">367</span>
+<span id="368">368</span>
+<span id="369">369</span>
+<span id="370">370</span>
+<span id="371">371</span>
+<span id="372">372</span>
+<span id="373">373</span>
+<span id="374">374</span>
+<span id="375">375</span>
+<span id="376">376</span>
+<span id="377">377</span>
+<span id="378">378</span>
+<span id="379">379</span>
+<span id="380">380</span>
+<span id="381">381</span>
+<span id="382">382</span>
+<span id="383">383</span>
+<span id="384">384</span>
+<span id="385">385</span>
+<span id="386">386</span>
+<span id="387">387</span>
+<span id="388">388</span>
+<span id="389">389</span>
+<span id="390">390</span>
+<span id="391">391</span>
+<span id="392">392</span>
+<span id="393">393</span>
+<span id="394">394</span>
+<span id="395">395</span>
+<span id="396">396</span>
+<span id="397">397</span>
+<span id="398">398</span>
+<span id="399">399</span>
+<span id="400">400</span>
+<span id="401">401</span>
+<span id="402">402</span>
+<span id="403">403</span>
+<span id="404">404</span>
+<span id="405">405</span>
+<span id="406">406</span>
+<span id="407">407</span>
+<span id="408">408</span>
+<span id="409">409</span>
+<span id="410">410</span>
+<span id="411">411</span>
+<span id="412">412</span>
+<span id="413">413</span>
+<span id="414">414</span>
+<span id="415">415</span>
+<span id="416">416</span>
+<span id="417">417</span>
+<span id="418">418</span>
+<span id="419">419</span>
+<span id="420">420</span>
+<span id="421">421</span>
+<span id="422">422</span>
+<span id="423">423</span>
+<span id="424">424</span>
+<span id="425">425</span>
+<span id="426">426</span>
+<span id="427">427</span>
+<span id="428">428</span>
+<span id="429">429</span>
+<span id="430">430</span>
+<span id="431">431</span>
+<span id="432">432</span>
+<span id="433">433</span>
+<span id="434">434</span>
+<span id="435">435</span>
+<span id="436">436</span>
+<span id="437">437</span>
+<span id="438">438</span>
+<span id="439">439</span>
+<span id="440">440</span>
+<span id="441">441</span>
+<span id="442">442</span>
+<span id="443">443</span>
+<span id="444">444</span>
+<span id="445">445</span>
+<span id="446">446</span>
+<span id="447">447</span>
+<span id="448">448</span>
+<span id="449">449</span>
+<span id="450">450</span>
+<span id="451">451</span>
+<span id="452">452</span>
+<span id="453">453</span>
+<span id="454">454</span>
+<span id="455">455</span>
+<span id="456">456</span>
+<span id="457">457</span>
+<span id="458">458</span>
+<span id="459">459</span>
+<span id="460">460</span>
+<span id="461">461</span>
+<span id="462">462</span>
+<span id="463">463</span>
+<span id="464">464</span>
+<span id="465">465</span>
+<span id="466">466</span>
+<span id="467">467</span>
+<span id="468">468</span>
+<span id="469">469</span>
+<span id="470">470</span>
+<span id="471">471</span>
+<span id="472">472</span>
+<span id="473">473</span>
+<span id="474">474</span>
+<span id="475">475</span>
+<span id="476">476</span>
+<span id="477">477</span>
+<span id="478">478</span>
+<span id="479">479</span>
+<span id="480">480</span>
+<span id="481">481</span>
+<span id="482">482</span>
+<span id="483">483</span>
+<span id="484">484</span>
+<span id="485">485</span>
+<span id="486">486</span>
+<span id="487">487</span>
+<span id="488">488</span>
+<span id="489">489</span>
+<span id="490">490</span>
+<span id="491">491</span>
+<span id="492">492</span>
+<span id="493">493</span>
+<span id="494">494</span>
+<span id="495">495</span>
+<span id="496">496</span>
+<span id="497">497</span>
+<span id="498">498</span>
+<span id="499">499</span>
+<span id="500">500</span>
+<span id="501">501</span>
+<span id="502">502</span>
+<span id="503">503</span>
+<span id="504">504</span>
+<span id="505">505</span>
+<span id="506">506</span>
+<span id="507">507</span>
+<span id="508">508</span>
+<span id="509">509</span>
+<span id="510">510</span>
+<span id="511">511</span>
+<span id="512">512</span>
+<span id="513">513</span>
+<span id="514">514</span>
+<span id="515">515</span>
+<span id="516">516</span>
+<span id="517">517</span>
+<span id="518">518</span>
+<span id="519">519</span>
+<span id="520">520</span>
+<span id="521">521</span>
+<span id="522">522</span>
+<span id="523">523</span>
+<span id="524">524</span>
+<span id="525">525</span>
+<span id="526">526</span>
+<span id="527">527</span>
+<span id="528">528</span>
+<span id="529">529</span>
+<span id="530">530</span>
+<span id="531">531</span>
+<span id="532">532</span>
+<span id="533">533</span>
+<span id="534">534</span>
+<span id="535">535</span>
+<span id="536">536</span>
+<span id="537">537</span>
+<span id="538">538</span>
+<span id="539">539</span>
+<span id="540">540</span>
+<span id="541">541</span>
+<span id="542">542</span>
+<span id="543">543</span>
+<span id="544">544</span>
+<span id="545">545</span>
+<span id="546">546</span>
+<span id="547">547</span>
+<span id="548">548</span>
+<span id="549">549</span>
+<span id="550">550</span>
+<span id="551">551</span>
+<span id="552">552</span>
+<span id="553">553</span>
+<span id="554">554</span>
+<span id="555">555</span>
+<span id="556">556</span>
+<span id="557">557</span>
+<span id="558">558</span>
+<span id="559">559</span>
+<span id="560">560</span>
+<span id="561">561</span>
+<span id="562">562</span>
+<span id="563">563</span>
+<span id="564">564</span>
+<span id="565">565</span>
+<span id="566">566</span>
+<span id="567">567</span>
+<span id="568">568</span>
+<span id="569">569</span>
+<span id="570">570</span>
+<span id="571">571</span>
+<span id="572">572</span>
+<span id="573">573</span>
+<span id="574">574</span>
+<span id="575">575</span>
+<span id="576">576</span>
+<span id="577">577</span>
+<span id="578">578</span>
+<span id="579">579</span>
+<span id="580">580</span>
+<span id="581">581</span>
+<span id="582">582</span>
+<span id="583">583</span>
+<span id="584">584</span>
+<span id="585">585</span>
+<span id="586">586</span>
+<span id="587">587</span>
+<span id="588">588</span>
+<span id="589">589</span>
+<span id="590">590</span>
+<span id="591">591</span>
+<span id="592">592</span>
+<span id="593">593</span>
+<span id="594">594</span>
+<span id="595">595</span>
+<span id="596">596</span>
+<span id="597">597</span>
+<span id="598">598</span>
+<span id="599">599</span>
+<span id="600">600</span>
+<span id="601">601</span>
+<span id="602">602</span>
+<span id="603">603</span>
+<span id="604">604</span>
+<span id="605">605</span>
+<span id="606">606</span>
+<span id="607">607</span>
+<span id="608">608</span>
+<span id="609">609</span>
+<span id="610">610</span>
+<span id="611">611</span>
+<span id="612">612</span>
+<span id="613">613</span>
+<span id="614">614</span>
+<span id="615">615</span>
+<span id="616">616</span>
+<span id="617">617</span>
+<span id="618">618</span>
+<span id="619">619</span>
+<span id="620">620</span>
+<span id="621">621</span>
+<span id="622">622</span>
+<span id="623">623</span>
+<span id="624">624</span>
+<span id="625">625</span>
+<span id="626">626</span>
+<span id="627">627</span>
+<span id="628">628</span>
+<span id="629">629</span>
+<span id="630">630</span>
+<span id="631">631</span>
+<span id="632">632</span>
+<span id="633">633</span>
+<span id="634">634</span>
+<span id="635">635</span>
+<span id="636">636</span>
+<span id="637">637</span>
+<span id="638">638</span>
+<span id="639">639</span>
+<span id="640">640</span>
+<span id="641">641</span>
+<span id="642">642</span>
+<span id="643">643</span>
+<span id="644">644</span>
+<span id="645">645</span>
+<span id="646">646</span>
+<span id="647">647</span>
+<span id="648">648</span>
+<span id="649">649</span>
+<span id="650">650</span>
+<span id="651">651</span>
+<span id="652">652</span>
+<span id="653">653</span>
+<span id="654">654</span>
+<span id="655">655</span>
+<span id="656">656</span>
+<span id="657">657</span>
+<span id="658">658</span>
+<span id="659">659</span>
+<span id="660">660</span>
+<span id="661">661</span>
+<span id="662">662</span>
+<span id="663">663</span>
+<span id="664">664</span>
+<span id="665">665</span>
+<span id="666">666</span>
+<span id="667">667</span>
+<span id="668">668</span>
+<span id="669">669</span>
+<span id="670">670</span>
+<span id="671">671</span>
+<span id="672">672</span>
+<span id="673">673</span>
+<span id="674">674</span>
+<span id="675">675</span>
+<span id="676">676</span>
+<span id="677">677</span>
+<span id="678">678</span>
+<span id="679">679</span>
+<span id="680">680</span>
+<span id="681">681</span>
+<span id="682">682</span>
+<span id="683">683</span>
+<span id="684">684</span>
+<span id="685">685</span>
+<span id="686">686</span>
+<span id="687">687</span>
+<span id="688">688</span>
+<span id="689">689</span>
+<span id="690">690</span>
+<span id="691">691</span>
+<span id="692">692</span>
+<span id="693">693</span>
+<span id="694">694</span>
+<span id="695">695</span>
+<span id="696">696</span>
+<span id="697">697</span>
+<span id="698">698</span>
+<span id="699">699</span>
+<span id="700">700</span>
+<span id="701">701</span>
+<span id="702">702</span>
+<span id="703">703</span>
+<span id="704">704</span>
+<span id="705">705</span>
+<span id="706">706</span>
+<span id="707">707</span>
+<span id="708">708</span>
+<span id="709">709</span>
+<span id="710">710</span>
+<span id="711">711</span>
+<span id="712">712</span>
+<span id="713">713</span>
+<span id="714">714</span>
+<span id="715">715</span>
+<span id="716">716</span>
+<span id="717">717</span>
+<span id="718">718</span>
+<span id="719">719</span>
+<span id="720">720</span>
+<span id="721">721</span>
+<span id="722">722</span>
+<span id="723">723</span>
+<span id="724">724</span>
+<span id="725">725</span>
+<span id="726">726</span>
+<span id="727">727</span>
+<span id="728">728</span>
+<span id="729">729</span>
+<span id="730">730</span>
+<span id="731">731</span>
+<span id="732">732</span>
+<span id="733">733</span>
+<span id="734">734</span>
+<span id="735">735</span>
+<span id="736">736</span>
+<span id="737">737</span>
+<span id="738">738</span>
+<span id="739">739</span>
+<span id="740">740</span>
+<span id="741">741</span>
+<span id="742">742</span>
+<span id="743">743</span>
+<span id="744">744</span>
+<span id="745">745</span>
+<span id="746">746</span>
+<span id="747">747</span>
+<span id="748">748</span>
+<span id="749">749</span>
+<span id="750">750</span>
+<span id="751">751</span>
+<span id="752">752</span>
+<span id="753">753</span>
+<span id="754">754</span>
+<span id="755">755</span>
+<span id="756">756</span>
+<span id="757">757</span>
+</pre><div class="example-wrap"><pre class="rust ">
+<span class="comment">// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT</span>
+<span class="comment">// file at the top-level directory of this distribution and at</span>
+<span class="comment">// http://rust-lang.org/COPYRIGHT.</span>
+<span class="comment">//</span>
+<span class="comment">// Licensed under the Apache License, Version 2.0 &lt;LICENSE-APACHE or</span>
+<span class="comment">// http://www.apache.org/licenses/LICENSE-2.0&gt; or the MIT license</span>
+<span class="comment">// &lt;LICENSE-MIT or http://opensource.org/licenses/MIT&gt;, at your</span>
+<span class="comment">// option. This file may not be copied, modified, or distributed</span>
+<span class="comment">// except according to those terms.</span>
+
+<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">cmp</span>;
+
+<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span>::<span class="ident">GraphemeCat</span>;
+
+<span class="doccomment">/// External iterator for grapheme clusters and byte offsets.</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// This struct is created by the [`grapheme_indices`] method on the [`UnicodeSegmentation`]</span>
+<span class="doccomment">/// trait. See its documentation for more.</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// [`grapheme_indices`]: trait.UnicodeSegmentation.html#tymethod.grapheme_indices</span>
+<span class="doccomment">/// [`UnicodeSegmentation`]: trait.UnicodeSegmentation.html</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
+<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">GraphemeIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="ident">start_offset</span>: <span class="ident">usize</span>,
+    <span class="ident">iter</span>: <span class="ident">Graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>,
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">GraphemeIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="doccomment">/// View the underlying data (the part yet to be iterated) as a slice of the original string.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let mut iter = &quot;abc&quot;.grapheme_indices(true);</span>
+    <span class="doccomment">/// assert_eq!(iter.as_str(), &quot;abc&quot;);</span>
+    <span class="doccomment">/// iter.next();</span>
+    <span class="doccomment">/// assert_eq!(iter.as_str(), &quot;bc&quot;);</span>
+    <span class="doccomment">/// iter.next();</span>
+    <span class="doccomment">/// iter.next();</span>
+    <span class="doccomment">/// assert_eq!(iter.as_str(), &quot;&quot;);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">as_str</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span> {
+        <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">as_str</span>()
+    }
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Iterator</span> <span class="kw">for</span> <span class="ident">GraphemeIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="kw">type</span> <span class="ident">Item</span> <span class="op">=</span> (<span class="ident">usize</span>, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>);
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">next</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span>(<span class="ident">usize</span>, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>)<span class="op">&gt;</span> {
+        <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">next</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> (<span class="ident">s</span>.<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="ident">usize</span> <span class="op">-</span> <span class="self">self</span>.<span class="ident">start_offset</span>, <span class="ident">s</span>))
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">size_hint</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">usize</span>, <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>) {
+        <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">size_hint</span>()
+    }
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">DoubleEndedIterator</span> <span class="kw">for</span> <span class="ident">GraphemeIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">next_back</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span>(<span class="ident">usize</span>, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>)<span class="op">&gt;</span> {
+        <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">next_back</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> (<span class="ident">s</span>.<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="ident">usize</span> <span class="op">-</span> <span class="self">self</span>.<span class="ident">start_offset</span>, <span class="ident">s</span>))
+    }
+}
+
+<span class="doccomment">/// External iterator for a string&#39;s</span>
+<span class="doccomment">/// [grapheme clusters](http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries).</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// This struct is created by the [`graphemes`] method on the [`UnicodeSegmentation`] trait. See its</span>
+<span class="doccomment">/// documentation for more.</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// [`graphemes`]: trait.UnicodeSegmentation.html#tymethod.graphemes</span>
+<span class="doccomment">/// [`UnicodeSegmentation`]: trait.UnicodeSegmentation.html</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>)]</span>
+<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="ident">string</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>,
+    <span class="ident">cursor</span>: <span class="ident">GraphemeCursor</span>,
+    <span class="ident">cursor_back</span>: <span class="ident">GraphemeCursor</span>,
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="doccomment">/// View the underlying data (the part yet to be iterated) as a slice of the original string.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let mut iter = &quot;abc&quot;.graphemes(true);</span>
+    <span class="doccomment">/// assert_eq!(iter.as_str(), &quot;abc&quot;);</span>
+    <span class="doccomment">/// iter.next();</span>
+    <span class="doccomment">/// assert_eq!(iter.as_str(), &quot;bc&quot;);</span>
+    <span class="doccomment">/// iter.next();</span>
+    <span class="doccomment">/// iter.next();</span>
+    <span class="doccomment">/// assert_eq!(iter.as_str(), &quot;&quot;);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">as_str</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span> {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">string</span>[<span class="self">self</span>.<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>()..<span class="self">self</span>.<span class="ident">cursor_back</span>.<span class="ident">cur_cursor</span>()]
+    }
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Iterator</span> <span class="kw">for</span> <span class="ident">Graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="kw">type</span> <span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>;
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">size_hint</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">usize</span>, <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>) {
+        <span class="kw">let</span> <span class="ident">slen</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cursor_back</span>.<span class="ident">cur_cursor</span>() <span class="op">-</span> <span class="self">self</span>.<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>();
+        (<span class="ident">cmp</span>::<span class="ident">min</span>(<span class="ident">slen</span>, <span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="ident">slen</span>))
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">next</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span><span class="op">&gt;</span> {
+        <span class="kw">let</span> <span class="ident">start</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>();
+        <span class="kw">if</span> <span class="ident">start</span> <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">cursor_back</span>.<span class="ident">cur_cursor</span>() {
+            <span class="kw">return</span> <span class="prelude-val">None</span>;
+        }
+        <span class="kw">let</span> <span class="ident">next</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="self">self</span>.<span class="ident">string</span>, <span class="number">0</span>).<span class="ident">unwrap</span>().<span class="ident">unwrap</span>();
+        <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">string</span>[<span class="ident">start</span>..<span class="ident">next</span>])
+    }
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">DoubleEndedIterator</span> <span class="kw">for</span> <span class="ident">Graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">next_back</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span><span class="op">&gt;</span> {
+        <span class="kw">let</span> <span class="ident">end</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cursor_back</span>.<span class="ident">cur_cursor</span>();
+        <span class="kw">if</span> <span class="ident">end</span> <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>() {
+            <span class="kw">return</span> <span class="prelude-val">None</span>;
+        }
+        <span class="kw">let</span> <span class="ident">prev</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cursor_back</span>.<span class="ident">prev_boundary</span>(<span class="self">self</span>.<span class="ident">string</span>, <span class="number">0</span>).<span class="ident">unwrap</span>().<span class="ident">unwrap</span>();
+        <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">string</span>[<span class="ident">prev</span>..<span class="ident">end</span>])
+    }
+}
+
+<span class="attribute">#[<span class="ident">inline</span>]</span>
+<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;b</span><span class="op">&gt;</span>(<span class="ident">s</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;b</span> <span class="ident">str</span>, <span class="ident">is_extended</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;b</span><span class="op">&gt;</span> {
+    <span class="kw">let</span> <span class="ident">len</span> <span class="op">=</span> <span class="ident">s</span>.<span class="ident">len</span>();
+    <span class="ident">Graphemes</span> {
+        <span class="ident">string</span>: <span class="ident">s</span>,
+        <span class="ident">cursor</span>: <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">0</span>, <span class="ident">len</span>, <span class="ident">is_extended</span>),
+        <span class="ident">cursor_back</span>: <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="ident">len</span>, <span class="ident">len</span>, <span class="ident">is_extended</span>),
+    }
+}
+
+<span class="attribute">#[<span class="ident">inline</span>]</span>
+<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_grapheme_indices</span><span class="op">&lt;</span><span class="lifetime">&#39;b</span><span class="op">&gt;</span>(<span class="ident">s</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;b</span> <span class="ident">str</span>, <span class="ident">is_extended</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GraphemeIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;b</span><span class="op">&gt;</span> {
+    <span class="ident">GraphemeIndices</span> { <span class="ident">start_offset</span>: <span class="ident">s</span>.<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="ident">usize</span>, <span class="ident">iter</span>: <span class="ident">new_graphemes</span>(<span class="ident">s</span>, <span class="ident">is_extended</span>) }
+}
+
+<span class="comment">// maybe unify with PairResult?</span>
+<span class="comment">// An enum describing information about a potential boundary.</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Clone</span>, <span class="ident">Debug</span>)]</span>
+<span class="kw">enum</span> <span class="ident">GraphemeState</span> {
+    <span class="comment">// No information is known.</span>
+    <span class="ident">Unknown</span>,
+    <span class="comment">// It is known to not be a boundary.</span>
+    <span class="ident">NotBreak</span>,
+    <span class="comment">// It is known to be a boundary.</span>
+    <span class="ident">Break</span>,
+    <span class="comment">// The codepoint after is a Regional Indicator Symbol, so a boundary iff</span>
+    <span class="comment">// it is preceded by an even number of RIS codepoints. (GB12, GB13)</span>
+    <span class="ident">Regional</span>,
+    <span class="comment">// The codepoint after is Extended_Pictographic,</span>
+    <span class="comment">// so whether it&#39;s a boundary depends on pre-context according to GB11.</span>
+    <span class="ident">Emoji</span>,
+}
+
+<span class="doccomment">/// Cursor-based segmenter for grapheme clusters.</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>)]</span>
+<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">GraphemeCursor</span> {
+    <span class="comment">// Current cursor position.</span>
+    <span class="ident">offset</span>: <span class="ident">usize</span>,
+    <span class="comment">// Total length of the string.</span>
+    <span class="ident">len</span>: <span class="ident">usize</span>,
+    <span class="comment">// A config flag indicating whether this cursor computes legacy or extended</span>
+    <span class="comment">// grapheme cluster boundaries (enables GB9a and GB9b if set).</span>
+    <span class="ident">is_extended</span>: <span class="ident">bool</span>,
+    <span class="comment">// Information about the potential boundary at `offset`</span>
+    <span class="ident">state</span>: <span class="ident">GraphemeState</span>,
+    <span class="comment">// Category of codepoint immediately preceding cursor, if known.</span>
+    <span class="ident">cat_before</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">GraphemeCat</span><span class="op">&gt;</span>,
+    <span class="comment">// Category of codepoint immediately after cursor, if known.</span>
+    <span class="ident">cat_after</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">GraphemeCat</span><span class="op">&gt;</span>,
+    <span class="comment">// If set, at least one more codepoint immediately preceding this offset</span>
+    <span class="comment">// is needed to resolve whether there&#39;s a boundary at `offset`.</span>
+    <span class="ident">pre_context_offset</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>,
+    <span class="comment">// The number of RIS codepoints preceding `offset`. If `pre_context_offset`</span>
+    <span class="comment">// is set, then counts the number of RIS between that and `offset`, otherwise</span>
+    <span class="comment">// is an accurate count relative to the string.</span>
+    <span class="ident">ris_count</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>,
+    <span class="comment">// Set if a call to `prev_boundary` or `next_boundary` was suspended due</span>
+    <span class="comment">// to needing more input.</span>
+    <span class="ident">resuming</span>: <span class="ident">bool</span>,
+    <span class="comment">// Cached grapheme category and associated scalar value range.</span>
+    <span class="ident">grapheme_cat_cache</span>: (<span class="ident">u32</span>, <span class="ident">u32</span>, <span class="ident">GraphemeCat</span>),
+}
+
+<span class="doccomment">/// An error return indicating that not enough content was available in the</span>
+<span class="doccomment">/// provided chunk to satisfy the query, and that more content must be provided.</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Debug</span>)]</span>
+<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">GraphemeIncomplete</span> {
+    <span class="doccomment">/// More pre-context is needed. The caller should call `provide_context`</span>
+    <span class="doccomment">/// with a chunk ending at the offset given, then retry the query. This</span>
+    <span class="doccomment">/// will only be returned if the `chunk_start` parameter is nonzero.</span>
+    <span class="ident">PreContext</span>(<span class="ident">usize</span>),
+
+    <span class="doccomment">/// When requesting `prev_boundary`, the cursor is moving past the beginning</span>
+    <span class="doccomment">/// of the current chunk, so the chunk before that is requested. This will</span>
+    <span class="doccomment">/// only be returned if the `chunk_start` parameter is nonzero.</span>
+    <span class="ident">PrevChunk</span>,
+
+    <span class="doccomment">/// When requesting `next_boundary`, the cursor is moving past the end of the</span>
+    <span class="doccomment">/// current chunk, so the chunk after that is requested. This will only be</span>
+    <span class="doccomment">/// returned if the chunk ends before the `len` parameter provided on</span>
+    <span class="doccomment">/// creation of the cursor.</span>
+    <span class="ident">NextChunk</span>,  <span class="comment">// requesting chunk following the one given</span>
+
+    <span class="doccomment">/// An error returned when the chunk given does not contain the cursor position.</span>
+    <span class="ident">InvalidOffset</span>,
+}
+
+<span class="comment">// An enum describing the result from lookup of a pair of categories.</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
+<span class="kw">enum</span> <span class="ident">PairResult</span> {
+    <span class="ident">NotBreak</span>,  <span class="comment">// definitely not a break</span>
+    <span class="ident">Break</span>,  <span class="comment">// definitely a break</span>
+    <span class="ident">Extended</span>,  <span class="comment">// a break iff not in extended mode</span>
+    <span class="ident">Regional</span>,  <span class="comment">// a break if preceded by an even number of RIS</span>
+    <span class="ident">Emoji</span>,  <span class="comment">// a break if preceded by emoji base and (Extend)*</span>
+}
+
+<span class="attribute">#[<span class="ident">inline</span>]</span>
+<span class="kw">fn</span> <span class="ident">check_pair</span>(<span class="ident">before</span>: <span class="ident">GraphemeCat</span>, <span class="ident">after</span>: <span class="ident">GraphemeCat</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PairResult</span> {
+    <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span>::<span class="ident">GraphemeCat</span>::<span class="kw-2">*</span>;
+    <span class="kw">use</span> <span class="self">self</span>::<span class="ident">PairResult</span>::<span class="kw-2">*</span>;
+    <span class="kw">match</span> (<span class="ident">before</span>, <span class="ident">after</span>) {
+        (<span class="ident">GC_CR</span>, <span class="ident">GC_LF</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB3</span>
+        (<span class="ident">GC_Control</span>, <span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Break</span>,  <span class="comment">// GB4</span>
+        (<span class="ident">GC_CR</span>, <span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Break</span>,  <span class="comment">// GB4</span>
+        (<span class="ident">GC_LF</span>, <span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Break</span>,  <span class="comment">// GB4</span>
+        (<span class="kw">_</span>, <span class="ident">GC_Control</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Break</span>,  <span class="comment">// GB5</span>
+        (<span class="kw">_</span>, <span class="ident">GC_CR</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Break</span>,  <span class="comment">// GB5</span>
+        (<span class="kw">_</span>, <span class="ident">GC_LF</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Break</span>,  <span class="comment">// GB5</span>
+        (<span class="ident">GC_L</span>, <span class="ident">GC_L</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB6</span>
+        (<span class="ident">GC_L</span>, <span class="ident">GC_V</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB6</span>
+        (<span class="ident">GC_L</span>, <span class="ident">GC_LV</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB6</span>
+        (<span class="ident">GC_L</span>, <span class="ident">GC_LVT</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB6</span>
+        (<span class="ident">GC_LV</span>, <span class="ident">GC_V</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB7</span>
+        (<span class="ident">GC_LV</span>, <span class="ident">GC_T</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB7</span>
+        (<span class="ident">GC_V</span>, <span class="ident">GC_V</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB7</span>
+        (<span class="ident">GC_V</span>, <span class="ident">GC_T</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB7</span>
+        (<span class="ident">GC_LVT</span>, <span class="ident">GC_T</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB8</span>
+        (<span class="ident">GC_T</span>, <span class="ident">GC_T</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB8</span>
+        (<span class="kw">_</span>, <span class="ident">GC_Extend</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>, <span class="comment">// GB9</span>
+        (<span class="kw">_</span>, <span class="ident">GC_ZWJ</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">NotBreak</span>,  <span class="comment">// GB9</span>
+        (<span class="kw">_</span>, <span class="ident">GC_SpacingMark</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Extended</span>,  <span class="comment">// GB9a</span>
+        (<span class="ident">GC_Prepend</span>, <span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Extended</span>,  <span class="comment">// GB9b</span>
+        (<span class="ident">GC_ZWJ</span>, <span class="ident">GC_Extended_Pictographic</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Emoji</span>,  <span class="comment">// GB11</span>
+        (<span class="ident">GC_Regional_Indicator</span>, <span class="ident">GC_Regional_Indicator</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Regional</span>,  <span class="comment">// GB12, GB13</span>
+        (<span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">Break</span>,  <span class="comment">// GB999</span>
+    }
+}
+
+<span class="kw">impl</span> <span class="ident">GraphemeCursor</span> {
+    <span class="doccomment">/// Create a new cursor. The string and initial offset are given at creation</span>
+    <span class="doccomment">/// time, but the contents of the string are not. The `is_extended` parameter</span>
+    <span class="doccomment">/// controls whether extended grapheme clusters are selected.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// The `offset` parameter must be on a codepoint boundary.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::GraphemeCursor;</span>
+    <span class="doccomment">/// let s = &quot;हिन्दी&quot;;</span>
+    <span class="doccomment">/// let mut legacy = GraphemeCursor::new(0, s.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(legacy.next_boundary(s, 0), Ok(Some(&quot;ह&quot;.len())));</span>
+    <span class="doccomment">/// let mut extended = GraphemeCursor::new(0, s.len(), true);</span>
+    <span class="doccomment">/// assert_eq!(extended.next_boundary(s, 0), Ok(Some(&quot;हि&quot;.len())));</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">offset</span>: <span class="ident">usize</span>, <span class="ident">len</span>: <span class="ident">usize</span>, <span class="ident">is_extended</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GraphemeCursor</span> {
+        <span class="kw">let</span> <span class="ident">state</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="number">0</span> <span class="op">|</span><span class="op">|</span> <span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="ident">len</span> {
+            <span class="ident">GraphemeState</span>::<span class="ident">Break</span>
+        } <span class="kw">else</span> {
+            <span class="ident">GraphemeState</span>::<span class="ident">Unknown</span>
+        };
+        <span class="ident">GraphemeCursor</span> {
+            <span class="ident">offset</span>: <span class="ident">offset</span>,
+            <span class="ident">len</span>: <span class="ident">len</span>,
+            <span class="ident">state</span>: <span class="ident">state</span>,
+            <span class="ident">is_extended</span>: <span class="ident">is_extended</span>,
+            <span class="ident">cat_before</span>: <span class="prelude-val">None</span>,
+            <span class="ident">cat_after</span>: <span class="prelude-val">None</span>,
+            <span class="ident">pre_context_offset</span>: <span class="prelude-val">None</span>,
+            <span class="ident">ris_count</span>: <span class="prelude-val">None</span>,
+            <span class="ident">resuming</span>: <span class="bool-val">false</span>,
+            <span class="ident">grapheme_cat_cache</span>: (<span class="number">0</span>, <span class="number">0</span>, <span class="ident">GraphemeCat</span>::<span class="ident">GC_Control</span>),
+        }
+    }
+
+    <span class="kw">fn</span> <span class="ident">grapheme_category</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">ch</span>: <span class="ident">char</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GraphemeCat</span> {
+        <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span> <span class="kw">as</span> <span class="ident">gr</span>;
+        <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span>::<span class="ident">GraphemeCat</span>::<span class="kw-2">*</span>;
+
+        <span class="kw">if</span> <span class="ident">ch</span> <span class="op">&lt;</span><span class="op">=</span> <span class="string">&#39;\u{7e}&#39;</span> {
+            <span class="comment">// Special-case optimization for ascii, except U+007F.  This</span>
+            <span class="comment">// improves performance even for many primarily non-ascii texts,</span>
+            <span class="comment">// due to use of punctuation and white space characters from the</span>
+            <span class="comment">// ascii range.</span>
+            <span class="kw">if</span> <span class="ident">ch</span> <span class="op">&gt;</span><span class="op">=</span> <span class="string">&#39;\u{20}&#39;</span> {
+                <span class="ident">GC_Any</span>
+            } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">ch</span> <span class="op">=</span><span class="op">=</span> <span class="string">&#39;\n&#39;</span> {
+                <span class="ident">GC_LF</span>
+            } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">ch</span> <span class="op">=</span><span class="op">=</span> <span class="string">&#39;\r&#39;</span> {
+                <span class="ident">GC_CR</span>
+            } <span class="kw">else</span> {
+                <span class="ident">GC_Control</span>
+            }
+        } <span class="kw">else</span> {
+            <span class="comment">// If this char isn&#39;t within the cached range, update the cache to the</span>
+            <span class="comment">// range that includes it.</span>
+            <span class="kw">if</span> (<span class="ident">ch</span> <span class="kw">as</span> <span class="ident">u32</span>) <span class="op">&lt;</span> <span class="self">self</span>.<span class="ident">grapheme_cat_cache</span>.<span class="number">0</span> <span class="op">|</span><span class="op">|</span> (<span class="ident">ch</span> <span class="kw">as</span> <span class="ident">u32</span>) <span class="op">&gt;</span> <span class="self">self</span>.<span class="ident">grapheme_cat_cache</span>.<span class="number">1</span> {
+                <span class="self">self</span>.<span class="ident">grapheme_cat_cache</span> <span class="op">=</span> <span class="ident">gr</span>::<span class="ident">grapheme_category</span>(<span class="ident">ch</span>);
+            }
+            <span class="self">self</span>.<span class="ident">grapheme_cat_cache</span>.<span class="number">2</span>
+        }
+    }
+
+    <span class="comment">// Not sure I&#39;m gonna keep this, the advantage over new() seems thin.</span>
+
+    <span class="doccomment">/// Set the cursor to a new location in the same string.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::GraphemeCursor;</span>
+    <span class="doccomment">/// let s = &quot;abcd&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(0, s.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(cursor.cur_cursor(), 0);</span>
+    <span class="doccomment">/// cursor.set_cursor(2);</span>
+    <span class="doccomment">/// assert_eq!(cursor.cur_cursor(), 2);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">set_cursor</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">offset</span>: <span class="ident">usize</span>) {
+        <span class="kw">if</span> <span class="ident">offset</span> <span class="op">!</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">offset</span> {
+            <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span> <span class="ident">offset</span>;
+            <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="number">0</span> <span class="op">|</span><span class="op">|</span> <span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">len</span> {
+                <span class="ident">GraphemeState</span>::<span class="ident">Break</span>
+            } <span class="kw">else</span> {
+                <span class="ident">GraphemeState</span>::<span class="ident">Unknown</span>
+            };
+            <span class="comment">// reset state derived from text around cursor</span>
+            <span class="self">self</span>.<span class="ident">cat_before</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+            <span class="self">self</span>.<span class="ident">cat_after</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+            <span class="self">self</span>.<span class="ident">ris_count</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+        }
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="doccomment">/// The current offset of the cursor. Equal to the last value provided to</span>
+    <span class="doccomment">/// `new()` or `set_cursor()`, or returned from `next_boundary()` or</span>
+    <span class="doccomment">/// `prev_boundary()`.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::GraphemeCursor;</span>
+    <span class="doccomment">/// // Two flags (🇷🇸🇮🇴), each flag is two RIS codepoints, each RIS is 4 bytes.</span>
+    <span class="doccomment">/// let flags = &quot;\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(4, flags.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(cursor.cur_cursor(), 4);</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(flags, 0), Ok(Some(8)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.cur_cursor(), 8);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">cur_cursor</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">usize</span> {
+        <span class="self">self</span>.<span class="ident">offset</span>
+    }
+
+    <span class="doccomment">/// Provide additional pre-context when it is needed to decide a boundary.</span>
+    <span class="doccomment">/// The end of the chunk must coincide with the value given in the</span>
+    <span class="doccomment">/// `GraphemeIncomplete::PreContext` request.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::{GraphemeCursor, GraphemeIncomplete};</span>
+    <span class="doccomment">/// let flags = &quot;\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(8, flags.len(), false);</span>
+    <span class="doccomment">/// // Not enough pre-context to decide if there&#39;s a boundary between the two flags.</span>
+    <span class="doccomment">/// assert_eq!(cursor.is_boundary(&amp;flags[8..], 8), Err(GraphemeIncomplete::PreContext(8)));</span>
+    <span class="doccomment">/// // Provide one more Regional Indicator Symbol of pre-context</span>
+    <span class="doccomment">/// cursor.provide_context(&amp;flags[4..8], 4);</span>
+    <span class="doccomment">/// // Still not enough context to decide.</span>
+    <span class="doccomment">/// assert_eq!(cursor.is_boundary(&amp;flags[8..], 8), Err(GraphemeIncomplete::PreContext(4)));</span>
+    <span class="doccomment">/// // Provide additional requested context.</span>
+    <span class="doccomment">/// cursor.provide_context(&amp;flags[0..4], 0);</span>
+    <span class="doccomment">/// // That&#39;s enough to decide (it always is when context goes to the start of the string)</span>
+    <span class="doccomment">/// assert_eq!(cursor.is_boundary(&amp;flags[8..], 8), Ok(true));</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">provide_context</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">chunk</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">chunk_start</span>: <span class="ident">usize</span>) {
+        <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span> <span class="kw">as</span> <span class="ident">gr</span>;
+        <span class="macro">assert</span><span class="macro">!</span>(<span class="ident">chunk_start</span> <span class="op">+</span> <span class="ident">chunk</span>.<span class="ident">len</span>() <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">pre_context_offset</span>.<span class="ident">unwrap</span>());
+        <span class="self">self</span>.<span class="ident">pre_context_offset</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_extended</span> <span class="op">&amp;&amp;</span> <span class="ident">chunk_start</span> <span class="op">+</span> <span class="ident">chunk</span>.<span class="ident">len</span>() <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">offset</span> {
+            <span class="kw">let</span> <span class="ident">ch</span> <span class="op">=</span> <span class="ident">chunk</span>.<span class="ident">chars</span>().<span class="ident">rev</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>();
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>) <span class="op">=</span><span class="op">=</span> <span class="ident">gr</span>::<span class="ident">GC_Prepend</span> {
+                <span class="self">self</span>.<span class="ident">decide</span>(<span class="bool-val">false</span>);  <span class="comment">// GB9b</span>
+                <span class="kw">return</span>;
+            }
+        }
+        <span class="kw">match</span> <span class="self">self</span>.<span class="ident">state</span> {
+            <span class="ident">GraphemeState</span>::<span class="ident">Regional</span> <span class="op">=</span><span class="op">&gt;</span> <span class="self">self</span>.<span class="ident">handle_regional</span>(<span class="ident">chunk</span>, <span class="ident">chunk_start</span>),
+            <span class="ident">GraphemeState</span>::<span class="ident">Emoji</span> <span class="op">=</span><span class="op">&gt;</span> <span class="self">self</span>.<span class="ident">handle_emoji</span>(<span class="ident">chunk</span>, <span class="ident">chunk_start</span>),
+            <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">cat_before</span>.<span class="ident">is_none</span>() <span class="op">&amp;&amp;</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="ident">chunk</span>.<span class="ident">len</span>() <span class="op">+</span> <span class="ident">chunk_start</span> {
+                <span class="kw">let</span> <span class="ident">ch</span> <span class="op">=</span> <span class="ident">chunk</span>.<span class="ident">chars</span>().<span class="ident">rev</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>();
+                <span class="self">self</span>.<span class="ident">cat_before</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+            },
+        }
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">decide</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">is_break</span>: <span class="ident">bool</span>) {
+        <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">is_break</span> {
+            <span class="ident">GraphemeState</span>::<span class="ident">Break</span>
+        } <span class="kw">else</span> {
+            <span class="ident">GraphemeState</span>::<span class="ident">NotBreak</span>
+        };
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">decision</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">is_break</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">bool</span>, <span class="ident">GraphemeIncomplete</span><span class="op">&gt;</span> {
+        <span class="self">self</span>.<span class="ident">decide</span>(<span class="ident">is_break</span>);
+        <span class="prelude-val">Ok</span>(<span class="ident">is_break</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">is_boundary_result</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">bool</span>, <span class="ident">GraphemeIncomplete</span><span class="op">&gt;</span> {
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span><span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Break</span> {
+            <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)
+        } <span class="kw">else</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span><span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">NotBreak</span> {
+            <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>)
+        } <span class="kw">else</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">pre_context_offset</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">pre_context_offset</span> {
+            <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PreContext</span>(<span class="ident">pre_context_offset</span>))
+        } <span class="kw">else</span> {
+            <span class="macro">unreachable</span><span class="macro">!</span>(<span class="string">&quot;inconsistent state&quot;</span>);
+        }
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">handle_regional</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">chunk</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">chunk_start</span>: <span class="ident">usize</span>) {
+        <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span> <span class="kw">as</span> <span class="ident">gr</span>;
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">ris_count</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">ris_count</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>);
+        <span class="kw">for</span> <span class="ident">ch</span> <span class="kw">in</span> <span class="ident">chunk</span>.<span class="ident">chars</span>().<span class="ident">rev</span>() {
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>) <span class="op">!</span><span class="op">=</span> <span class="ident">gr</span>::<span class="ident">GC_Regional_Indicator</span> {
+                <span class="self">self</span>.<span class="ident">ris_count</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">ris_count</span>);
+                <span class="self">self</span>.<span class="ident">decide</span>((<span class="ident">ris_count</span> <span class="op">%</span> <span class="number">2</span>) <span class="op">=</span><span class="op">=</span> <span class="number">0</span>);
+                <span class="kw">return</span>;
+            }
+            <span class="ident">ris_count</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
+        }
+        <span class="self">self</span>.<span class="ident">ris_count</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">ris_count</span>);
+        <span class="kw">if</span> <span class="ident">chunk_start</span> <span class="op">=</span><span class="op">=</span> <span class="number">0</span> {
+            <span class="self">self</span>.<span class="ident">decide</span>((<span class="ident">ris_count</span> <span class="op">%</span> <span class="number">2</span>) <span class="op">=</span><span class="op">=</span> <span class="number">0</span>);
+            <span class="kw">return</span>;
+        }
+        <span class="self">self</span>.<span class="ident">pre_context_offset</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">chunk_start</span>);
+        <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Regional</span>;
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">handle_emoji</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">chunk</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">chunk_start</span>: <span class="ident">usize</span>) {
+        <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span> <span class="kw">as</span> <span class="ident">gr</span>;
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">iter</span> <span class="op">=</span> <span class="ident">chunk</span>.<span class="ident">chars</span>().<span class="ident">rev</span>();
+        <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">ch</span>) <span class="op">=</span> <span class="ident">iter</span>.<span class="ident">next</span>() {
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>) <span class="op">!</span><span class="op">=</span> <span class="ident">gr</span>::<span class="ident">GC_ZWJ</span> {
+                <span class="self">self</span>.<span class="ident">decide</span>(<span class="bool-val">true</span>);
+                <span class="kw">return</span>;
+            }
+        }
+        <span class="kw">for</span> <span class="ident">ch</span> <span class="kw">in</span> <span class="ident">iter</span> {
+            <span class="kw">match</span> <span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>) {
+                <span class="ident">gr</span>::<span class="ident">GC_Extend</span> <span class="op">=</span><span class="op">&gt;</span> (),
+                <span class="ident">gr</span>::<span class="ident">GC_Extended_Pictographic</span> <span class="op">=</span><span class="op">&gt;</span> {
+                    <span class="self">self</span>.<span class="ident">decide</span>(<span class="bool-val">false</span>);
+                    <span class="kw">return</span>;
+                }
+                <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> {
+                    <span class="self">self</span>.<span class="ident">decide</span>(<span class="bool-val">true</span>);
+                    <span class="kw">return</span>;
+                }
+            }
+        }
+        <span class="kw">if</span> <span class="ident">chunk_start</span> <span class="op">=</span><span class="op">=</span> <span class="number">0</span> {
+            <span class="self">self</span>.<span class="ident">decide</span>(<span class="bool-val">true</span>);
+            <span class="kw">return</span>;
+        }
+        <span class="self">self</span>.<span class="ident">pre_context_offset</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">chunk_start</span>);
+        <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Emoji</span>;
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="doccomment">/// Determine whether the current cursor location is a grapheme cluster boundary.</span>
+    <span class="doccomment">/// Only a part of the string need be supplied. If `chunk_start` is nonzero or</span>
+    <span class="doccomment">/// the length of `chunk` is not equal to `len` on creation, then this method</span>
+    <span class="doccomment">/// may return `GraphemeIncomplete::PreContext`. The caller should then</span>
+    <span class="doccomment">/// call `provide_context` with the requested chunk, then retry calling this</span>
+    <span class="doccomment">/// method.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// For partial chunks, if the cursor is not at the beginning or end of the</span>
+    <span class="doccomment">/// string, the chunk should contain at least the codepoint following the cursor.</span>
+    <span class="doccomment">/// If the string is nonempty, the chunk must be nonempty.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// All calls should have consistent chunk contents (ie, if a chunk provides</span>
+    <span class="doccomment">/// content for a given slice, all further chunks covering that slice must have</span>
+    <span class="doccomment">/// the same content for it).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::GraphemeCursor;</span>
+    <span class="doccomment">/// let flags = &quot;\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(8, flags.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(cursor.is_boundary(flags, 0), Ok(true));</span>
+    <span class="doccomment">/// cursor.set_cursor(12);</span>
+    <span class="doccomment">/// assert_eq!(cursor.is_boundary(flags, 0), Ok(false));</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_boundary</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">chunk</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">chunk_start</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">bool</span>, <span class="ident">GraphemeIncomplete</span><span class="op">&gt;</span> {
+        <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">grapheme</span> <span class="kw">as</span> <span class="ident">gr</span>;
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span><span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Break</span> {
+            <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)
+        }
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span><span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">NotBreak</span> {
+            <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>)
+        }
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">&lt;</span> <span class="ident">chunk_start</span> <span class="op">|</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">&gt;</span><span class="op">=</span> <span class="ident">chunk_start</span> <span class="op">+</span> <span class="ident">chunk</span>.<span class="ident">len</span>() {
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">&gt;</span> <span class="ident">chunk_start</span> <span class="op">+</span> <span class="ident">chunk</span>.<span class="ident">len</span>() <span class="op">|</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">cat_after</span>.<span class="ident">is_none</span>() {
+                <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">InvalidOffset</span>)
+            }
+        }
+        <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">pre_context_offset</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">pre_context_offset</span> {
+            <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PreContext</span>(<span class="ident">pre_context_offset</span>));
+        }
+        <span class="kw">let</span> <span class="ident">offset_in_chunk</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">-</span> <span class="ident">chunk_start</span>;
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">cat_after</span>.<span class="ident">is_none</span>() {
+            <span class="kw">let</span> <span class="ident">ch</span> <span class="op">=</span> <span class="ident">chunk</span>[<span class="ident">offset_in_chunk</span>..].<span class="ident">chars</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>();
+            <span class="self">self</span>.<span class="ident">cat_after</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+        }
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="ident">chunk_start</span> {
+            <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">need_pre_context</span> <span class="op">=</span> <span class="bool-val">true</span>;
+            <span class="kw">match</span> <span class="self">self</span>.<span class="ident">cat_after</span>.<span class="ident">unwrap</span>() {
+                <span class="ident">gr</span>::<span class="ident">GC_Regional_Indicator</span> <span class="op">=</span><span class="op">&gt;</span> <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Regional</span>,
+                <span class="ident">gr</span>::<span class="ident">GC_Extended_Pictographic</span> <span class="op">=</span><span class="op">&gt;</span> <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Emoji</span>,
+                <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">need_pre_context</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cat_before</span>.<span class="ident">is_none</span>(),
+            }
+            <span class="kw">if</span> <span class="ident">need_pre_context</span> {
+                <span class="self">self</span>.<span class="ident">pre_context_offset</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">chunk_start</span>);
+                <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PreContext</span>(<span class="ident">chunk_start</span>));
+            }
+        }
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">cat_before</span>.<span class="ident">is_none</span>() {
+            <span class="kw">let</span> <span class="ident">ch</span> <span class="op">=</span> <span class="ident">chunk</span>[..<span class="ident">offset_in_chunk</span>].<span class="ident">chars</span>().<span class="ident">rev</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>();
+            <span class="self">self</span>.<span class="ident">cat_before</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+        }
+        <span class="kw">match</span> <span class="ident">check_pair</span>(<span class="self">self</span>.<span class="ident">cat_before</span>.<span class="ident">unwrap</span>(), <span class="self">self</span>.<span class="ident">cat_after</span>.<span class="ident">unwrap</span>()) {
+            <span class="ident">PairResult</span>::<span class="ident">NotBreak</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="self">self</span>.<span class="ident">decision</span>(<span class="bool-val">false</span>),
+            <span class="ident">PairResult</span>::<span class="ident">Break</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="self">self</span>.<span class="ident">decision</span>(<span class="bool-val">true</span>),
+            <span class="ident">PairResult</span>::<span class="ident">Extended</span> <span class="op">=</span><span class="op">&gt;</span> {
+                <span class="kw">let</span> <span class="ident">is_extended</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">is_extended</span>;
+                <span class="kw">return</span> <span class="self">self</span>.<span class="ident">decision</span>(<span class="op">!</span><span class="ident">is_extended</span>);
+            }
+            <span class="ident">PairResult</span>::<span class="ident">Regional</span> <span class="op">=</span><span class="op">&gt;</span> {
+                <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">ris_count</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">ris_count</span> {
+                    <span class="kw">return</span> <span class="self">self</span>.<span class="ident">decision</span>((<span class="ident">ris_count</span> <span class="op">%</span> <span class="number">2</span>) <span class="op">=</span><span class="op">=</span> <span class="number">0</span>);
+                }
+                <span class="self">self</span>.<span class="ident">handle_regional</span>(<span class="kw-2">&amp;</span><span class="ident">chunk</span>[..<span class="ident">offset_in_chunk</span>], <span class="ident">chunk_start</span>);
+                <span class="self">self</span>.<span class="ident">is_boundary_result</span>()
+            }
+            <span class="ident">PairResult</span>::<span class="ident">Emoji</span> <span class="op">=</span><span class="op">&gt;</span> {
+                <span class="self">self</span>.<span class="ident">handle_emoji</span>(<span class="kw-2">&amp;</span><span class="ident">chunk</span>[..<span class="ident">offset_in_chunk</span>], <span class="ident">chunk_start</span>);
+                <span class="self">self</span>.<span class="ident">is_boundary_result</span>()
+            }
+        }
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="doccomment">/// Find the next boundary after the current cursor position. Only a part of</span>
+    <span class="doccomment">/// the string need be supplied. If the chunk is incomplete, then this</span>
+    <span class="doccomment">/// method might return `GraphemeIncomplete::PreContext` or</span>
+    <span class="doccomment">/// `GraphemeIncomplete::NextChunk`. In the former case, the caller should</span>
+    <span class="doccomment">/// call `provide_context` with the requested chunk, then retry. In the</span>
+    <span class="doccomment">/// latter case, the caller should provide the chunk following the one</span>
+    <span class="doccomment">/// given, then retry.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// See `is_boundary` for expectations on the provided chunk.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::GraphemeCursor;</span>
+    <span class="doccomment">/// let flags = &quot;\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(4, flags.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(flags, 0), Ok(Some(8)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(flags, 0), Ok(Some(16)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(flags, 0), Ok(None));</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// And an example that uses partial strings:</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::{GraphemeCursor, GraphemeIncomplete};</span>
+    <span class="doccomment">/// let s = &quot;abcd&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(0, s.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(&amp;s[..2], 0), Ok(Some(1)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(&amp;s[..2], 0), Err(GraphemeIncomplete::NextChunk));</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(&amp;s[2..4], 2), Ok(Some(2)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(&amp;s[2..4], 2), Ok(Some(3)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(&amp;s[2..4], 2), Ok(Some(4)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.next_boundary(&amp;s[2..4], 2), Ok(None));</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">next_boundary</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">chunk</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">chunk_start</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>, <span class="ident">GraphemeIncomplete</span><span class="op">&gt;</span> {
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">len</span> {
+            <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+        }
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">iter</span> <span class="op">=</span> <span class="ident">chunk</span>[<span class="self">self</span>.<span class="ident">offset</span> <span class="op">-</span> <span class="ident">chunk_start</span>..].<span class="ident">chars</span>();
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">ch</span> <span class="op">=</span> <span class="ident">iter</span>.<span class="ident">next</span>().<span class="ident">unwrap</span>();
+        <span class="kw">loop</span> {
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">resuming</span> {
+                <span class="kw">if</span> <span class="self">self</span>.<span class="ident">cat_after</span>.<span class="ident">is_none</span>() {
+                    <span class="self">self</span>.<span class="ident">cat_after</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+                }
+            } <span class="kw">else</span> {
+                <span class="self">self</span>.<span class="ident">offset</span> <span class="op">+</span><span class="op">=</span> <span class="ident">ch</span>.<span class="ident">len_utf8</span>();
+                <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Unknown</span>;
+                <span class="self">self</span>.<span class="ident">cat_before</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cat_after</span>.<span class="ident">take</span>();
+                <span class="kw">if</span> <span class="self">self</span>.<span class="ident">cat_before</span>.<span class="ident">is_none</span>() {
+                    <span class="self">self</span>.<span class="ident">cat_before</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+                }
+                <span class="kw">if</span> <span class="self">self</span>.<span class="ident">cat_before</span>.<span class="ident">unwrap</span>() <span class="op">=</span><span class="op">=</span> <span class="ident">GraphemeCat</span>::<span class="ident">GC_Regional_Indicator</span> {
+                    <span class="self">self</span>.<span class="ident">ris_count</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">ris_count</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">c</span><span class="op">|</span> <span class="ident">c</span> <span class="op">+</span> <span class="number">1</span>);
+                } <span class="kw">else</span> {
+                    <span class="self">self</span>.<span class="ident">ris_count</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="number">0</span>);
+                }
+                <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">next_ch</span>) <span class="op">=</span> <span class="ident">iter</span>.<span class="ident">next</span>() {
+                    <span class="ident">ch</span> <span class="op">=</span> <span class="ident">next_ch</span>;
+                    <span class="self">self</span>.<span class="ident">cat_after</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+                } <span class="kw">else</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">len</span> {
+                    <span class="self">self</span>.<span class="ident">decide</span>(<span class="bool-val">true</span>);
+                } <span class="kw">else</span> {
+                    <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">true</span>;
+                    <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">NextChunk</span>);
+                }
+            }
+            <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">true</span>;
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_boundary</span>(<span class="ident">chunk</span>, <span class="ident">chunk_start</span>)<span class="question-mark">?</span> {
+                <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">false</span>;
+                <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">offset</span>));
+            }
+            <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">false</span>;
+        }
+    }
+
+    <span class="doccomment">/// Find the previous boundary after the current cursor position. Only a part</span>
+    <span class="doccomment">/// of the string need be supplied. If the chunk is incomplete, then this</span>
+    <span class="doccomment">/// method might return `GraphemeIncomplete::PreContext` or</span>
+    <span class="doccomment">/// `GraphemeIncomplete::PrevChunk`. In the former case, the caller should</span>
+    <span class="doccomment">/// call `provide_context` with the requested chunk, then retry. In the</span>
+    <span class="doccomment">/// latter case, the caller should provide the chunk preceding the one</span>
+    <span class="doccomment">/// given, then retry.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// See `is_boundary` for expectations on the provided chunk.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::GraphemeCursor;</span>
+    <span class="doccomment">/// let flags = &quot;\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(12, flags.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(flags, 0), Ok(Some(8)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(flags, 0), Ok(Some(0)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(flags, 0), Ok(None));</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// And an example that uses partial strings (note the exact return is not</span>
+    <span class="doccomment">/// guaranteed, and may be `PrevChunk` or `PreContext` arbitrarily):</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```rust</span>
+    <span class="doccomment">/// # use unicode_segmentation::{GraphemeCursor, GraphemeIncomplete};</span>
+    <span class="doccomment">/// let s = &quot;abcd&quot;;</span>
+    <span class="doccomment">/// let mut cursor = GraphemeCursor::new(4, s.len(), false);</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(&amp;s[2..4], 2), Ok(Some(3)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(&amp;s[2..4], 2), Err(GraphemeIncomplete::PrevChunk));</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(&amp;s[0..2], 0), Ok(Some(2)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(&amp;s[0..2], 0), Ok(Some(1)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(&amp;s[0..2], 0), Ok(Some(0)));</span>
+    <span class="doccomment">/// assert_eq!(cursor.prev_boundary(&amp;s[0..2], 0), Ok(None));</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">prev_boundary</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">chunk</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">chunk_start</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>, <span class="ident">GraphemeIncomplete</span><span class="op">&gt;</span> {
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="number">0</span> {
+            <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+        }
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="ident">chunk_start</span> {
+            <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PrevChunk</span>);
+        }
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">iter</span> <span class="op">=</span> <span class="ident">chunk</span>[..<span class="self">self</span>.<span class="ident">offset</span> <span class="op">-</span> <span class="ident">chunk_start</span>].<span class="ident">chars</span>().<span class="ident">rev</span>();
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">ch</span> <span class="op">=</span> <span class="ident">iter</span>.<span class="ident">next</span>().<span class="ident">unwrap</span>();
+        <span class="kw">loop</span> {
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="ident">chunk_start</span> {
+                <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">true</span>;
+                <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PrevChunk</span>);
+            }
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">resuming</span> {
+                <span class="self">self</span>.<span class="ident">cat_before</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+            } <span class="kw">else</span> {
+                <span class="self">self</span>.<span class="ident">offset</span> <span class="op">-</span><span class="op">=</span> <span class="ident">ch</span>.<span class="ident">len_utf8</span>();
+                <span class="self">self</span>.<span class="ident">cat_after</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cat_before</span>.<span class="ident">take</span>();
+                <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="ident">GraphemeState</span>::<span class="ident">Unknown</span>;
+                <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">ris_count</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">ris_count</span> {
+                    <span class="self">self</span>.<span class="ident">ris_count</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">ris_count</span> <span class="op">&gt;</span> <span class="number">0</span> { <span class="prelude-val">Some</span>(<span class="ident">ris_count</span> <span class="op">-</span> <span class="number">1</span>) } <span class="kw">else</span> { <span class="prelude-val">None</span> };
+                }
+                <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prev_ch</span>) <span class="op">=</span> <span class="ident">iter</span>.<span class="ident">next</span>() {
+                    <span class="ident">ch</span> <span class="op">=</span> <span class="ident">prev_ch</span>;
+                    <span class="self">self</span>.<span class="ident">cat_before</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+                } <span class="kw">else</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">offset</span> <span class="op">=</span><span class="op">=</span> <span class="number">0</span> {
+                    <span class="self">self</span>.<span class="ident">decide</span>(<span class="bool-val">true</span>);
+                } <span class="kw">else</span> {
+                    <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">true</span>;
+                    <span class="self">self</span>.<span class="ident">cat_after</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">grapheme_category</span>(<span class="ident">ch</span>));
+                    <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PrevChunk</span>);
+                }
+            }
+            <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">true</span>;
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_boundary</span>(<span class="ident">chunk</span>, <span class="ident">chunk_start</span>)<span class="question-mark">?</span> {
+                <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">false</span>;
+                <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">offset</span>));
+            }
+            <span class="self">self</span>.<span class="ident">resuming</span> <span class="op">=</span> <span class="bool-val">false</span>;
+        }
+    }
+}
+
+<span class="attribute">#[<span class="ident">test</span>]</span>
+<span class="kw">fn</span> <span class="ident">test_grapheme_cursor_ris_precontext</span>() {
+    <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">&quot;\u{1f1fa}\u{1f1f8}\u{1f1fa}\u{1f1f8}\u{1f1fa}\u{1f1f8}&quot;</span>;
+    <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">c</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">8</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">true</span>);
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">is_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[<span class="number">4</span>..], <span class="number">4</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PreContext</span>(<span class="number">4</span>)));
+    <span class="ident">c</span>.<span class="ident">provide_context</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[..<span class="number">4</span>], <span class="number">0</span>);
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">is_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[<span class="number">4</span>..], <span class="number">4</span>), <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>));
+}
+
+<span class="attribute">#[<span class="ident">test</span>]</span>
+<span class="kw">fn</span> <span class="ident">test_grapheme_cursor_chunk_start_require_precontext</span>() {
+    <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">&quot;\r\n&quot;</span>;
+    <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">c</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">1</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">true</span>);
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">is_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[<span class="number">1</span>..], <span class="number">1</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PreContext</span>(<span class="number">1</span>)));
+    <span class="ident">c</span>.<span class="ident">provide_context</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[..<span class="number">1</span>], <span class="number">0</span>);
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">is_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[<span class="number">1</span>..], <span class="number">1</span>), <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>));
+}
+
+<span class="attribute">#[<span class="ident">test</span>]</span>
+<span class="kw">fn</span> <span class="ident">test_grapheme_cursor_prev_boundary</span>() {
+    <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">&quot;abcd&quot;</span>;
+    <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">c</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">3</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">true</span>);
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[<span class="number">2</span>..], <span class="number">2</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PrevChunk</span>));
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">2</span>)));
+}
+
+<span class="attribute">#[<span class="ident">test</span>]</span>
+<span class="kw">fn</span> <span class="ident">test_grapheme_cursor_prev_boundary_chunk_start</span>() {
+    <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">&quot;abcd&quot;</span>;
+    <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">c</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">2</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">true</span>);
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[<span class="number">2</span>..], <span class="number">2</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PrevChunk</span>));
+    <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">c</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>[..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>)));
+}
+</pre></div>
+</section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="unicode_segmentation" data-search-js="../../search-index.js"></div>
+    <script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script></body></html>
\ No newline at end of file
diff --git a/src/unicode_segmentation/lib.rs.html b/src/unicode_segmentation/lib.rs.html
new file mode 100644
index 0000000..6dac68a
--- /dev/null
+++ b/src/unicode_segmentation/lib.rs.html
@@ -0,0 +1,615 @@
+<!DOCTYPE html><html lang="en"><head><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 `src/lib.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>lib.rs - source</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../light.css"  id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><script src="../../crates.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="https://unicode-rs.github.io/unicode-rs_sm.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../unicode_segmentation/index.html'><div class='logo-container'><img src='https://unicode-rs.github.io/unicode-rs_sm.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
+                <a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1">  1</span>
+<span id="2">  2</span>
+<span id="3">  3</span>
+<span id="4">  4</span>
+<span id="5">  5</span>
+<span id="6">  6</span>
+<span id="7">  7</span>
+<span id="8">  8</span>
+<span id="9">  9</span>
+<span id="10"> 10</span>
+<span id="11"> 11</span>
+<span id="12"> 12</span>
+<span id="13"> 13</span>
+<span id="14"> 14</span>
+<span id="15"> 15</span>
+<span id="16"> 16</span>
+<span id="17"> 17</span>
+<span id="18"> 18</span>
+<span id="19"> 19</span>
+<span id="20"> 20</span>
+<span id="21"> 21</span>
+<span id="22"> 22</span>
+<span id="23"> 23</span>
+<span id="24"> 24</span>
+<span id="25"> 25</span>
+<span id="26"> 26</span>
+<span id="27"> 27</span>
+<span id="28"> 28</span>
+<span id="29"> 29</span>
+<span id="30"> 30</span>
+<span id="31"> 31</span>
+<span id="32"> 32</span>
+<span id="33"> 33</span>
+<span id="34"> 34</span>
+<span id="35"> 35</span>
+<span id="36"> 36</span>
+<span id="37"> 37</span>
+<span id="38"> 38</span>
+<span id="39"> 39</span>
+<span id="40"> 40</span>
+<span id="41"> 41</span>
+<span id="42"> 42</span>
+<span id="43"> 43</span>
+<span id="44"> 44</span>
+<span id="45"> 45</span>
+<span id="46"> 46</span>
+<span id="47"> 47</span>
+<span id="48"> 48</span>
+<span id="49"> 49</span>
+<span id="50"> 50</span>
+<span id="51"> 51</span>
+<span id="52"> 52</span>
+<span id="53"> 53</span>
+<span id="54"> 54</span>
+<span id="55"> 55</span>
+<span id="56"> 56</span>
+<span id="57"> 57</span>
+<span id="58"> 58</span>
+<span id="59"> 59</span>
+<span id="60"> 60</span>
+<span id="61"> 61</span>
+<span id="62"> 62</span>
+<span id="63"> 63</span>
+<span id="64"> 64</span>
+<span id="65"> 65</span>
+<span id="66"> 66</span>
+<span id="67"> 67</span>
+<span id="68"> 68</span>
+<span id="69"> 69</span>
+<span id="70"> 70</span>
+<span id="71"> 71</span>
+<span id="72"> 72</span>
+<span id="73"> 73</span>
+<span id="74"> 74</span>
+<span id="75"> 75</span>
+<span id="76"> 76</span>
+<span id="77"> 77</span>
+<span id="78"> 78</span>
+<span id="79"> 79</span>
+<span id="80"> 80</span>
+<span id="81"> 81</span>
+<span id="82"> 82</span>
+<span id="83"> 83</span>
+<span id="84"> 84</span>
+<span id="85"> 85</span>
+<span id="86"> 86</span>
+<span id="87"> 87</span>
+<span id="88"> 88</span>
+<span id="89"> 89</span>
+<span id="90"> 90</span>
+<span id="91"> 91</span>
+<span id="92"> 92</span>
+<span id="93"> 93</span>
+<span id="94"> 94</span>
+<span id="95"> 95</span>
+<span id="96"> 96</span>
+<span id="97"> 97</span>
+<span id="98"> 98</span>
+<span id="99"> 99</span>
+<span id="100">100</span>
+<span id="101">101</span>
+<span id="102">102</span>
+<span id="103">103</span>
+<span id="104">104</span>
+<span id="105">105</span>
+<span id="106">106</span>
+<span id="107">107</span>
+<span id="108">108</span>
+<span id="109">109</span>
+<span id="110">110</span>
+<span id="111">111</span>
+<span id="112">112</span>
+<span id="113">113</span>
+<span id="114">114</span>
+<span id="115">115</span>
+<span id="116">116</span>
+<span id="117">117</span>
+<span id="118">118</span>
+<span id="119">119</span>
+<span id="120">120</span>
+<span id="121">121</span>
+<span id="122">122</span>
+<span id="123">123</span>
+<span id="124">124</span>
+<span id="125">125</span>
+<span id="126">126</span>
+<span id="127">127</span>
+<span id="128">128</span>
+<span id="129">129</span>
+<span id="130">130</span>
+<span id="131">131</span>
+<span id="132">132</span>
+<span id="133">133</span>
+<span id="134">134</span>
+<span id="135">135</span>
+<span id="136">136</span>
+<span id="137">137</span>
+<span id="138">138</span>
+<span id="139">139</span>
+<span id="140">140</span>
+<span id="141">141</span>
+<span id="142">142</span>
+<span id="143">143</span>
+<span id="144">144</span>
+<span id="145">145</span>
+<span id="146">146</span>
+<span id="147">147</span>
+<span id="148">148</span>
+<span id="149">149</span>
+<span id="150">150</span>
+<span id="151">151</span>
+<span id="152">152</span>
+<span id="153">153</span>
+<span id="154">154</span>
+<span id="155">155</span>
+<span id="156">156</span>
+<span id="157">157</span>
+<span id="158">158</span>
+<span id="159">159</span>
+<span id="160">160</span>
+<span id="161">161</span>
+<span id="162">162</span>
+<span id="163">163</span>
+<span id="164">164</span>
+<span id="165">165</span>
+<span id="166">166</span>
+<span id="167">167</span>
+<span id="168">168</span>
+<span id="169">169</span>
+<span id="170">170</span>
+<span id="171">171</span>
+<span id="172">172</span>
+<span id="173">173</span>
+<span id="174">174</span>
+<span id="175">175</span>
+<span id="176">176</span>
+<span id="177">177</span>
+<span id="178">178</span>
+<span id="179">179</span>
+<span id="180">180</span>
+<span id="181">181</span>
+<span id="182">182</span>
+<span id="183">183</span>
+<span id="184">184</span>
+<span id="185">185</span>
+<span id="186">186</span>
+<span id="187">187</span>
+<span id="188">188</span>
+<span id="189">189</span>
+<span id="190">190</span>
+<span id="191">191</span>
+<span id="192">192</span>
+<span id="193">193</span>
+<span id="194">194</span>
+<span id="195">195</span>
+<span id="196">196</span>
+<span id="197">197</span>
+<span id="198">198</span>
+<span id="199">199</span>
+<span id="200">200</span>
+<span id="201">201</span>
+<span id="202">202</span>
+<span id="203">203</span>
+<span id="204">204</span>
+<span id="205">205</span>
+<span id="206">206</span>
+<span id="207">207</span>
+<span id="208">208</span>
+<span id="209">209</span>
+<span id="210">210</span>
+<span id="211">211</span>
+<span id="212">212</span>
+<span id="213">213</span>
+<span id="214">214</span>
+<span id="215">215</span>
+<span id="216">216</span>
+<span id="217">217</span>
+<span id="218">218</span>
+<span id="219">219</span>
+<span id="220">220</span>
+<span id="221">221</span>
+<span id="222">222</span>
+<span id="223">223</span>
+<span id="224">224</span>
+<span id="225">225</span>
+<span id="226">226</span>
+<span id="227">227</span>
+<span id="228">228</span>
+<span id="229">229</span>
+<span id="230">230</span>
+<span id="231">231</span>
+<span id="232">232</span>
+<span id="233">233</span>
+<span id="234">234</span>
+<span id="235">235</span>
+<span id="236">236</span>
+<span id="237">237</span>
+<span id="238">238</span>
+<span id="239">239</span>
+<span id="240">240</span>
+<span id="241">241</span>
+<span id="242">242</span>
+<span id="243">243</span>
+<span id="244">244</span>
+<span id="245">245</span>
+<span id="246">246</span>
+<span id="247">247</span>
+<span id="248">248</span>
+<span id="249">249</span>
+<span id="250">250</span>
+<span id="251">251</span>
+<span id="252">252</span>
+<span id="253">253</span>
+<span id="254">254</span>
+<span id="255">255</span>
+<span id="256">256</span>
+<span id="257">257</span>
+<span id="258">258</span>
+<span id="259">259</span>
+<span id="260">260</span>
+<span id="261">261</span>
+<span id="262">262</span>
+<span id="263">263</span>
+<span id="264">264</span>
+<span id="265">265</span>
+<span id="266">266</span>
+<span id="267">267</span>
+<span id="268">268</span>
+<span id="269">269</span>
+<span id="270">270</span>
+<span id="271">271</span>
+<span id="272">272</span>
+<span id="273">273</span>
+<span id="274">274</span>
+<span id="275">275</span>
+<span id="276">276</span>
+<span id="277">277</span>
+<span id="278">278</span>
+<span id="279">279</span>
+<span id="280">280</span>
+<span id="281">281</span>
+<span id="282">282</span>
+<span id="283">283</span>
+<span id="284">284</span>
+<span id="285">285</span>
+<span id="286">286</span>
+<span id="287">287</span>
+<span id="288">288</span>
+<span id="289">289</span>
+<span id="290">290</span>
+<span id="291">291</span>
+<span id="292">292</span>
+<span id="293">293</span>
+<span id="294">294</span>
+<span id="295">295</span>
+<span id="296">296</span>
+<span id="297">297</span>
+<span id="298">298</span>
+<span id="299">299</span>
+<span id="300">300</span>
+<span id="301">301</span>
+<span id="302">302</span>
+<span id="303">303</span>
+<span id="304">304</span>
+<span id="305">305</span>
+</pre><div class="example-wrap"><pre class="rust ">
+<span class="comment">// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT</span>
+<span class="comment">// file at the top-level directory of this distribution and at</span>
+<span class="comment">// http://rust-lang.org/COPYRIGHT.</span>
+<span class="comment">//</span>
+<span class="comment">// Licensed under the Apache License, Version 2.0 &lt;LICENSE-APACHE or</span>
+<span class="comment">// http://www.apache.org/licenses/LICENSE-2.0&gt; or the MIT license</span>
+<span class="comment">// &lt;LICENSE-MIT or http://opensource.org/licenses/MIT&gt;, at your</span>
+<span class="comment">// option. This file may not be copied, modified, or distributed</span>
+<span class="comment">// except according to those terms.</span>
+
+<span class="doccomment">//! Iterators which split strings on Grapheme Cluster, Word or Sentence boundaries, according</span>
+<span class="doccomment">//! to the [Unicode Standard Annex #29](http://www.unicode.org/reports/tr29/) rules.</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! ```rust</span>
+<span class="doccomment">//! extern crate unicode_segmentation;</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! use unicode_segmentation::UnicodeSegmentation;</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! fn main() {</span>
+<span class="doccomment">//!     let s = &quot;a̐éö̲\r\n&quot;;</span>
+<span class="doccomment">//!     let g = UnicodeSegmentation::graphemes(s, true).collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+<span class="doccomment">//!     let b: &amp;[_] = &amp;[&quot;a̐&quot;, &quot;é&quot;, &quot;ö̲&quot;, &quot;\r\n&quot;];</span>
+<span class="doccomment">//!     assert_eq!(g, b);</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//!     let s = &quot;The quick (\&quot;brown\&quot;) fox can&#39;t jump 32.3 feet, right?&quot;;</span>
+<span class="doccomment">//!     let w = s.unicode_words().collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+<span class="doccomment">//!     let b: &amp;[_] = &amp;[&quot;The&quot;, &quot;quick&quot;, &quot;brown&quot;, &quot;fox&quot;, &quot;can&#39;t&quot;, &quot;jump&quot;, &quot;32.3&quot;, &quot;feet&quot;, &quot;right&quot;];</span>
+<span class="doccomment">//!     assert_eq!(w, b);</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//!     let s = &quot;The quick (\&quot;brown\&quot;)  fox&quot;;</span>
+<span class="doccomment">//!     let w = s.split_word_bounds().collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+<span class="doccomment">//!     let b: &amp;[_] = &amp;[&quot;The&quot;, &quot; &quot;, &quot;quick&quot;, &quot; &quot;, &quot;(&quot;, &quot;\&quot;&quot;, &quot;brown&quot;, &quot;\&quot;&quot;, &quot;)&quot;, &quot;  &quot;, &quot;fox&quot;];</span>
+<span class="doccomment">//!     assert_eq!(w, b);</span>
+<span class="doccomment">//! }</span>
+<span class="doccomment">//! ```</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! # no_std</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! unicode-segmentation does not depend on libstd, so it can be used in crates</span>
+<span class="doccomment">//! with the `#![no_std]` attribute.</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! # crates.io</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! You can use this package in your project by adding the following</span>
+<span class="doccomment">//! to your `Cargo.toml`:</span>
+<span class="doccomment">//!</span>
+<span class="doccomment">//! ```toml</span>
+<span class="doccomment">//! [dependencies]</span>
+<span class="doccomment">//! unicode-segmentation = &quot;1.7.1&quot;</span>
+<span class="doccomment">//! ```</span>
+
+<span class="attribute">#![<span class="ident">deny</span>(<span class="ident">missing_docs</span>, <span class="ident">unsafe_code</span>)]</span>
+<span class="attribute">#![<span class="ident">doc</span>(<span class="ident">html_logo_url</span> <span class="op">=</span> <span class="string">&quot;https://unicode-rs.github.io/unicode-rs_sm.png&quot;</span>,
+       <span class="ident">html_favicon_url</span> <span class="op">=</span> <span class="string">&quot;https://unicode-rs.github.io/unicode-rs_sm.png&quot;</span>)]</span>
+
+<span class="attribute">#![<span class="ident">no_std</span>]</span>
+
+<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
+<span class="attribute">#[<span class="ident">macro_use</span>]</span>
+<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">std</span>;
+
+<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
+<span class="attribute">#[<span class="ident">macro_use</span>]</span>
+<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">quickcheck</span>;
+
+<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">grapheme</span>::{<span class="ident">Graphemes</span>, <span class="ident">GraphemeIndices</span>};
+<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">grapheme</span>::{<span class="ident">GraphemeCursor</span>, <span class="ident">GraphemeIncomplete</span>};
+<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">tables</span>::<span class="ident">UNICODE_VERSION</span>;
+<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">word</span>::{<span class="ident">UWordBounds</span>, <span class="ident">UWordBoundIndices</span>, <span class="ident">UnicodeWords</span>, <span class="ident">UnicodeWordIndices</span>};
+<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">sentence</span>::{<span class="ident">USentenceBounds</span>, <span class="ident">USentenceBoundIndices</span>, <span class="ident">UnicodeSentences</span>};
+
+<span class="kw">mod</span> <span class="ident">grapheme</span>;
+<span class="kw">mod</span> <span class="ident">tables</span>;
+<span class="kw">mod</span> <span class="ident">word</span>;
+<span class="kw">mod</span> <span class="ident">sentence</span>;
+
+<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
+<span class="kw">mod</span> <span class="ident">test</span>;
+<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
+<span class="kw">mod</span> <span class="ident">testdata</span>;
+
+<span class="doccomment">/// Methods for segmenting strings according to</span>
+<span class="doccomment">/// [Unicode Standard Annex #29](http://www.unicode.org/reports/tr29/).</span>
+<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">UnicodeSegmentation</span> {
+    <span class="doccomment">/// Returns an iterator over the [grapheme clusters][graphemes] of `self`.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// [graphemes]: http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// If `is_extended` is true, the iterator is over the</span>
+    <span class="doccomment">/// *extended grapheme clusters*;</span>
+    <span class="doccomment">/// otherwise, the iterator is over the *legacy grapheme clusters*.</span>
+    <span class="doccomment">/// [UAX#29](http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)</span>
+    <span class="doccomment">/// recommends extended grapheme cluster boundaries for general processing.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Examples</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let gr1 = UnicodeSegmentation::graphemes(&quot;a\u{310}e\u{301}o\u{308}\u{332}&quot;, true)</span>
+    <span class="doccomment">///           .collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[&quot;a\u{310}&quot;, &quot;e\u{301}&quot;, &quot;o\u{308}\u{332}&quot;];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;gr1[..], b);</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// let gr2 = UnicodeSegmentation::graphemes(&quot;a\r\nb🇷🇺🇸🇹&quot;, true).collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[&quot;a&quot;, &quot;\r\n&quot;, &quot;b&quot;, &quot;🇷🇺&quot;, &quot;🇸🇹&quot;];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;gr2[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>, <span class="ident">is_extended</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Graphemes</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over the grapheme clusters of `self` and their</span>
+    <span class="doccomment">/// byte offsets. See `graphemes()` for more information.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Examples</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let gr_inds = UnicodeSegmentation::grapheme_indices(&quot;a̐éö̲\r\n&quot;, true)</span>
+    <span class="doccomment">///               .collect::&lt;Vec&lt;(usize, &amp;str)&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[(0, &quot;a̐&quot;), (3, &quot;é&quot;), (6, &quot;ö̲&quot;), (11, &quot;\r\n&quot;)];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;gr_inds[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">grapheme_indices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>, <span class="ident">is_extended</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GraphemeIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over the words of `self`, separated on</span>
+    <span class="doccomment">/// [UAX#29 word boundaries](http://www.unicode.org/reports/tr29/#Word_Boundaries).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// Here, &quot;words&quot; are just those substrings which, after splitting on</span>
+    <span class="doccomment">/// UAX#29 word boundaries, contain any alphanumeric characters. That is, the</span>
+    <span class="doccomment">/// substring must contain at least one character with the</span>
+    <span class="doccomment">/// [Alphabetic](http://unicode.org/reports/tr44/#Alphabetic)</span>
+    <span class="doccomment">/// property, or with</span>
+    <span class="doccomment">/// [General_Category=Number](http://unicode.org/reports/tr44/#General_Category_Values).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Example</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let uws = &quot;The quick (\&quot;brown\&quot;) fox can&#39;t jump 32.3 feet, right?&quot;;</span>
+    <span class="doccomment">/// let uw1 = uws.unicode_words().collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[&quot;The&quot;, &quot;quick&quot;, &quot;brown&quot;, &quot;fox&quot;, &quot;can&#39;t&quot;, &quot;jump&quot;, &quot;32.3&quot;, &quot;feet&quot;, &quot;right&quot;];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;uw1[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">unicode_words</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UnicodeWords</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over the words of `self`, separated on</span>
+    <span class="doccomment">/// [UAX#29 word boundaries](http://www.unicode.org/reports/tr29/#Word_Boundaries), and their</span>
+    <span class="doccomment">/// offsets.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// Here, &quot;words&quot; are just those substrings which, after splitting on</span>
+    <span class="doccomment">/// UAX#29 word boundaries, contain any alphanumeric characters. That is, the</span>
+    <span class="doccomment">/// substring must contain at least one character with the</span>
+    <span class="doccomment">/// [Alphabetic](http://unicode.org/reports/tr44/#Alphabetic)</span>
+    <span class="doccomment">/// property, or with</span>
+    <span class="doccomment">/// [General_Category=Number](http://unicode.org/reports/tr44/#General_Category_Values).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Example</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let uwis = &quot;The quick (\&quot;brown\&quot;) fox can&#39;t jump 32.3 feet, right?&quot;;</span>
+    <span class="doccomment">/// let uwi1 = uwis.unicode_word_indices().collect::&lt;Vec&lt;(usize, &amp;str)&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[(0, &quot;The&quot;), (4, &quot;quick&quot;), (12, &quot;brown&quot;), (20, &quot;fox&quot;), (24, &quot;can&#39;t&quot;),</span>
+    <span class="doccomment">///                 (30, &quot;jump&quot;), (35, &quot;32.3&quot;), (40, &quot;feet&quot;), (46, &quot;right&quot;)];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;uwi1[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">unicode_word_indices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UnicodeWordIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over substrings of `self` separated on</span>
+    <span class="doccomment">/// [UAX#29 word boundaries](http://www.unicode.org/reports/tr29/#Word_Boundaries).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// The concatenation of the substrings returned by this function is just the original string.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Example</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let swu1 = &quot;The quick (\&quot;brown\&quot;)  fox&quot;.split_word_bounds().collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[&quot;The&quot;, &quot; &quot;, &quot;quick&quot;, &quot; &quot;, &quot;(&quot;, &quot;\&quot;&quot;, &quot;brown&quot;, &quot;\&quot;&quot;, &quot;)&quot;, &quot;  &quot;, &quot;fox&quot;];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;swu1[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">split_word_bounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UWordBounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over substrings of `self`, split on UAX#29 word boundaries,</span>
+    <span class="doccomment">/// and their offsets. See `split_word_bounds()` for more information.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Example</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let swi1 = &quot;Brr, it&#39;s 29.3°F!&quot;.split_word_bound_indices().collect::&lt;Vec&lt;(usize, &amp;str)&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[(0, &quot;Brr&quot;), (3, &quot;,&quot;), (4, &quot; &quot;), (5, &quot;it&#39;s&quot;), (9, &quot; &quot;), (10, &quot;29.3&quot;),</span>
+    <span class="doccomment">///                 (14, &quot;°&quot;), (16, &quot;F&quot;), (17, &quot;!&quot;)];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;swi1[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">split_word_bound_indices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UWordBoundIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over substrings of `self` separated on</span>
+    <span class="doccomment">/// [UAX#29 sentence boundaries](http://www.unicode.org/reports/tr29/#Sentence_Boundaries).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// Here, &quot;sentences&quot; are just those substrings which, after splitting on</span>
+    <span class="doccomment">/// UAX#29 sentence boundaries, contain any alphanumeric characters. That is, the</span>
+    <span class="doccomment">/// substring must contain at least one character with the</span>
+    <span class="doccomment">/// [Alphabetic](http://unicode.org/reports/tr44/#Alphabetic)</span>
+    <span class="doccomment">/// property, or with</span>
+    <span class="doccomment">/// [General_Category=Number](http://unicode.org/reports/tr44/#General_Category_Values).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Example</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let uss = &quot;Mr. Fox jumped. [...] The dog was too lazy.&quot;;</span>
+    <span class="doccomment">/// let us1 = uss.unicode_sentences().collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[&quot;Mr. &quot;, &quot;Fox jumped. &quot;, &quot;The dog was too lazy.&quot;];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;us1[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">unicode_sentences</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UnicodeSentences</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over substrings of `self` separated on</span>
+    <span class="doccomment">/// [UAX#29 sentence boundaries](http://www.unicode.org/reports/tr29/#Sentence_Boundaries).</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// The concatenation of the substrings returned by this function is just the original string.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Example</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let ssbs = &quot;Mr. Fox jumped. [...] The dog was too lazy.&quot;;</span>
+    <span class="doccomment">/// let ssb1 = ssbs.split_sentence_bounds().collect::&lt;Vec&lt;&amp;str&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[&quot;Mr. &quot;, &quot;Fox jumped. &quot;, &quot;[...] &quot;, &quot;The dog was too lazy.&quot;];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;ssb1[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">split_sentence_bounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">USentenceBounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+
+    <span class="doccomment">/// Returns an iterator over substrings of `self`, split on UAX#29 sentence boundaries,</span>
+    <span class="doccomment">/// and their offsets. See `split_sentence_bounds()` for more information.</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// # Example</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// ```</span>
+    <span class="doccomment">/// # use self::unicode_segmentation::UnicodeSegmentation;</span>
+    <span class="doccomment">/// let ssis = &quot;Mr. Fox jumped. [...] The dog was too lazy.&quot;;</span>
+    <span class="doccomment">/// let ssi1 = ssis.split_sentence_bound_indices().collect::&lt;Vec&lt;(usize, &amp;str)&gt;&gt;();</span>
+    <span class="doccomment">/// let b: &amp;[_] = &amp;[(0, &quot;Mr. &quot;), (4, &quot;Fox jumped. &quot;), (16, &quot;[...] &quot;),</span>
+    <span class="doccomment">///                 (22, &quot;The dog was too lazy.&quot;)];</span>
+    <span class="doccomment">///</span>
+    <span class="doccomment">/// assert_eq!(&amp;ssi1[..], b);</span>
+    <span class="doccomment">/// ```</span>
+    <span class="kw">fn</span> <span class="ident">split_sentence_bound_indices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">USentenceBoundIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>;
+}
+
+<span class="kw">impl</span> <span class="ident">UnicodeSegmentation</span> <span class="kw">for</span> <span class="ident">str</span> {
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">graphemes</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">is_extended</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Graphemes</span> {
+        <span class="ident">grapheme</span>::<span class="ident">new_graphemes</span>(<span class="self">self</span>, <span class="ident">is_extended</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">grapheme_indices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">is_extended</span>: <span class="ident">bool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GraphemeIndices</span> {
+        <span class="ident">grapheme</span>::<span class="ident">new_grapheme_indices</span>(<span class="self">self</span>, <span class="ident">is_extended</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">unicode_words</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UnicodeWords</span> {
+        <span class="ident">word</span>::<span class="ident">new_unicode_words</span>(<span class="self">self</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">unicode_word_indices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UnicodeWordIndices</span> {
+        <span class="ident">word</span>::<span class="ident">new_unicode_word_indices</span>(<span class="self">self</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">split_word_bounds</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UWordBounds</span> {
+        <span class="ident">word</span>::<span class="ident">new_word_bounds</span>(<span class="self">self</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">split_word_bound_indices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UWordBoundIndices</span> {
+        <span class="ident">word</span>::<span class="ident">new_word_bound_indices</span>(<span class="self">self</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">unicode_sentences</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UnicodeSentences</span> {
+        <span class="ident">sentence</span>::<span class="ident">new_unicode_sentences</span>(<span class="self">self</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">split_sentence_bounds</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">USentenceBounds</span> {
+        <span class="ident">sentence</span>::<span class="ident">new_sentence_bounds</span>(<span class="self">self</span>)
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">split_sentence_bound_indices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">USentenceBoundIndices</span> {
+        <span class="ident">sentence</span>::<span class="ident">new_sentence_bound_indices</span>(<span class="self">self</span>)
+    }
+}
+</pre></div>
+</section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="unicode_segmentation" data-search-js="../../search-index.js"></div>
+    <script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script></body></html>
\ No newline at end of file
diff --git a/src/unicode_segmentation/sentence.rs.html b/src/unicode_segmentation/sentence.rs.html
new file mode 100644
index 0000000..d4d7fda
--- /dev/null
+++ b/src/unicode_segmentation/sentence.rs.html
@@ -0,0 +1,787 @@
+<!DOCTYPE html><html lang="en"><head><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 `src/sentence.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>sentence.rs - source</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../light.css"  id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><script src="../../crates.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="https://unicode-rs.github.io/unicode-rs_sm.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../unicode_segmentation/index.html'><div class='logo-container'><img src='https://unicode-rs.github.io/unicode-rs_sm.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
+                <a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1">  1</span>
+<span id="2">  2</span>
+<span id="3">  3</span>
+<span id="4">  4</span>
+<span id="5">  5</span>
+<span id="6">  6</span>
+<span id="7">  7</span>
+<span id="8">  8</span>
+<span id="9">  9</span>
+<span id="10"> 10</span>
+<span id="11"> 11</span>
+<span id="12"> 12</span>
+<span id="13"> 13</span>
+<span id="14"> 14</span>
+<span id="15"> 15</span>
+<span id="16"> 16</span>
+<span id="17"> 17</span>
+<span id="18"> 18</span>
+<span id="19"> 19</span>
+<span id="20"> 20</span>
+<span id="21"> 21</span>
+<span id="22"> 22</span>
+<span id="23"> 23</span>
+<span id="24"> 24</span>
+<span id="25"> 25</span>
+<span id="26"> 26</span>
+<span id="27"> 27</span>
+<span id="28"> 28</span>
+<span id="29"> 29</span>
+<span id="30"> 30</span>
+<span id="31"> 31</span>
+<span id="32"> 32</span>
+<span id="33"> 33</span>
+<span id="34"> 34</span>
+<span id="35"> 35</span>
+<span id="36"> 36</span>
+<span id="37"> 37</span>
+<span id="38"> 38</span>
+<span id="39"> 39</span>
+<span id="40"> 40</span>
+<span id="41"> 41</span>
+<span id="42"> 42</span>
+<span id="43"> 43</span>
+<span id="44"> 44</span>
+<span id="45"> 45</span>
+<span id="46"> 46</span>
+<span id="47"> 47</span>
+<span id="48"> 48</span>
+<span id="49"> 49</span>
+<span id="50"> 50</span>
+<span id="51"> 51</span>
+<span id="52"> 52</span>
+<span id="53"> 53</span>
+<span id="54"> 54</span>
+<span id="55"> 55</span>
+<span id="56"> 56</span>
+<span id="57"> 57</span>
+<span id="58"> 58</span>
+<span id="59"> 59</span>
+<span id="60"> 60</span>
+<span id="61"> 61</span>
+<span id="62"> 62</span>
+<span id="63"> 63</span>
+<span id="64"> 64</span>
+<span id="65"> 65</span>
+<span id="66"> 66</span>
+<span id="67"> 67</span>
+<span id="68"> 68</span>
+<span id="69"> 69</span>
+<span id="70"> 70</span>
+<span id="71"> 71</span>
+<span id="72"> 72</span>
+<span id="73"> 73</span>
+<span id="74"> 74</span>
+<span id="75"> 75</span>
+<span id="76"> 76</span>
+<span id="77"> 77</span>
+<span id="78"> 78</span>
+<span id="79"> 79</span>
+<span id="80"> 80</span>
+<span id="81"> 81</span>
+<span id="82"> 82</span>
+<span id="83"> 83</span>
+<span id="84"> 84</span>
+<span id="85"> 85</span>
+<span id="86"> 86</span>
+<span id="87"> 87</span>
+<span id="88"> 88</span>
+<span id="89"> 89</span>
+<span id="90"> 90</span>
+<span id="91"> 91</span>
+<span id="92"> 92</span>
+<span id="93"> 93</span>
+<span id="94"> 94</span>
+<span id="95"> 95</span>
+<span id="96"> 96</span>
+<span id="97"> 97</span>
+<span id="98"> 98</span>
+<span id="99"> 99</span>
+<span id="100">100</span>
+<span id="101">101</span>
+<span id="102">102</span>
+<span id="103">103</span>
+<span id="104">104</span>
+<span id="105">105</span>
+<span id="106">106</span>
+<span id="107">107</span>
+<span id="108">108</span>
+<span id="109">109</span>
+<span id="110">110</span>
+<span id="111">111</span>
+<span id="112">112</span>
+<span id="113">113</span>
+<span id="114">114</span>
+<span id="115">115</span>
+<span id="116">116</span>
+<span id="117">117</span>
+<span id="118">118</span>
+<span id="119">119</span>
+<span id="120">120</span>
+<span id="121">121</span>
+<span id="122">122</span>
+<span id="123">123</span>
+<span id="124">124</span>
+<span id="125">125</span>
+<span id="126">126</span>
+<span id="127">127</span>
+<span id="128">128</span>
+<span id="129">129</span>
+<span id="130">130</span>
+<span id="131">131</span>
+<span id="132">132</span>
+<span id="133">133</span>
+<span id="134">134</span>
+<span id="135">135</span>
+<span id="136">136</span>
+<span id="137">137</span>
+<span id="138">138</span>
+<span id="139">139</span>
+<span id="140">140</span>
+<span id="141">141</span>
+<span id="142">142</span>
+<span id="143">143</span>
+<span id="144">144</span>
+<span id="145">145</span>
+<span id="146">146</span>
+<span id="147">147</span>
+<span id="148">148</span>
+<span id="149">149</span>
+<span id="150">150</span>
+<span id="151">151</span>
+<span id="152">152</span>
+<span id="153">153</span>
+<span id="154">154</span>
+<span id="155">155</span>
+<span id="156">156</span>
+<span id="157">157</span>
+<span id="158">158</span>
+<span id="159">159</span>
+<span id="160">160</span>
+<span id="161">161</span>
+<span id="162">162</span>
+<span id="163">163</span>
+<span id="164">164</span>
+<span id="165">165</span>
+<span id="166">166</span>
+<span id="167">167</span>
+<span id="168">168</span>
+<span id="169">169</span>
+<span id="170">170</span>
+<span id="171">171</span>
+<span id="172">172</span>
+<span id="173">173</span>
+<span id="174">174</span>
+<span id="175">175</span>
+<span id="176">176</span>
+<span id="177">177</span>
+<span id="178">178</span>
+<span id="179">179</span>
+<span id="180">180</span>
+<span id="181">181</span>
+<span id="182">182</span>
+<span id="183">183</span>
+<span id="184">184</span>
+<span id="185">185</span>
+<span id="186">186</span>
+<span id="187">187</span>
+<span id="188">188</span>
+<span id="189">189</span>
+<span id="190">190</span>
+<span id="191">191</span>
+<span id="192">192</span>
+<span id="193">193</span>
+<span id="194">194</span>
+<span id="195">195</span>
+<span id="196">196</span>
+<span id="197">197</span>
+<span id="198">198</span>
+<span id="199">199</span>
+<span id="200">200</span>
+<span id="201">201</span>
+<span id="202">202</span>
+<span id="203">203</span>
+<span id="204">204</span>
+<span id="205">205</span>
+<span id="206">206</span>
+<span id="207">207</span>
+<span id="208">208</span>
+<span id="209">209</span>
+<span id="210">210</span>
+<span id="211">211</span>
+<span id="212">212</span>
+<span id="213">213</span>
+<span id="214">214</span>
+<span id="215">215</span>
+<span id="216">216</span>
+<span id="217">217</span>
+<span id="218">218</span>
+<span id="219">219</span>
+<span id="220">220</span>
+<span id="221">221</span>
+<span id="222">222</span>
+<span id="223">223</span>
+<span id="224">224</span>
+<span id="225">225</span>
+<span id="226">226</span>
+<span id="227">227</span>
+<span id="228">228</span>
+<span id="229">229</span>
+<span id="230">230</span>
+<span id="231">231</span>
+<span id="232">232</span>
+<span id="233">233</span>
+<span id="234">234</span>
+<span id="235">235</span>
+<span id="236">236</span>
+<span id="237">237</span>
+<span id="238">238</span>
+<span id="239">239</span>
+<span id="240">240</span>
+<span id="241">241</span>
+<span id="242">242</span>
+<span id="243">243</span>
+<span id="244">244</span>
+<span id="245">245</span>
+<span id="246">246</span>
+<span id="247">247</span>
+<span id="248">248</span>
+<span id="249">249</span>
+<span id="250">250</span>
+<span id="251">251</span>
+<span id="252">252</span>
+<span id="253">253</span>
+<span id="254">254</span>
+<span id="255">255</span>
+<span id="256">256</span>
+<span id="257">257</span>
+<span id="258">258</span>
+<span id="259">259</span>
+<span id="260">260</span>
+<span id="261">261</span>
+<span id="262">262</span>
+<span id="263">263</span>
+<span id="264">264</span>
+<span id="265">265</span>
+<span id="266">266</span>
+<span id="267">267</span>
+<span id="268">268</span>
+<span id="269">269</span>
+<span id="270">270</span>
+<span id="271">271</span>
+<span id="272">272</span>
+<span id="273">273</span>
+<span id="274">274</span>
+<span id="275">275</span>
+<span id="276">276</span>
+<span id="277">277</span>
+<span id="278">278</span>
+<span id="279">279</span>
+<span id="280">280</span>
+<span id="281">281</span>
+<span id="282">282</span>
+<span id="283">283</span>
+<span id="284">284</span>
+<span id="285">285</span>
+<span id="286">286</span>
+<span id="287">287</span>
+<span id="288">288</span>
+<span id="289">289</span>
+<span id="290">290</span>
+<span id="291">291</span>
+<span id="292">292</span>
+<span id="293">293</span>
+<span id="294">294</span>
+<span id="295">295</span>
+<span id="296">296</span>
+<span id="297">297</span>
+<span id="298">298</span>
+<span id="299">299</span>
+<span id="300">300</span>
+<span id="301">301</span>
+<span id="302">302</span>
+<span id="303">303</span>
+<span id="304">304</span>
+<span id="305">305</span>
+<span id="306">306</span>
+<span id="307">307</span>
+<span id="308">308</span>
+<span id="309">309</span>
+<span id="310">310</span>
+<span id="311">311</span>
+<span id="312">312</span>
+<span id="313">313</span>
+<span id="314">314</span>
+<span id="315">315</span>
+<span id="316">316</span>
+<span id="317">317</span>
+<span id="318">318</span>
+<span id="319">319</span>
+<span id="320">320</span>
+<span id="321">321</span>
+<span id="322">322</span>
+<span id="323">323</span>
+<span id="324">324</span>
+<span id="325">325</span>
+<span id="326">326</span>
+<span id="327">327</span>
+<span id="328">328</span>
+<span id="329">329</span>
+<span id="330">330</span>
+<span id="331">331</span>
+<span id="332">332</span>
+<span id="333">333</span>
+<span id="334">334</span>
+<span id="335">335</span>
+<span id="336">336</span>
+<span id="337">337</span>
+<span id="338">338</span>
+<span id="339">339</span>
+<span id="340">340</span>
+<span id="341">341</span>
+<span id="342">342</span>
+<span id="343">343</span>
+<span id="344">344</span>
+<span id="345">345</span>
+<span id="346">346</span>
+<span id="347">347</span>
+<span id="348">348</span>
+<span id="349">349</span>
+<span id="350">350</span>
+<span id="351">351</span>
+<span id="352">352</span>
+<span id="353">353</span>
+<span id="354">354</span>
+<span id="355">355</span>
+<span id="356">356</span>
+<span id="357">357</span>
+<span id="358">358</span>
+<span id="359">359</span>
+<span id="360">360</span>
+<span id="361">361</span>
+<span id="362">362</span>
+<span id="363">363</span>
+<span id="364">364</span>
+<span id="365">365</span>
+<span id="366">366</span>
+<span id="367">367</span>
+<span id="368">368</span>
+<span id="369">369</span>
+<span id="370">370</span>
+<span id="371">371</span>
+<span id="372">372</span>
+<span id="373">373</span>
+<span id="374">374</span>
+<span id="375">375</span>
+<span id="376">376</span>
+<span id="377">377</span>
+<span id="378">378</span>
+<span id="379">379</span>
+<span id="380">380</span>
+<span id="381">381</span>
+<span id="382">382</span>
+<span id="383">383</span>
+<span id="384">384</span>
+<span id="385">385</span>
+<span id="386">386</span>
+<span id="387">387</span>
+<span id="388">388</span>
+<span id="389">389</span>
+<span id="390">390</span>
+<span id="391">391</span>
+</pre><div class="example-wrap"><pre class="rust ">
+<span class="comment">// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT</span>
+<span class="comment">// file at the top-level directory of this distribution and at</span>
+<span class="comment">// http://rust-lang.org/COPYRIGHT.</span>
+<span class="comment">//</span>
+<span class="comment">// Licensed under the Apache License, Version 2.0 &lt;LICENSE-APACHE or</span>
+<span class="comment">// http://www.apache.org/licenses/LICENSE-2.0&gt; or the MIT license</span>
+<span class="comment">// &lt;LICENSE-MIT or http://opensource.org/licenses/MIT&gt;, at your</span>
+<span class="comment">// option. This file may not be copied, modified, or distributed</span>
+<span class="comment">// except according to those terms.</span>
+
+<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">cmp</span>;
+<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">iter</span>::<span class="ident">Filter</span>;
+
+<span class="comment">// All of the logic for forward iteration over sentences</span>
+<span class="kw">mod</span> <span class="ident">fwd</span> {
+    <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">sentence</span>::<span class="ident">SentenceCat</span>;
+    <span class="kw">use</span> <span class="ident">core</span>::<span class="ident">cmp</span>;
+
+    <span class="comment">// Describe a parsed part of source string as described in this table:</span>
+    <span class="comment">// https://unicode.org/reports/tr29/#Default_Sentence_Boundaries</span>
+    <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
+    <span class="kw">enum</span> <span class="ident">StatePart</span> {
+        <span class="ident">Sot</span>,
+        <span class="ident">Eot</span>,
+        <span class="ident">Other</span>,
+        <span class="ident">CR</span>,
+        <span class="ident">LF</span>,
+        <span class="ident">Sep</span>,
+        <span class="ident">ATerm</span>,
+        <span class="ident">UpperLower</span>,
+        <span class="ident">ClosePlus</span>,
+        <span class="ident">SpPlus</span>,
+        <span class="ident">STerm</span>
+    }
+
+    <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
+    <span class="kw">struct</span> <span class="ident">SentenceBreaksState</span>(<span class="kw">pub</span> [<span class="ident">StatePart</span>; <span class="number">4</span>]);
+
+    <span class="kw">const</span> <span class="ident">INITIAL_STATE</span>: <span class="ident">SentenceBreaksState</span> <span class="op">=</span> <span class="ident">SentenceBreaksState</span>([
+        <span class="ident">StatePart</span>::<span class="ident">Sot</span>,
+        <span class="ident">StatePart</span>::<span class="ident">Sot</span>,
+        <span class="ident">StatePart</span>::<span class="ident">Sot</span>,
+        <span class="ident">StatePart</span>::<span class="ident">Sot</span>
+    ]);
+
+    <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
+    <span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SentenceBreaks</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+        <span class="kw">pub</span> <span class="ident">string</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>,
+        <span class="ident">pos</span>: <span class="ident">usize</span>,
+        <span class="ident">state</span>: <span class="ident">SentenceBreaksState</span>
+    }
+
+    <span class="kw">impl</span> <span class="ident">SentenceBreaksState</span> {
+        <span class="comment">// Attempt to advance the internal state by one part</span>
+        <span class="comment">// Whitespace and some punctutation will be collapsed</span>
+        <span class="kw">fn</span> <span class="ident">next</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">cat</span>: <span class="ident">SentenceCat</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">SentenceBreaksState</span> {
+            <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="self">self</span>;
+            <span class="kw">let</span> <span class="ident">parts</span> <span class="op">=</span> <span class="kw">match</span> (<span class="ident">parts</span>[<span class="number">3</span>], <span class="ident">cat</span>) {
+                (<span class="ident">StatePart</span>::<span class="ident">ClosePlus</span>, <span class="ident">SentenceCat</span>::<span class="ident">SC_Close</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">parts</span>,
+                (<span class="ident">StatePart</span>::<span class="ident">SpPlus</span>, <span class="ident">SentenceCat</span>::<span class="ident">SC_Sp</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">parts</span>,
+                <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> [
+                    <span class="ident">parts</span>[<span class="number">1</span>],
+                    <span class="ident">parts</span>[<span class="number">2</span>],
+                    <span class="ident">parts</span>[<span class="number">3</span>],
+                    <span class="kw">match</span> <span class="ident">cat</span> {
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_CR</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">CR</span>,
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_LF</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">LF</span>,
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_Sep</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">Sep</span>,
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_ATerm</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">ATerm</span>,
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_Upper</span> <span class="op">|</span>
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_Lower</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">UpperLower</span>,
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_Close</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">ClosePlus</span>,
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_Sp</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">SpPlus</span>,
+                        <span class="ident">SentenceCat</span>::<span class="ident">SC_STerm</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">STerm</span>,
+                        <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatePart</span>::<span class="ident">Other</span>
+                    }
+                ]
+            };
+            <span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>)
+        }
+
+        <span class="kw">fn</span> <span class="ident">end</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">SentenceBreaksState</span> {
+            <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="self">self</span>;
+            <span class="ident">SentenceBreaksState</span>([
+                <span class="ident">parts</span>[<span class="number">1</span>],
+                <span class="ident">parts</span>[<span class="number">2</span>],
+                <span class="ident">parts</span>[<span class="number">3</span>],
+                <span class="ident">StatePart</span>::<span class="ident">Eot</span>
+            ])
+        }
+
+        <span class="comment">// Helper function to check if state head matches a single `StatePart`</span>
+        <span class="kw">fn</span> <span class="ident">match1</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">part</span>: <span class="ident">StatePart</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+            <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="self">self</span>;
+            <span class="ident">part</span> <span class="op">=</span><span class="op">=</span> <span class="ident">parts</span>[<span class="number">3</span>]
+        }
+
+        <span class="comment">// Helper function to check if first two `StateParts` in state match</span>
+        <span class="comment">// the given two</span>
+        <span class="kw">fn</span> <span class="ident">match2</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">part1</span>: <span class="ident">StatePart</span>, <span class="ident">part2</span>: <span class="ident">StatePart</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+            <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="self">self</span>;
+            <span class="ident">part1</span> <span class="op">=</span><span class="op">=</span> <span class="ident">parts</span>[<span class="number">2</span>] <span class="op">&amp;&amp;</span> <span class="ident">part2</span> <span class="op">=</span><span class="op">=</span> <span class="ident">parts</span>[<span class="number">3</span>]
+        }
+    }
+
+    <span class="comment">// https://unicode.org/reports/tr29/#SB8</span>
+    <span class="comment">// TODO cache this, it is currently quadratic</span>
+    <span class="kw">fn</span> <span class="ident">match_sb8</span>(<span class="ident">state</span>: <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>, <span class="ident">ahead</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="ident">state</span>;
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">idx</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">parts</span>[<span class="number">3</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">SpPlus</span> { <span class="number">2</span> } <span class="kw">else</span> { <span class="number">3</span> };
+        <span class="kw">if</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ClosePlus</span> { <span class="ident">idx</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span> }
+
+        <span class="kw">if</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ATerm</span> {
+            <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">sentence</span> <span class="kw">as</span> <span class="ident">se</span>;
+
+            <span class="kw">for</span> <span class="ident">next_char</span> <span class="kw">in</span> <span class="ident">ahead</span>.<span class="ident">chars</span>() {
+                <span class="comment">//( ¬(OLetter | Upper | Lower | ParaSep | SATerm) )* Lower</span>
+                <span class="kw">match</span> <span class="ident">se</span>::<span class="ident">sentence_category</span>(<span class="ident">next_char</span>).<span class="number">2</span> {
+                    <span class="ident">se</span>::<span class="ident">SC_Lower</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="bool-val">true</span>,
+                    <span class="ident">se</span>::<span class="ident">SC_OLetter</span> <span class="op">|</span>
+                    <span class="ident">se</span>::<span class="ident">SC_Upper</span> <span class="op">|</span>
+                    <span class="ident">se</span>::<span class="ident">SC_Sep</span> <span class="op">|</span> <span class="ident">se</span>::<span class="ident">SC_CR</span> <span class="op">|</span> <span class="ident">se</span>::<span class="ident">SC_LF</span> <span class="op">|</span>
+                    <span class="ident">se</span>::<span class="ident">SC_STerm</span> <span class="op">|</span> <span class="ident">se</span>::<span class="ident">SC_ATerm</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="bool-val">false</span>,
+                    <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">continue</span>
+                }
+            }
+        }
+
+        <span class="bool-val">false</span>
+    }
+
+    <span class="comment">// https://unicode.org/reports/tr29/#SB8a</span>
+    <span class="kw">fn</span> <span class="ident">match_sb8a</span>(<span class="ident">state</span>: <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="comment">// SATerm Close* Sp*</span>
+        <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="ident">state</span>;
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">idx</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">parts</span>[<span class="number">3</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">SpPlus</span> { <span class="number">2</span> } <span class="kw">else</span> { <span class="number">3</span> };
+        <span class="kw">if</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ClosePlus</span> { <span class="ident">idx</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span> }
+        <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">STerm</span> <span class="op">|</span><span class="op">|</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ATerm</span>
+    }
+
+    <span class="comment">// https://unicode.org/reports/tr29/#SB9</span>
+    <span class="kw">fn</span> <span class="ident">match_sb9</span>(<span class="ident">state</span>: <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="comment">// SATerm Close*</span>
+        <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="ident">state</span>;
+        <span class="kw">let</span> <span class="ident">idx</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">parts</span>[<span class="number">3</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ClosePlus</span> { <span class="number">2</span> } <span class="kw">else</span> { <span class="number">3</span> };
+        <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">STerm</span> <span class="op">|</span><span class="op">|</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ATerm</span>
+    }
+
+    <span class="comment">// https://unicode.org/reports/tr29/#SB11</span>
+    <span class="kw">fn</span> <span class="ident">match_sb11</span>(<span class="ident">state</span>: <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="comment">// SATerm Close* Sp* ParaSep?</span>
+        <span class="kw">let</span> <span class="kw-2">&amp;</span><span class="ident">SentenceBreaksState</span>(<span class="ident">parts</span>) <span class="op">=</span> <span class="ident">state</span>;
+        <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">idx</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">parts</span>[<span class="number">3</span>] {
+            <span class="ident">StatePart</span>::<span class="ident">Sep</span> <span class="op">|</span>
+            <span class="ident">StatePart</span>::<span class="ident">CR</span> <span class="op">|</span>
+            <span class="ident">StatePart</span>::<span class="ident">LF</span> <span class="op">=</span><span class="op">&gt;</span> <span class="number">2</span>,
+            <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="number">3</span>
+        };
+
+        <span class="kw">if</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">SpPlus</span> { <span class="ident">idx</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span> }
+        <span class="kw">if</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ClosePlus</span> { <span class="ident">idx</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span>}
+
+        <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">STerm</span> <span class="op">|</span><span class="op">|</span> <span class="ident">parts</span>[<span class="ident">idx</span>] <span class="op">=</span><span class="op">=</span> <span class="ident">StatePart</span>::<span class="ident">ATerm</span>
+    }
+
+    <span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Iterator</span> <span class="kw">for</span> <span class="ident">SentenceBreaks</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+        <span class="comment">// Returns the index of the character which follows a break</span>
+        <span class="kw">type</span> <span class="ident">Item</span> <span class="op">=</span> <span class="ident">usize</span>;
+
+        <span class="attribute">#[<span class="ident">inline</span>]</span>
+        <span class="kw">fn</span> <span class="ident">size_hint</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">usize</span>, <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>) {
+            <span class="kw">let</span> <span class="ident">slen</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">string</span>.<span class="ident">len</span>();
+            <span class="comment">// A sentence could be one character</span>
+            (<span class="ident">cmp</span>::<span class="ident">min</span>(<span class="ident">slen</span>, <span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="ident">slen</span> <span class="op">+</span> <span class="number">1</span>))
+        }
+
+        <span class="attribute">#[<span class="ident">inline</span>]</span>
+        <span class="kw">fn</span> <span class="ident">next</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span> {
+            <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">sentence</span> <span class="kw">as</span> <span class="ident">se</span>;
+
+            <span class="kw">for</span> <span class="ident">next_char</span> <span class="kw">in</span> <span class="self">self</span>.<span class="ident">string</span>[<span class="self">self</span>.<span class="ident">pos</span>..].<span class="ident">chars</span>() {
+                <span class="kw">let</span> <span class="ident">position_before</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">pos</span>;
+                <span class="kw">let</span> <span class="ident">state_before</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">clone</span>();
+
+                <span class="kw">let</span> <span class="ident">next_cat</span> <span class="op">=</span> <span class="ident">se</span>::<span class="ident">sentence_category</span>(<span class="ident">next_char</span>).<span class="number">2</span>;
+
+                <span class="self">self</span>.<span class="ident">pos</span> <span class="op">+</span><span class="op">=</span> <span class="ident">next_char</span>.<span class="ident">len_utf8</span>();
+                <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">next</span>(<span class="ident">next_cat</span>);
+
+                <span class="kw">match</span> <span class="ident">next_cat</span> {
+                    <span class="comment">// SB1 https://unicode.org/reports/tr29/#SB1</span>
+                    <span class="kw">_</span> <span class="kw">if</span> <span class="ident">state_before</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">Sot</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">return</span> <span class="prelude-val">Some</span>(<span class="ident">position_before</span>),
+
+                    <span class="comment">// SB2 is handled when inner iterator (chars) is finished</span>
+
+                    <span class="comment">// SB3 https://unicode.org/reports/tr29/#SB3</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_LF</span> <span class="kw">if</span> <span class="ident">state_before</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">CR</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">continue</span>,
+
+                    <span class="comment">// SB4 https://unicode.org/reports/tr29/#SB4</span>
+                    <span class="kw">_</span> <span class="kw">if</span> <span class="ident">state_before</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">Sep</span>)
+                        <span class="op">|</span><span class="op">|</span> <span class="ident">state_before</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">CR</span>)
+                        <span class="op">|</span><span class="op">|</span> <span class="ident">state_before</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">LF</span>)
+                    <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="prelude-val">Some</span>(<span class="ident">position_before</span>),
+
+                    <span class="comment">// SB5 https://unicode.org/reports/tr29/#SB5</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Extend</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Format</span> <span class="op">=</span><span class="op">&gt;</span> <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="ident">state_before</span>,
+
+                    <span class="comment">// SB6 https://unicode.org/reports/tr29/#SB6</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Numeric</span> <span class="kw">if</span> <span class="ident">state_before</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">ATerm</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">continue</span>,
+
+                    <span class="comment">// SB7 https://unicode.org/reports/tr29/#SB7</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Upper</span> <span class="kw">if</span> <span class="ident">state_before</span>.<span class="ident">match2</span>(<span class="ident">StatePart</span>::<span class="ident">UpperLower</span>, <span class="ident">StatePart</span>::<span class="ident">ATerm</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">continue</span>,
+
+                    <span class="comment">// SB8 https://unicode.org/reports/tr29/#SB8</span>
+                    <span class="kw">_</span> <span class="kw">if</span> <span class="ident">match_sb8</span>(<span class="kw-2">&amp;</span><span class="ident">state_before</span>, <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">string</span>[<span class="ident">position_before</span>..]) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">continue</span>,
+
+                    <span class="comment">// SB8a https://unicode.org/reports/tr29/#SB8a</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_SContinue</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_STerm</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_ATerm</span> <span class="kw">if</span> <span class="ident">match_sb8a</span>(<span class="kw-2">&amp;</span><span class="ident">state_before</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">continue</span>,
+
+                    <span class="comment">// SB9 https://unicode.org/reports/tr29/#SB9</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Close</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Sp</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Sep</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_CR</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_LF</span> <span class="kw">if</span> <span class="ident">match_sb9</span>(<span class="kw-2">&amp;</span><span class="ident">state_before</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">continue</span>,
+
+                    <span class="comment">// SB10 https://unicode.org/reports/tr29/#SB10</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Sp</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_Sep</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_CR</span> <span class="op">|</span>
+                    <span class="ident">SentenceCat</span>::<span class="ident">SC_LF</span> <span class="kw">if</span> <span class="ident">match_sb8a</span>(<span class="kw-2">&amp;</span><span class="ident">state_before</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">continue</span>,
+
+                    <span class="comment">// SB11 https://unicode.org/reports/tr29/#SB11</span>
+                    <span class="kw">_</span> <span class="kw">if</span> <span class="ident">match_sb11</span>(<span class="kw-2">&amp;</span><span class="ident">state_before</span>) <span class="op">=</span><span class="op">&gt;</span>
+                        <span class="kw">return</span> <span class="prelude-val">Some</span>(<span class="ident">position_before</span>),
+
+                    <span class="comment">// SB998 https://unicode.org/reports/tr29/#SB998</span>
+                    <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">continue</span>
+                }
+            }
+
+            <span class="comment">// SB2 https://unicode.org/reports/tr29/#SB2</span>
+            <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">Sot</span>) {
+                <span class="prelude-val">None</span>
+            } <span class="kw">else</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">match1</span>(<span class="ident">StatePart</span>::<span class="ident">Eot</span>) {
+                <span class="prelude-val">None</span>
+            } <span class="kw">else</span> {
+                <span class="self">self</span>.<span class="ident">state</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">end</span>();
+                <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">pos</span>)
+            }
+        }
+    }
+
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_sentence_breaks</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="ident">source</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">SentenceBreaks</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+        <span class="ident">SentenceBreaks</span> { <span class="ident">string</span>: <span class="ident">source</span>, <span class="ident">pos</span>: <span class="number">0</span>, <span class="ident">state</span>: <span class="ident">INITIAL_STATE</span> }
+    }
+
+}
+
+<span class="doccomment">/// An iterator over the substrings of a string which, after splitting the string on</span>
+<span class="doccomment">/// [sentence boundaries](http://www.unicode.org/reports/tr29/#Sentence_Boundaries),</span>
+<span class="doccomment">/// contain any characters with the</span>
+<span class="doccomment">/// [Alphabetic](http://unicode.org/reports/tr44/#Alphabetic)</span>
+<span class="doccomment">/// property, or with</span>
+<span class="doccomment">/// [General_Category=Number](http://unicode.org/reports/tr44/#General_Category_Values).</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// This struct is created by the [`unicode_sentences`] method on the [`UnicodeSegmentation`]</span>
+<span class="doccomment">/// trait. See its documentation for more.</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// [`unicode_sentences`]: trait.UnicodeSegmentation.html#tymethod.unicode_sentences</span>
+<span class="doccomment">/// [`UnicodeSegmentation`]: trait.UnicodeSegmentation.html</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
+<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">UnicodeSentences</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="ident">inner</span>: <span class="ident">Filter</span><span class="op">&lt;</span><span class="ident">USentenceBounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>, <span class="kw">fn</span>(<span class="op">&amp;&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span><span class="op">&gt;</span>,
+}
+
+<span class="doccomment">/// External iterator for a string&#39;s</span>
+<span class="doccomment">/// [sentence boundaries](http://www.unicode.org/reports/tr29/#Sentence_Boundaries).</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// This struct is created by the [`split_sentence_bounds`] method on the [`UnicodeSegmentation`]</span>
+<span class="doccomment">/// trait. See its documentation for more.</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// [`split_sentence_bounds`]: trait.UnicodeSegmentation.html#tymethod.split_sentence_bounds</span>
+<span class="doccomment">/// [`UnicodeSegmentation`]: trait.UnicodeSegmentation.html</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
+<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">USentenceBounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="ident">iter</span>: <span class="ident">fwd</span>::<span class="ident">SentenceBreaks</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>,
+    <span class="ident">sentence_start</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>
+}
+
+<span class="doccomment">/// External iterator for sentence boundaries and byte offsets.</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// This struct is created by the [`split_sentence_bound_indices`] method on the</span>
+<span class="doccomment">/// [`UnicodeSegmentation`] trait. See its documentation for more.</span>
+<span class="doccomment">///</span>
+<span class="doccomment">/// [`split_sentence_bound_indices`]: trait.UnicodeSegmentation.html#tymethod.split_sentence_bound_indices</span>
+<span class="doccomment">/// [`UnicodeSegmentation`]: trait.UnicodeSegmentation.html</span>
+<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
+<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">USentenceBoundIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="ident">start_offset</span>: <span class="ident">usize</span>,
+    <span class="ident">iter</span>: <span class="ident">USentenceBounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>,
+}
+
+<span class="attribute">#[<span class="ident">inline</span>]</span>
+<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_sentence_bounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="ident">source</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">USentenceBounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="ident">USentenceBounds</span> {
+        <span class="ident">iter</span>: <span class="ident">fwd</span>::<span class="ident">new_sentence_breaks</span>(<span class="ident">source</span>),
+        <span class="ident">sentence_start</span>: <span class="prelude-val">None</span>
+    }
+}
+
+<span class="attribute">#[<span class="ident">inline</span>]</span>
+<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_sentence_bound_indices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="ident">source</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">USentenceBoundIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="ident">USentenceBoundIndices</span> {
+        <span class="ident">start_offset</span>: <span class="ident">source</span>.<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="ident">usize</span>,
+        <span class="ident">iter</span>: <span class="ident">new_sentence_bounds</span>(<span class="ident">source</span>)
+    }
+}
+
+<span class="attribute">#[<span class="ident">inline</span>]</span>
+<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_unicode_sentences</span><span class="op">&lt;</span><span class="lifetime">&#39;b</span><span class="op">&gt;</span>(<span class="ident">s</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;b</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UnicodeSentences</span><span class="op">&lt;</span><span class="lifetime">&#39;b</span><span class="op">&gt;</span> {
+    <span class="kw">use</span> <span class="kw">super</span>::<span class="ident">UnicodeSegmentation</span>;
+    <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">tables</span>::<span class="ident">util</span>::<span class="ident">is_alphanumeric</span>;
+
+    <span class="kw">fn</span> <span class="ident">has_alphanumeric</span>(<span class="ident">s</span>: <span class="op">&amp;&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> { <span class="ident">s</span>.<span class="ident">chars</span>().<span class="ident">any</span>(<span class="op">|</span><span class="ident">c</span><span class="op">|</span> <span class="ident">is_alphanumeric</span>(<span class="ident">c</span>)) }
+    <span class="kw">let</span> <span class="ident">has_alphanumeric</span>: <span class="kw">fn</span>(<span class="op">&amp;&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> <span class="op">=</span> <span class="ident">has_alphanumeric</span>; <span class="comment">// coerce to fn pointer</span>
+
+    <span class="ident">UnicodeSentences</span> { <span class="ident">inner</span>: <span class="ident">s</span>.<span class="ident">split_sentence_bounds</span>().<span class="ident">filter</span>(<span class="ident">has_alphanumeric</span>) }
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Iterator</span> <span class="kw">for</span> <span class="ident">UnicodeSentences</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="kw">type</span> <span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>;
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">next</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span><span class="op">&gt;</span> { <span class="self">self</span>.<span class="ident">inner</span>.<span class="ident">next</span>() }
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Iterator</span> <span class="kw">for</span> <span class="ident">USentenceBounds</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="kw">type</span> <span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>;
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">size_hint</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">usize</span>, <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>) {
+        <span class="kw">let</span> (<span class="ident">lower</span>, <span class="ident">upper</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">size_hint</span>();
+        (<span class="ident">cmp</span>::<span class="ident">max</span>(<span class="number">0</span>, <span class="ident">lower</span> <span class="op">-</span> <span class="number">1</span>), <span class="ident">upper</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">cmp</span>::<span class="ident">max</span>(<span class="number">0</span>, <span class="ident">u</span> <span class="op">-</span> <span class="number">1</span>)))
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">next</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span><span class="op">&gt;</span> {
+        <span class="kw">if</span> <span class="self">self</span>.<span class="ident">sentence_start</span> <span class="op">=</span><span class="op">=</span> <span class="prelude-val">None</span> {
+            <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">start_pos</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">next</span>() {
+                <span class="self">self</span>.<span class="ident">sentence_start</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">start_pos</span>)
+            } <span class="kw">else</span> {
+                <span class="kw">return</span> <span class="prelude-val">None</span>
+            }
+        }
+
+        <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">break_pos</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">next</span>() {
+            <span class="kw">let</span> <span class="ident">start_pos</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">sentence_start</span>.<span class="ident">unwrap</span>();
+            <span class="kw">let</span> <span class="ident">sentence</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">string</span>[<span class="ident">start_pos</span>..<span class="ident">break_pos</span>];
+            <span class="self">self</span>.<span class="ident">sentence_start</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">break_pos</span>);
+            <span class="prelude-val">Some</span>(<span class="ident">sentence</span>)
+        } <span class="kw">else</span> {
+            <span class="prelude-val">None</span>
+        }
+    }
+}
+
+<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Iterator</span> <span class="kw">for</span> <span class="ident">USentenceBoundIndices</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
+    <span class="kw">type</span> <span class="ident">Item</span> <span class="op">=</span> (<span class="ident">usize</span>, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>);
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">next</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span>(<span class="ident">usize</span>, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>)<span class="op">&gt;</span> {
+        <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">next</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> (<span class="ident">s</span>.<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="ident">usize</span> <span class="op">-</span> <span class="self">self</span>.<span class="ident">start_offset</span>, <span class="ident">s</span>))
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">size_hint</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">usize</span>, <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>) {
+        <span class="self">self</span>.<span class="ident">iter</span>.<span class="ident">size_hint</span>()
+    }
+}
+</pre></div>
+</section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="unicode_segmentation" data-search-js="../../search-index.js"></div>
+    <script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script></body></html>
\ No newline at end of file
diff --git a/src/unicode_segmentation/tables.rs.html b/src/unicode_segmentation/tables.rs.html
new file mode 100644
index 0000000..fe07690
--- /dev/null
+++ b/src/unicode_segmentation/tables.rs.html
@@ -0,0 +1,5181 @@
+<!DOCTYPE html><html lang="en"><head><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 `src/tables.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>tables.rs - source</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../light.css"  id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><script src="../../crates.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="https://unicode-rs.github.io/unicode-rs_sm.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../unicode_segmentation/index.html'><div class='logo-container'><img src='https://unicode-rs.github.io/unicode-rs_sm.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
+                <a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1">   1</span>
+<span id="2">   2</span>
+<span id="3">   3</span>
+<span id="4">   4</span>
+<span id="5">   5</span>
+<span id="6">   6</span>
+<span id="7">   7</span>
+<span id="8">   8</span>
+<span id="9">   9</span>
+<span id="10">  10</span>
+<span id="11">  11</span>
+<span id="12">  12</span>
+<span id="13">  13</span>
+<span id="14">  14</span>
+<span id="15">  15</span>
+<span id="16">  16</span>
+<span id="17">  17</span>
+<span id="18">  18</span>
+<span id="19">  19</span>
+<span id="20">  20</span>
+<span id="21">  21</span>
+<span id="22">  22</span>
+<span id="23">  23</span>
+<span id="24">  24</span>
+<span id="25">  25</span>
+<span id="26">  26</span>
+<span id="27">  27</span>
+<span id="28">  28</span>
+<span id="29">  29</span>
+<span id="30">  30</span>
+<span id="31">  31</span>
+<span id="32">  32</span>
+<span id="33">  33</span>
+<span id="34">  34</span>
+<span id="35">  35</span>
+<span id="36">  36</span>
+<span id="37">  37</span>
+<span id="38">  38</span>
+<span id="39">  39</span>
+<span id="40">  40</span>
+<span id="41">  41</span>
+<span id="42">  42</span>
+<span id="43">  43</span>
+<span id="44">  44</span>
+<span id="45">  45</span>
+<span id="46">  46</span>
+<span id="47">  47</span>
+<span id="48">  48</span>
+<span id="49">  49</span>
+<span id="50">  50</span>
+<span id="51">  51</span>
+<span id="52">  52</span>
+<span id="53">  53</span>
+<span id="54">  54</span>
+<span id="55">  55</span>
+<span id="56">  56</span>
+<span id="57">  57</span>
+<span id="58">  58</span>
+<span id="59">  59</span>
+<span id="60">  60</span>
+<span id="61">  61</span>
+<span id="62">  62</span>
+<span id="63">  63</span>
+<span id="64">  64</span>
+<span id="65">  65</span>
+<span id="66">  66</span>
+<span id="67">  67</span>
+<span id="68">  68</span>
+<span id="69">  69</span>
+<span id="70">  70</span>
+<span id="71">  71</span>
+<span id="72">  72</span>
+<span id="73">  73</span>
+<span id="74">  74</span>
+<span id="75">  75</span>
+<span id="76">  76</span>
+<span id="77">  77</span>
+<span id="78">  78</span>
+<span id="79">  79</span>
+<span id="80">  80</span>
+<span id="81">  81</span>
+<span id="82">  82</span>
+<span id="83">  83</span>
+<span id="84">  84</span>
+<span id="85">  85</span>
+<span id="86">  86</span>
+<span id="87">  87</span>
+<span id="88">  88</span>
+<span id="89">  89</span>
+<span id="90">  90</span>
+<span id="91">  91</span>
+<span id="92">  92</span>
+<span id="93">  93</span>
+<span id="94">  94</span>
+<span id="95">  95</span>
+<span id="96">  96</span>
+<span id="97">  97</span>
+<span id="98">  98</span>
+<span id="99">  99</span>
+<span id="100"> 100</span>
+<span id="101"> 101</span>
+<span id="102"> 102</span>
+<span id="103"> 103</span>
+<span id="104"> 104</span>
+<span id="105"> 105</span>
+<span id="106"> 106</span>
+<span id="107"> 107</span>
+<span id="108"> 108</span>
+<span id="109"> 109</span>
+<span id="110"> 110</span>
+<span id="111"> 111</span>
+<span id="112"> 112</span>
+<span id="113"> 113</span>
+<span id="114"> 114</span>
+<span id="115"> 115</span>
+<span id="116"> 116</span>
+<span id="117"> 117</span>
+<span id="118"> 118</span>
+<span id="119"> 119</span>
+<span id="120"> 120</span>
+<span id="121"> 121</span>
+<span id="122"> 122</span>
+<span id="123"> 123</span>
+<span id="124"> 124</span>
+<span id="125"> 125</span>
+<span id="126"> 126</span>
+<span id="127"> 127</span>
+<span id="128"> 128</span>
+<span id="129"> 129</span>
+<span id="130"> 130</span>
+<span id="131"> 131</span>
+<span id="132"> 132</span>
+<span id="133"> 133</span>
+<span id="134"> 134</span>
+<span id="135"> 135</span>
+<span id="136"> 136</span>
+<span id="137"> 137</span>
+<span id="138"> 138</span>
+<span id="139"> 139</span>
+<span id="140"> 140</span>
+<span id="141"> 141</span>
+<span id="142"> 142</span>
+<span id="143"> 143</span>
+<span id="144"> 144</span>
+<span id="145"> 145</span>
+<span id="146"> 146</span>
+<span id="147"> 147</span>
+<span id="148"> 148</span>
+<span id="149"> 149</span>
+<span id="150"> 150</span>
+<span id="151"> 151</span>
+<span id="152"> 152</span>
+<span id="153"> 153</span>
+<span id="154"> 154</span>
+<span id="155"> 155</span>
+<span id="156"> 156</span>
+<span id="157"> 157</span>
+<span id="158"> 158</span>
+<span id="159"> 159</span>
+<span id="160"> 160</span>
+<span id="161"> 161</span>
+<span id="162"> 162</span>
+<span id="163"> 163</span>
+<span id="164"> 164</span>
+<span id="165"> 165</span>
+<span id="166"> 166</span>
+<span id="167"> 167</span>
+<span id="168"> 168</span>
+<span id="169"> 169</span>
+<span id="170"> 170</span>
+<span id="171"> 171</span>
+<span id="172"> 172</span>
+<span id="173"> 173</span>
+<span id="174"> 174</span>
+<span id="175"> 175</span>
+<span id="176"> 176</span>
+<span id="177"> 177</span>
+<span id="178"> 178</span>
+<span id="179"> 179</span>
+<span id="180"> 180</span>
+<span id="181"> 181</span>
+<span id="182"> 182</span>
+<span id="183"> 183</span>
+<span id="184"> 184</span>
+<span id="185"> 185</span>
+<span id="186"> 186</span>
+<span id="187"> 187</span>
+<span id="188"> 188</span>
+<span id="189"> 189</span>
+<span id="190"> 190</span>
+<span id="191"> 191</span>
+<span id="192"> 192</span>
+<span id="193"> 193</span>
+<span id="194"> 194</span>
+<span id="195"> 195</span>
+<span id="196"> 196</span>
+<span id="197"> 197</span>
+<span id="198"> 198</span>
+<span id="199"> 199</span>
+<span id="200"> 200</span>
+<span id="201"> 201</span>
+<span id="202"> 202</span>
+<span id="203"> 203</span>
+<span id="204"> 204</span>
+<span id="205"> 205</span>
+<span id="206"> 206</span>
+<span id="207"> 207</span>
+<span id="208"> 208</span>
+<span id="209"> 209</span>
+<span id="210"> 210</span>
+<span id="211"> 211</span>
+<span id="212"> 212</span>
+<span id="213"> 213</span>
+<span id="214"> 214</span>
+<span id="215"> 215</span>
+<span id="216"> 216</span>
+<span id="217"> 217</span>
+<span id="218"> 218</span>
+<span id="219"> 219</span>
+<span id="220"> 220</span>
+<span id="221"> 221</span>
+<span id="222"> 222</span>
+<span id="223"> 223</span>
+<span id="224"> 224</span>
+<span id="225"> 225</span>
+<span id="226"> 226</span>
+<span id="227"> 227</span>
+<span id="228"> 228</span>
+<span id="229"> 229</span>
+<span id="230"> 230</span>
+<span id="231"> 231</span>
+<span id="232"> 232</span>
+<span id="233"> 233</span>
+<span id="234"> 234</span>
+<span id="235"> 235</span>
+<span id="236"> 236</span>
+<span id="237"> 237</span>
+<span id="238"> 238</span>
+<span id="239"> 239</span>
+<span id="240"> 240</span>
+<span id="241"> 241</span>
+<span id="242"> 242</span>
+<span id="243"> 243</span>
+<span id="244"> 244</span>
+<span id="245"> 245</span>
+<span id="246"> 246</span>
+<span id="247"> 247</span>
+<span id="248"> 248</span>
+<span id="249"> 249</span>
+<span id="250"> 250</span>
+<span id="251"> 251</span>
+<span id="252"> 252</span>
+<span id="253"> 253</span>
+<span id="254"> 254</span>
+<span id="255"> 255</span>
+<span id="256"> 256</span>
+<span id="257"> 257</span>
+<span id="258"> 258</span>
+<span id="259"> 259</span>
+<span id="260"> 260</span>
+<span id="261"> 261</span>
+<span id="262"> 262</span>
+<span id="263"> 263</span>
+<span id="264"> 264</span>
+<span id="265"> 265</span>
+<span id="266"> 266</span>
+<span id="267"> 267</span>
+<span id="268"> 268</span>
+<span id="269"> 269</span>
+<span id="270"> 270</span>
+<span id="271"> 271</span>
+<span id="272"> 272</span>
+<span id="273"> 273</span>
+<span id="274"> 274</span>
+<span id="275"> 275</span>
+<span id="276"> 276</span>
+<span id="277"> 277</span>
+<span id="278"> 278</span>
+<span id="279"> 279</span>
+<span id="280"> 280</span>
+<span id="281"> 281</span>
+<span id="282"> 282</span>
+<span id="283"> 283</span>
+<span id="284"> 284</span>
+<span id="285"> 285</span>
+<span id="286"> 286</span>
+<span id="287"> 287</span>
+<span id="288"> 288</span>
+<span id="289"> 289</span>
+<span id="290"> 290</span>
+<span id="291"> 291</span>
+<span id="292"> 292</span>
+<span id="293"> 293</span>
+<span id="294"> 294</span>
+<span id="295"> 295</span>
+<span id="296"> 296</span>
+<span id="297"> 297</span>
+<span id="298"> 298</span>
+<span id="299"> 299</span>
+<span id="300"> 300</span>
+<span id="301"> 301</span>
+<span id="302"> 302</span>
+<span id="303"> 303</span>
+<span id="304"> 304</span>
+<span id="305"> 305</span>
+<span id="306"> 306</span>
+<span id="307"> 307</span>
+<span id="308"> 308</span>
+<span id="309"> 309</span>
+<span id="310"> 310</span>
+<span id="311"> 311</span>
+<span id="312"> 312</span>
+<span id="313"> 313</span>
+<span id="314"> 314</span>
+<span id="315"> 315</span>
+<span id="316"> 316</span>
+<span id="317"> 317</span>
+<span id="318"> 318</span>
+<span id="319"> 319</span>
+<span id="320"> 320</span>
+<span id="321"> 321</span>
+<span id="322"> 322</span>
+<span id="323"> 323</span>
+<span id="324"> 324</span>
+<span id="325"> 325</span>
+<span id="326"> 326</span>
+<span id="327"> 327</span>
+<span id="328"> 328</span>
+<span id="329"> 329</span>
+<span id="330"> 330</span>
+<span id="331"> 331</span>
+<span id="332"> 332</span>
+<span id="333"> 333</span>
+<span id="334"> 334</span>
+<span id="335"> 335</span>
+<span id="336"> 336</span>
+<span id="337"> 337</span>
+<span id="338"> 338</span>
+<span id="339"> 339</span>
+<span id="340"> 340</span>
+<span id="341"> 341</span>
+<span id="342"> 342</span>
+<span id="343"> 343</span>
+<span id="344"> 344</span>
+<span id="345"> 345</span>
+<span id="346"> 346</span>
+<span id="347"> 347</span>
+<span id="348"> 348</span>
+<span id="349"> 349</span>
+<span id="350"> 350</span>
+<span id="351"> 351</span>
+<span id="352"> 352</span>
+<span id="353"> 353</span>
+<span id="354"> 354</span>
+<span id="355"> 355</span>
+<span id="356"> 356</span>
+<span id="357"> 357</span>
+<span id="358"> 358</span>
+<span id="359"> 359</span>
+<span id="360"> 360</span>
+<span id="361"> 361</span>
+<span id="362"> 362</span>
+<span id="363"> 363</span>
+<span id="364"> 364</span>
+<span id="365"> 365</span>
+<span id="366"> 366</span>
+<span id="367"> 367</span>
+<span id="368"> 368</span>
+<span id="369"> 369</span>
+<span id="370"> 370</span>
+<span id="371"> 371</span>
+<span id="372"> 372</span>
+<span id="373"> 373</span>
+<span id="374"> 374</span>
+<span id="375"> 375</span>
+<span id="376"> 376</span>
+<span id="377"> 377</span>
+<span id="378"> 378</span>
+<span id="379"> 379</span>
+<span id="380"> 380</span>
+<span id="381"> 381</span>
+<span id="382"> 382</span>
+<span id="383"> 383</span>
+<span id="384"> 384</span>
+<span id="385"> 385</span>
+<span id="386"> 386</span>
+<span id="387"> 387</span>
+<span id="388"> 388</span>
+<span id="389"> 389</span>
+<span id="390"> 390</span>
+<span id="391"> 391</span>
+<span id="392"> 392</span>
+<span id="393"> 393</span>
+<span id="394"> 394</span>
+<span id="395"> 395</span>
+<span id="396"> 396</span>
+<span id="397"> 397</span>
+<span id="398"> 398</span>
+<span id="399"> 399</span>
+<span id="400"> 400</span>
+<span id="401"> 401</span>
+<span id="402"> 402</span>
+<span id="403"> 403</span>
+<span id="404"> 404</span>
+<span id="405"> 405</span>
+<span id="406"> 406</span>
+<span id="407"> 407</span>
+<span id="408"> 408</span>
+<span id="409"> 409</span>
+<span id="410"> 410</span>
+<span id="411"> 411</span>
+<span id="412"> 412</span>
+<span id="413"> 413</span>
+<span id="414"> 414</span>
+<span id="415"> 415</span>
+<span id="416"> 416</span>
+<span id="417"> 417</span>
+<span id="418"> 418</span>
+<span id="419"> 419</span>
+<span id="420"> 420</span>
+<span id="421"> 421</span>
+<span id="422"> 422</span>
+<span id="423"> 423</span>
+<span id="424"> 424</span>
+<span id="425"> 425</span>
+<span id="426"> 426</span>
+<span id="427"> 427</span>
+<span id="428"> 428</span>
+<span id="429"> 429</span>
+<span id="430"> 430</span>
+<span id="431"> 431</span>
+<span id="432"> 432</span>
+<span id="433"> 433</span>
+<span id="434"> 434</span>
+<span id="435"> 435</span>
+<span id="436"> 436</span>
+<span id="437"> 437</span>
+<span id="438"> 438</span>
+<span id="439"> 439</span>
+<span id="440"> 440</span>
+<span id="441"> 441</span>
+<span id="442"> 442</span>
+<span id="443"> 443</span>
+<span id="444"> 444</span>
+<span id="445"> 445</span>
+<span id="446"> 446</span>
+<span id="447"> 447</span>
+<span id="448"> 448</span>
+<span id="449"> 449</span>
+<span id="450"> 450</span>
+<span id="451"> 451</span>
+<span id="452"> 452</span>
+<span id="453"> 453</span>
+<span id="454"> 454</span>
+<span id="455"> 455</span>
+<span id="456"> 456</span>
+<span id="457"> 457</span>
+<span id="458"> 458</span>
+<span id="459"> 459</span>
+<span id="460"> 460</span>
+<span id="461"> 461</span>
+<span id="462"> 462</span>
+<span id="463"> 463</span>
+<span id="464"> 464</span>
+<span id="465"> 465</span>
+<span id="466"> 466</span>
+<span id="467"> 467</span>
+<span id="468"> 468</span>
+<span id="469"> 469</span>
+<span id="470"> 470</span>
+<span id="471"> 471</span>
+<span id="472"> 472</span>
+<span id="473"> 473</span>
+<span id="474"> 474</span>
+<span id="475"> 475</span>
+<span id="476"> 476</span>
+<span id="477"> 477</span>
+<span id="478"> 478</span>
+<span id="479"> 479</span>
+<span id="480"> 480</span>
+<span id="481"> 481</span>
+<span id="482"> 482</span>
+<span id="483"> 483</span>
+<span id="484"> 484</span>
+<span id="485"> 485</span>
+<span id="486"> 486</span>
+<span id="487"> 487</span>
+<span id="488"> 488</span>
+<span id="489"> 489</span>
+<span id="490"> 490</span>
+<span id="491"> 491</span>
+<span id="492"> 492</span>
+<span id="493"> 493</span>
+<span id="494"> 494</span>
+<span id="495"> 495</span>
+<span id="496"> 496</span>
+<span id="497"> 497</span>
+<span id="498"> 498</span>
+<span id="499"> 499</span>
+<span id="500"> 500</span>
+<span id="501"> 501</span>
+<span id="502"> 502</span>
+<span id="503"> 503</span>
+<span id="504"> 504</span>
+<span id="505"> 505</span>
+<span id="506"> 506</span>
+<span id="507"> 507</span>
+<span id="508"> 508</span>
+<span id="509"> 509</span>
+<span id="510"> 510</span>
+<span id="511"> 511</span>
+<span id="512"> 512</span>
+<span id="513"> 513</span>
+<span id="514"> 514</span>
+<span id="515"> 515</span>
+<span id="516"> 516</span>
+<span id="517"> 517</span>
+<span id="518"> 518</span>
+<span id="519"> 519</span>
+<span id="520"> 520</span>
+<span id="521"> 521</span>
+<span id="522"> 522</span>
+<span id="523"> 523</span>
+<span id="524"> 524</span>
+<span id="525"> 525</span>
+<span id="526"> 526</span>
+<span id="527"> 527</span>
+<span id="528"> 528</span>
+<span id="529"> 529</span>
+<span id="530"> 530</span>
+<span id="531"> 531</span>
+<span id="532"> 532</span>
+<span id="533"> 533</span>
+<span id="534"> 534</span>
+<span id="535"> 535</span>
+<span id="536"> 536</span>
+<span id="537"> 537</span>
+<span id="538"> 538</span>
+<span id="539"> 539</span>
+<span id="540"> 540</span>
+<span id="541"> 541</span>
+<span id="542"> 542</span>
+<span id="543"> 543</span>
+<span id="544"> 544</span>
+<span id="545"> 545</span>
+<span id="546"> 546</span>
+<span id="547"> 547</span>
+<span id="548"> 548</span>
+<span id="549"> 549</span>
+<span id="550"> 550</span>
+<span id="551"> 551</span>
+<span id="552"> 552</span>
+<span id="553"> 553</span>
+<span id="554"> 554</span>
+<span id="555"> 555</span>
+<span id="556"> 556</span>
+<span id="557"> 557</span>
+<span id="558"> 558</span>
+<span id="559"> 559</span>
+<span id="560"> 560</span>
+<span id="561"> 561</span>
+<span id="562"> 562</span>
+<span id="563"> 563</span>
+<span id="564"> 564</span>
+<span id="565"> 565</span>
+<span id="566"> 566</span>
+<span id="567"> 567</span>
+<span id="568"> 568</span>
+<span id="569"> 569</span>
+<span id="570"> 570</span>
+<span id="571"> 571</span>
+<span id="572"> 572</span>
+<span id="573"> 573</span>
+<span id="574"> 574</span>
+<span id="575"> 575</span>
+<span id="576"> 576</span>
+<span id="577"> 577</span>
+<span id="578"> 578</span>
+<span id="579"> 579</span>
+<span id="580"> 580</span>
+<span id="581"> 581</span>
+<span id="582"> 582</span>
+<span id="583"> 583</span>
+<span id="584"> 584</span>
+<span id="585"> 585</span>
+<span id="586"> 586</span>
+<span id="587"> 587</span>
+<span id="588"> 588</span>
+<span id="589"> 589</span>
+<span id="590"> 590</span>
+<span id="591"> 591</span>
+<span id="592"> 592</span>
+<span id="593"> 593</span>
+<span id="594"> 594</span>
+<span id="595"> 595</span>
+<span id="596"> 596</span>
+<span id="597"> 597</span>
+<span id="598"> 598</span>
+<span id="599"> 599</span>
+<span id="600"> 600</span>
+<span id="601"> 601</span>
+<span id="602"> 602</span>
+<span id="603"> 603</span>
+<span id="604"> 604</span>
+<span id="605"> 605</span>
+<span id="606"> 606</span>
+<span id="607"> 607</span>
+<span id="608"> 608</span>
+<span id="609"> 609</span>
+<span id="610"> 610</span>
+<span id="611"> 611</span>
+<span id="612"> 612</span>
+<span id="613"> 613</span>
+<span id="614"> 614</span>
+<span id="615"> 615</span>
+<span id="616"> 616</span>
+<span id="617"> 617</span>
+<span id="618"> 618</span>
+<span id="619"> 619</span>
+<span id="620"> 620</span>
+<span id="621"> 621</span>
+<span id="622"> 622</span>
+<span id="623"> 623</span>
+<span id="624"> 624</span>
+<span id="625"> 625</span>
+<span id="626"> 626</span>
+<span id="627"> 627</span>
+<span id="628"> 628</span>
+<span id="629"> 629</span>
+<span id="630"> 630</span>
+<span id="631"> 631</span>
+<span id="632"> 632</span>
+<span id="633"> 633</span>
+<span id="634"> 634</span>
+<span id="635"> 635</span>
+<span id="636"> 636</span>
+<span id="637"> 637</span>
+<span id="638"> 638</span>
+<span id="639"> 639</span>
+<span id="640"> 640</span>
+<span id="641"> 641</span>
+<span id="642"> 642</span>
+<span id="643"> 643</span>
+<span id="644"> 644</span>
+<span id="645"> 645</span>
+<span id="646"> 646</span>
+<span id="647"> 647</span>
+<span id="648"> 648</span>
+<span id="649"> 649</span>
+<span id="650"> 650</span>
+<span id="651"> 651</span>
+<span id="652"> 652</span>
+<span id="653"> 653</span>
+<span id="654"> 654</span>
+<span id="655"> 655</span>
+<span id="656"> 656</span>
+<span id="657"> 657</span>
+<span id="658"> 658</span>
+<span id="659"> 659</span>
+<span id="660"> 660</span>
+<span id="661"> 661</span>
+<span id="662"> 662</span>
+<span id="663"> 663</span>
+<span id="664"> 664</span>
+<span id="665"> 665</span>
+<span id="666"> 666</span>
+<span id="667"> 667</span>
+<span id="668"> 668</span>
+<span id="669"> 669</span>
+<span id="670"> 670</span>
+<span id="671"> 671</span>
+<span id="672"> 672</span>
+<span id="673"> 673</span>
+<span id="674"> 674</span>
+<span id="675"> 675</span>
+<span id="676"> 676</span>
+<span id="677"> 677</span>
+<span id="678"> 678</span>
+<span id="679"> 679</span>
+<span id="680"> 680</span>
+<span id="681"> 681</span>
+<span id="682"> 682</span>
+<span id="683"> 683</span>
+<span id="684"> 684</span>
+<span id="685"> 685</span>
+<span id="686"> 686</span>
+<span id="687"> 687</span>
+<span id="688"> 688</span>
+<span id="689"> 689</span>
+<span id="690"> 690</span>
+<span id="691"> 691</span>
+<span id="692"> 692</span>
+<span id="693"> 693</span>
+<span id="694"> 694</span>
+<span id="695"> 695</span>
+<span id="696"> 696</span>
+<span id="697"> 697</span>
+<span id="698"> 698</span>
+<span id="699"> 699</span>
+<span id="700"> 700</span>
+<span id="701"> 701</span>
+<span id="702"> 702</span>
+<span id="703"> 703</span>
+<span id="704"> 704</span>
+<span id="705"> 705</span>
+<span id="706"> 706</span>
+<span id="707"> 707</span>
+<span id="708"> 708</span>
+<span id="709"> 709</span>
+<span id="710"> 710</span>
+<span id="711"> 711</span>
+<span id="712"> 712</span>
+<span id="713"> 713</span>
+<span id="714"> 714</span>
+<span id="715"> 715</span>
+<span id="716"> 716</span>
+<span id="717"> 717</span>
+<span id="718"> 718</span>
+<span id="719"> 719</span>
+<span id="720"> 720</span>
+<span id="721"> 721</span>
+<span id="722"> 722</span>
+<span id="723"> 723</span>
+<span id="724"> 724</span>
+<span id="725"> 725</span>
+<span id="726"> 726</span>
+<span id="727"> 727</span>
+<span id="728"> 728</span>
+<span id="729"> 729</span>
+<span id="730"> 730</span>
+<span id="731"> 731</span>
+<span id="732"> 732</span>
+<span id="733"> 733</span>
+<span id="734"> 734</span>
+<span id="735"> 735</span>
+<span id="736"> 736</span>
+<span id="737"> 737</span>
+<span id="738"> 738</span>
+<span id="739"> 739</span>
+<span id="740"> 740</span>
+<span id="741"> 741</span>
+<span id="742"> 742</span>
+<span id="743"> 743</span>
+<span id="744"> 744</span>
+<span id="745"> 745</span>
+<span id="746"> 746</span>
+<span id="747"> 747</span>
+<span id="748"> 748</span>
+<span id="749"> 749</span>
+<span id="750"> 750</span>
+<span id="751"> 751</span>
+<span id="752"> 752</span>
+<span id="753"> 753</span>
+<span id="754"> 754</span>
+<span id="755"> 755</span>
+<span id="756"> 756</span>
+<span id="757"> 757</span>
+<span id="758"> 758</span>
+<span id="759"> 759</span>
+<span id="760"> 760</span>
+<span id="761"> 761</span>
+<span id="762"> 762</span>
+<span id="763"> 763</span>
+<span id="764"> 764</span>
+<span id="765"> 765</span>
+<span id="766"> 766</span>
+<span id="767"> 767</span>
+<span id="768"> 768</span>
+<span id="769"> 769</span>
+<span id="770"> 770</span>
+<span id="771"> 771</span>
+<span id="772"> 772</span>
+<span id="773"> 773</span>
+<span id="774"> 774</span>
+<span id="775"> 775</span>
+<span id="776"> 776</span>
+<span id="777"> 777</span>
+<span id="778"> 778</span>
+<span id="779"> 779</span>
+<span id="780"> 780</span>
+<span id="781"> 781</span>
+<span id="782"> 782</span>
+<span id="783"> 783</span>
+<span id="784"> 784</span>
+<span id="785"> 785</span>
+<span id="786"> 786</span>
+<span id="787"> 787</span>
+<span id="788"> 788</span>
+<span id="789"> 789</span>
+<span id="790"> 790</span>
+<span id="791"> 791</span>
+<span id="792"> 792</span>
+<span id="793"> 793</span>
+<span id="794"> 794</span>
+<span id="795"> 795</span>
+<span id="796"> 796</span>
+<span id="797"> 797</span>
+<span id="798"> 798</span>
+<span id="799"> 799</span>
+<span id="800"> 800</span>
+<span id="801"> 801</span>
+<span id="802"> 802</span>
+<span id="803"> 803</span>
+<span id="804"> 804</span>
+<span id="805"> 805</span>
+<span id="806"> 806</span>
+<span id="807"> 807</span>
+<span id="808"> 808</span>
+<span id="809"> 809</span>
+<span id="810"> 810</span>
+<span id="811"> 811</span>
+<span id="812"> 812</span>
+<span id="813"> 813</span>
+<span id="814"> 814</span>
+<span id="815"> 815</span>
+<span id="816"> 816</span>
+<span id="817"> 817</span>
+<span id="818"> 818</span>
+<span id="819"> 819</span>
+<span id="820"> 820</span>
+<span id="821"> 821</span>
+<span id="822"> 822</span>
+<span id="823"> 823</span>
+<span id="824"> 824</span>
+<span id="825"> 825</span>
+<span id="826"> 826</span>
+<span id="827"> 827</span>
+<span id="828"> 828</span>
+<span id="829"> 829</span>
+<span id="830"> 830</span>
+<span id="831"> 831</span>
+<span id="832"> 832</span>
+<span id="833"> 833</span>
+<span id="834"> 834</span>
+<span id="835"> 835</span>
+<span id="836"> 836</span>
+<span id="837"> 837</span>
+<span id="838"> 838</span>
+<span id="839"> 839</span>
+<span id="840"> 840</span>
+<span id="841"> 841</span>
+<span id="842"> 842</span>
+<span id="843"> 843</span>
+<span id="844"> 844</span>
+<span id="845"> 845</span>
+<span id="846"> 846</span>
+<span id="847"> 847</span>
+<span id="848"> 848</span>
+<span id="849"> 849</span>
+<span id="850"> 850</span>
+<span id="851"> 851</span>
+<span id="852"> 852</span>
+<span id="853"> 853</span>
+<span id="854"> 854</span>
+<span id="855"> 855</span>
+<span id="856"> 856</span>
+<span id="857"> 857</span>
+<span id="858"> 858</span>
+<span id="859"> 859</span>
+<span id="860"> 860</span>
+<span id="861"> 861</span>
+<span id="862"> 862</span>
+<span id="863"> 863</span>
+<span id="864"> 864</span>
+<span id="865"> 865</span>
+<span id="866"> 866</span>
+<span id="867"> 867</span>
+<span id="868"> 868</span>
+<span id="869"> 869</span>
+<span id="870"> 870</span>
+<span id="871"> 871</span>
+<span id="872"> 872</span>
+<span id="873"> 873</span>
+<span id="874"> 874</span>
+<span id="875"> 875</span>
+<span id="876"> 876</span>
+<span id="877"> 877</span>
+<span id="878"> 878</span>
+<span id="879"> 879</span>
+<span id="880"> 880</span>
+<span id="881"> 881</span>
+<span id="882"> 882</span>
+<span id="883"> 883</span>
+<span id="884"> 884</span>
+<span id="885"> 885</span>
+<span id="886"> 886</span>
+<span id="887"> 887</span>
+<span id="888"> 888</span>
+<span id="889"> 889</span>
+<span id="890"> 890</span>
+<span id="891"> 891</span>
+<span id="892"> 892</span>
+<span id="893"> 893</span>
+<span id="894"> 894</span>
+<span id="895"> 895</span>
+<span id="896"> 896</span>
+<span id="897"> 897</span>
+<span id="898"> 898</span>
+<span id="899"> 899</span>
+<span id="900"> 900</span>
+<span id="901"> 901</span>
+<span id="902"> 902</span>
+<span id="903"> 903</span>
+<span id="904"> 904</span>
+<span id="905"> 905</span>
+<span id="906"> 906</span>
+<span id="907"> 907</span>
+<span id="908"> 908</span>
+<span id="909"> 909</span>
+<span id="910"> 910</span>
+<span id="911"> 911</span>
+<span id="912"> 912</span>
+<span id="913"> 913</span>
+<span id="914"> 914</span>
+<span id="915"> 915</span>
+<span id="916"> 916</span>
+<span id="917"> 917</span>
+<span id="918"> 918</span>
+<span id="919"> 919</span>
+<span id="920"> 920</span>
+<span id="921"> 921</span>
+<span id="922"> 922</span>
+<span id="923"> 923</span>
+<span id="924"> 924</span>
+<span id="925"> 925</span>
+<span id="926"> 926</span>
+<span id="927"> 927</span>
+<span id="928"> 928</span>
+<span id="929"> 929</span>
+<span id="930"> 930</span>
+<span id="931"> 931</span>
+<span id="932"> 932</span>
+<span id="933"> 933</span>
+<span id="934"> 934</span>
+<span id="935"> 935</span>
+<span id="936"> 936</span>
+<span id="937"> 937</span>
+<span id="938"> 938</span>
+<span id="939"> 939</span>
+<span id="940"> 940</span>
+<span id="941"> 941</span>
+<span id="942"> 942</span>
+<span id="943"> 943</span>
+<span id="944"> 944</span>
+<span id="945"> 945</span>
+<span id="946"> 946</span>
+<span id="947"> 947</span>
+<span id="948"> 948</span>
+<span id="949"> 949</span>
+<span id="950"> 950</span>
+<span id="951"> 951</span>
+<span id="952"> 952</span>
+<span id="953"> 953</span>
+<span id="954"> 954</span>
+<span id="955"> 955</span>
+<span id="956"> 956</span>
+<span id="957"> 957</span>
+<span id="958"> 958</span>
+<span id="959"> 959</span>
+<span id="960"> 960</span>
+<span id="961"> 961</span>
+<span id="962"> 962</span>
+<span id="963"> 963</span>
+<span id="964"> 964</span>
+<span id="965"> 965</span>
+<span id="966"> 966</span>
+<span id="967"> 967</span>
+<span id="968"> 968</span>
+<span id="969"> 969</span>
+<span id="970"> 970</span>
+<span id="971"> 971</span>
+<span id="972"> 972</span>
+<span id="973"> 973</span>
+<span id="974"> 974</span>
+<span id="975"> 975</span>
+<span id="976"> 976</span>
+<span id="977"> 977</span>
+<span id="978"> 978</span>
+<span id="979"> 979</span>
+<span id="980"> 980</span>
+<span id="981"> 981</span>
+<span id="982"> 982</span>
+<span id="983"> 983</span>
+<span id="984"> 984</span>
+<span id="985"> 985</span>
+<span id="986"> 986</span>
+<span id="987"> 987</span>
+<span id="988"> 988</span>
+<span id="989"> 989</span>
+<span id="990"> 990</span>
+<span id="991"> 991</span>
+<span id="992"> 992</span>
+<span id="993"> 993</span>
+<span id="994"> 994</span>
+<span id="995"> 995</span>
+<span id="996"> 996</span>
+<span id="997"> 997</span>
+<span id="998"> 998</span>
+<span id="999"> 999</span>
+<span id="1000">1000</span>
+<span id="1001">1001</span>
+<span id="1002">1002</span>
+<span id="1003">1003</span>
+<span id="1004">1004</span>
+<span id="1005">1005</span>
+<span id="1006">1006</span>
+<span id="1007">1007</span>
+<span id="1008">1008</span>
+<span id="1009">1009</span>
+<span id="1010">1010</span>
+<span id="1011">1011</span>
+<span id="1012">1012</span>
+<span id="1013">1013</span>
+<span id="1014">1014</span>
+<span id="1015">1015</span>
+<span id="1016">1016</span>
+<span id="1017">1017</span>
+<span id="1018">1018</span>
+<span id="1019">1019</span>
+<span id="1020">1020</span>
+<span id="1021">1021</span>
+<span id="1022">1022</span>
+<span id="1023">1023</span>
+<span id="1024">1024</span>
+<span id="1025">1025</span>
+<span id="1026">1026</span>
+<span id="1027">1027</span>
+<span id="1028">1028</span>
+<span id="1029">1029</span>
+<span id="1030">1030</span>
+<span id="1031">1031</span>
+<span id="1032">1032</span>
+<span id="1033">1033</span>
+<span id="1034">1034</span>
+<span id="1035">1035</span>
+<span id="1036">1036</span>
+<span id="1037">1037</span>
+<span id="1038">1038</span>
+<span id="1039">1039</span>
+<span id="1040">1040</span>
+<span id="1041">1041</span>
+<span id="1042">1042</span>
+<span id="1043">1043</span>
+<span id="1044">1044</span>
+<span id="1045">1045</span>
+<span id="1046">1046</span>
+<span id="1047">1047</span>
+<span id="1048">1048</span>
+<span id="1049">1049</span>
+<span id="1050">1050</span>
+<span id="1051">1051</span>
+<span id="1052">1052</span>
+<span id="1053">1053</span>
+<span id="1054">1054</span>
+<span id="1055">1055</span>
+<span id="1056">1056</span>
+<span id="1057">1057</span>
+<span id="1058">1058</span>
+<span id="1059">1059</span>
+<span id="1060">1060</span>
+<span id="1061">1061</span>
+<span id="1062">1062</span>
+<span id="1063">1063</span>
+<span id="1064">1064</span>
+<span id="1065">1065</span>
+<span id="1066">1066</span>
+<span id="1067">1067</span>
+<span id="1068">1068</span>
+<span id="1069">1069</span>
+<span id="1070">1070</span>
+<span id="1071">1071</span>
+<span id="1072">1072</span>
+<span id="1073">1073</span>
+<span id="1074">1074</span>
+<span id="1075">1075</span>
+<span id="1076">1076</span>
+<span id="1077">1077</span>
+<span id="1078">1078</span>
+<span id="1079">1079</span>
+<span id="1080">1080</span>
+<span id="1081">1081</span>
+<span id="1082">1082</span>
+<span id="1083">1083</span>
+<span id="1084">1084</span>
+<span id="1085">1085</span>
+<span id="1086">1086</span>
+<span id="1087">1087</span>
+<span id="1088">1088</span>
+<span id="1089">1089</span>
+<span id="1090">1090</span>
+<span id="1091">1091</span>
+<span id="1092">1092</span>
+<span id="1093">1093</span>
+<span id="1094">1094</span>
+<span id="1095">1095</span>
+<span id="1096">1096</span>
+<span id="1097">1097</span>
+<span id="1098">1098</span>
+<span id="1099">1099</span>
+<span id="1100">1100</span>
+<span id="1101">1101</span>
+<span id="1102">1102</span>
+<span id="1103">1103</span>
+<span id="1104">1104</span>
+<span id="1105">1105</span>
+<span id="1106">1106</span>
+<span id="1107">1107</span>
+<span id="1108">1108</span>
+<span id="1109">1109</span>
+<span id="1110">1110</span>
+<span id="1111">1111</span>
+<span id="1112">1112</span>
+<span id="1113">1113</span>
+<span id="1114">1114</span>
+<span id="1115">1115</span>
+<span id="1116">1116</span>
+<span id="1117">1117</span>
+<span id="1118">1118</span>
+<span id="1119">1119</span>
+<span id="1120">1120</span>
+<span id="1121">1121</span>
+<span id="1122">1122</span>
+<span id="1123">1123</span>
+<span id="1124">1124</span>
+<span id="1125">1125</span>
+<span id="1126">1126</span>
+<span id="1127">1127</span>
+<span id="1128">1128</span>
+<span id="1129">1129</span>
+<span id="1130">1130</span>
+<span id="1131">1131</span>
+<span id="1132">1132</span>
+<span id="1133">1133</span>
+<span id="1134">1134</span>
+<span id="1135">1135</span>
+<span id="1136">1136</span>
+<span id="1137">1137</span>
+<span id="1138">1138</span>
+<span id="1139">1139</span>
+<span id="1140">1140</span>
+<span id="1141">1141</span>
+<span id="1142">1142</span>
+<span id="1143">1143</span>
+<span id="1144">1144</span>
+<span id="1145">1145</span>
+<span id="1146">1146</span>
+<span id="1147">1147</span>
+<span id="1148">1148</span>
+<span id="1149">1149</span>
+<span id="1150">1150</span>
+<span id="1151">1151</span>
+<span id="1152">1152</span>
+<span id="1153">1153</span>
+<span id="1154">1154</span>
+<span id="1155">1155</span>
+<span id="1156">1156</span>
+<span id="1157">1157</span>
+<span id="1158">1158</span>
+<span id="1159">1159</span>
+<span id="1160">1160</span>
+<span id="1161">1161</span>
+<span id="1162">1162</span>
+<span id="1163">1163</span>
+<span id="1164">1164</span>
+<span id="1165">1165</span>
+<span id="1166">1166</span>
+<span id="1167">1167</span>
+<span id="1168">1168</span>
+<span id="1169">1169</span>
+<span id="1170">1170</span>
+<span id="1171">1171</span>
+<span id="1172">1172</span>
+<span id="1173">1173</span>
+<span id="1174">1174</span>
+<span id="1175">1175</span>
+<span id="1176">1176</span>
+<span id="1177">1177</span>
+<span id="1178">1178</span>
+<span id="1179">1179</span>
+<span id="1180">1180</span>
+<span id="1181">1181</span>
+<span id="1182">1182</span>
+<span id="1183">1183</span>
+<span id="1184">1184</span>
+<span id="1185">1185</span>
+<span id="1186">1186</span>
+<span id="1187">1187</span>
+<span id="1188">1188</span>
+<span id="1189">1189</span>
+<span id="1190">1190</span>
+<span id="1191">1191</span>
+<span id="1192">1192</span>
+<span id="1193">1193</span>
+<span id="1194">1194</span>
+<span id="1195">1195</span>
+<span id="1196">1196</span>
+<span id="1197">1197</span>
+<span id="1198">1198</span>
+<span id="1199">1199</span>
+<span id="1200">1200</span>
+<span id="1201">1201</span>
+<span id="1202">1202</span>
+<span id="1203">1203</span>
+<span id="1204">1204</span>
+<span id="1205">1205</span>
+<span id="1206">1206</span>
+<span id="1207">1207</span>
+<span id="1208">1208</span>
+<span id="1209">1209</span>
+<span id="1210">1210</span>
+<span id="1211">1211</span>
+<span id="1212">1212</span>
+<span id="1213">1213</span>
+<span id="1214">1214</span>
+<span id="1215">1215</span>
+<span id="1216">1216</span>
+<span id="1217">1217</span>
+<span id="1218">1218</span>
+<span id="1219">1219</span>
+<span id="1220">1220</span>
+<span id="1221">1221</span>
+<span id="1222">1222</span>
+<span id="1223">1223</span>
+<span id="1224">1224</span>
+<span id="1225">1225</span>
+<span id="1226">1226</span>
+<span id="1227">1227</span>
+<span id="1228">1228</span>
+<span id="1229">1229</span>
+<span id="1230">1230</span>
+<span id="1231">1231</span>
+<span id="1232">1232</span>
+<span id="1233">1233</span>
+<span id="1234">1234</span>
+<span id="1235">1235</span>
+<span id="1236">1236</span>
+<span id="1237">1237</span>
+<span id="1238">1238</span>
+<span id="1239">1239</span>
+<span id="1240">1240</span>
+<span id="1241">1241</span>
+<span id="1242">1242</span>
+<span id="1243">1243</span>
+<span id="1244">1244</span>
+<span id="1245">1245</span>
+<span id="1246">1246</span>
+<span id="1247">1247</span>
+<span id="1248">1248</span>
+<span id="1249">1249</span>
+<span id="1250">1250</span>
+<span id="1251">1251</span>
+<span id="1252">1252</span>
+<span id="1253">1253</span>
+<span id="1254">1254</span>
+<span id="1255">1255</span>
+<span id="1256">1256</span>
+<span id="1257">1257</span>
+<span id="1258">1258</span>
+<span id="1259">1259</span>
+<span id="1260">1260</span>
+<span id="1261">1261</span>
+<span id="1262">1262</span>
+<span id="1263">1263</span>
+<span id="1264">1264</span>
+<span id="1265">1265</span>
+<span id="1266">1266</span>
+<span id="1267">1267</span>
+<span id="1268">1268</span>
+<span id="1269">1269</span>
+<span id="1270">1270</span>
+<span id="1271">1271</span>
+<span id="1272">1272</span>
+<span id="1273">1273</span>
+<span id="1274">1274</span>
+<span id="1275">1275</span>
+<span id="1276">1276</span>
+<span id="1277">1277</span>
+<span id="1278">1278</span>
+<span id="1279">1279</span>
+<span id="1280">1280</span>
+<span id="1281">1281</span>
+<span id="1282">1282</span>
+<span id="1283">1283</span>
+<span id="1284">1284</span>
+<span id="1285">1285</span>
+<span id="1286">1286</span>
+<span id="1287">1287</span>
+<span id="1288">1288</span>
+<span id="1289">1289</span>
+<span id="1290">1290</span>
+<span id="1291">1291</span>
+<span id="1292">1292</span>
+<span id="1293">1293</span>
+<span id="1294">1294</span>
+<span id="1295">1295</span>
+<span id="1296">1296</span>
+<span id="1297">1297</span>
+<span id="1298">1298</span>
+<span id="1299">1299</span>
+<span id="1300">1300</span>
+<span id="1301">1301</span>
+<span id="1302">1302</span>
+<span id="1303">1303</span>
+<span id="1304">1304</span>
+<span id="1305">1305</span>
+<span id="1306">1306</span>
+<span id="1307">1307</span>
+<span id="1308">1308</span>
+<span id="1309">1309</span>
+<span id="1310">1310</span>
+<span id="1311">1311</span>
+<span id="1312">1312</span>
+<span id="1313">1313</span>
+<span id="1314">1314</span>
+<span id="1315">1315</span>
+<span id="1316">1316</span>
+<span id="1317">1317</span>
+<span id="1318">1318</span>
+<span id="1319">1319</span>
+<span id="1320">1320</span>
+<span id="1321">1321</span>
+<span id="1322">1322</span>
+<span id="1323">1323</span>
+<span id="1324">1324</span>
+<span id="1325">1325</span>
+<span id="1326">1326</span>
+<span id="1327">1327</span>
+<span id="1328">1328</span>
+<span id="1329">1329</span>
+<span id="1330">1330</span>
+<span id="1331">1331</span>
+<span id="1332">1332</span>
+<span id="1333">1333</span>
+<span id="1334">1334</span>
+<span id="1335">1335</span>
+<span id="1336">1336</span>
+<span id="1337">1337</span>
+<span id="1338">1338</span>
+<span id="1339">1339</span>
+<span id="1340">1340</span>
+<span id="1341">1341</span>
+<span id="1342">1342</span>
+<span id="1343">1343</span>
+<span id="1344">1344</span>
+<span id="1345">1345</span>
+<span id="1346">1346</span>
+<span id="1347">1347</span>
+<span id="1348">1348</span>
+<span id="1349">1349</span>
+<span id="1350">1350</span>
+<span id="1351">1351</span>
+<span id="1352">1352</span>
+<span id="1353">1353</span>
+<span id="1354">1354</span>
+<span id="1355">1355</span>
+<span id="1356">1356</span>
+<span id="1357">1357</span>
+<span id="1358">1358</span>
+<span id="1359">1359</span>
+<span id="1360">1360</span>
+<span id="1361">1361</span>
+<span id="1362">1362</span>
+<span id="1363">1363</span>
+<span id="1364">1364</span>
+<span id="1365">1365</span>
+<span id="1366">1366</span>
+<span id="1367">1367</span>
+<span id="1368">1368</span>
+<span id="1369">1369</span>
+<span id="1370">1370</span>
+<span id="1371">1371</span>
+<span id="1372">1372</span>
+<span id="1373">1373</span>
+<span id="1374">1374</span>
+<span id="1375">1375</span>
+<span id="1376">1376</span>
+<span id="1377">1377</span>
+<span id="1378">1378</span>
+<span id="1379">1379</span>
+<span id="1380">1380</span>
+<span id="1381">1381</span>
+<span id="1382">1382</span>
+<span id="1383">1383</span>
+<span id="1384">1384</span>
+<span id="1385">1385</span>
+<span id="1386">1386</span>
+<span id="1387">1387</span>
+<span id="1388">1388</span>
+<span id="1389">1389</span>
+<span id="1390">1390</span>
+<span id="1391">1391</span>
+<span id="1392">1392</span>
+<span id="1393">1393</span>
+<span id="1394">1394</span>
+<span id="1395">1395</span>
+<span id="1396">1396</span>
+<span id="1397">1397</span>
+<span id="1398">1398</span>
+<span id="1399">1399</span>
+<span id="1400">1400</span>
+<span id="1401">1401</span>
+<span id="1402">1402</span>
+<span id="1403">1403</span>
+<span id="1404">1404</span>
+<span id="1405">1405</span>
+<span id="1406">1406</span>
+<span id="1407">1407</span>
+<span id="1408">1408</span>
+<span id="1409">1409</span>
+<span id="1410">1410</span>
+<span id="1411">1411</span>
+<span id="1412">1412</span>
+<span id="1413">1413</span>
+<span id="1414">1414</span>
+<span id="1415">1415</span>
+<span id="1416">1416</span>
+<span id="1417">1417</span>
+<span id="1418">1418</span>
+<span id="1419">1419</span>
+<span id="1420">1420</span>
+<span id="1421">1421</span>
+<span id="1422">1422</span>
+<span id="1423">1423</span>
+<span id="1424">1424</span>
+<span id="1425">1425</span>
+<span id="1426">1426</span>
+<span id="1427">1427</span>
+<span id="1428">1428</span>
+<span id="1429">1429</span>
+<span id="1430">1430</span>
+<span id="1431">1431</span>
+<span id="1432">1432</span>
+<span id="1433">1433</span>
+<span id="1434">1434</span>
+<span id="1435">1435</span>
+<span id="1436">1436</span>
+<span id="1437">1437</span>
+<span id="1438">1438</span>
+<span id="1439">1439</span>
+<span id="1440">1440</span>
+<span id="1441">1441</span>
+<span id="1442">1442</span>
+<span id="1443">1443</span>
+<span id="1444">1444</span>
+<span id="1445">1445</span>
+<span id="1446">1446</span>
+<span id="1447">1447</span>
+<span id="1448">1448</span>
+<span id="1449">1449</span>
+<span id="1450">1450</span>
+<span id="1451">1451</span>
+<span id="1452">1452</span>
+<span id="1453">1453</span>
+<span id="1454">1454</span>
+<span id="1455">1455</span>
+<span id="1456">1456</span>
+<span id="1457">1457</span>
+<span id="1458">1458</span>
+<span id="1459">1459</span>
+<span id="1460">1460</span>
+<span id="1461">1461</span>
+<span id="1462">1462</span>
+<span id="1463">1463</span>
+<span id="1464">1464</span>
+<span id="1465">1465</span>
+<span id="1466">1466</span>
+<span id="1467">1467</span>
+<span id="1468">1468</span>
+<span id="1469">1469</span>
+<span id="1470">1470</span>
+<span id="1471">1471</span>
+<span id="1472">1472</span>
+<span id="1473">1473</span>
+<span id="1474">1474</span>
+<span id="1475">1475</span>
+<span id="1476">1476</span>
+<span id="1477">1477</span>
+<span id="1478">1478</span>
+<span id="1479">1479</span>
+<span id="1480">1480</span>
+<span id="1481">1481</span>
+<span id="1482">1482</span>
+<span id="1483">1483</span>
+<span id="1484">1484</span>
+<span id="1485">1485</span>
+<span id="1486">1486</span>
+<span id="1487">1487</span>
+<span id="1488">1488</span>
+<span id="1489">1489</span>
+<span id="1490">1490</span>
+<span id="1491">1491</span>
+<span id="1492">1492</span>
+<span id="1493">1493</span>
+<span id="1494">1494</span>
+<span id="1495">1495</span>
+<span id="1496">1496</span>
+<span id="1497">1497</span>
+<span id="1498">1498</span>
+<span id="1499">1499</span>
+<span id="1500">1500</span>
+<span id="1501">1501</span>
+<span id="1502">1502</span>
+<span id="1503">1503</span>
+<span id="1504">1504</span>
+<span id="1505">1505</span>
+<span id="1506">1506</span>
+<span id="1507">1507</span>
+<span id="1508">1508</span>
+<span id="1509">1509</span>
+<span id="1510">1510</span>
+<span id="1511">1511</span>
+<span id="1512">1512</span>
+<span id="1513">1513</span>
+<span id="1514">1514</span>
+<span id="1515">1515</span>
+<span id="1516">1516</span>
+<span id="1517">1517</span>
+<span id="1518">1518</span>
+<span id="1519">1519</span>
+<span id="1520">1520</span>
+<span id="1521">1521</span>
+<span id="1522">1522</span>
+<span id="1523">1523</span>
+<span id="1524">1524</span>
+<span id="1525">1525</span>
+<span id="1526">1526</span>
+<span id="1527">1527</span>
+<span id="1528">1528</span>
+<span id="1529">1529</span>
+<span id="1530">1530</span>
+<span id="1531">1531</span>
+<span id="1532">1532</span>
+<span id="1533">1533</span>
+<span id="1534">1534</span>
+<span id="1535">1535</span>
+<span id="1536">1536</span>
+<span id="1537">1537</span>
+<span id="1538">1538</span>
+<span id="1539">1539</span>
+<span id="1540">1540</span>
+<span id="1541">1541</span>
+<span id="1542">1542</span>
+<span id="1543">1543</span>
+<span id="1544">1544</span>
+<span id="1545">1545</span>
+<span id="1546">1546</span>
+<span id="1547">1547</span>
+<span id="1548">1548</span>
+<span id="1549">1549</span>
+<span id="1550">1550</span>
+<span id="1551">1551</span>
+<span id="1552">1552</span>
+<span id="1553">1553</span>
+<span id="1554">1554</span>
+<span id="1555">1555</span>
+<span id="1556">1556</span>
+<span id="1557">1557</span>
+<span id="1558">1558</span>
+<span id="1559">1559</span>
+<span id="1560">1560</span>
+<span id="1561">1561</span>
+<span id="1562">1562</span>
+<span id="1563">1563</span>
+<span id="1564">1564</span>
+<span id="1565">1565</span>
+<span id="1566">1566</span>
+<span id="1567">1567</span>
+<span id="1568">1568</span>
+<span id="1569">1569</span>
+<span id="1570">1570</span>
+<span id="1571">1571</span>
+<span id="1572">1572</span>
+<span id="1573">1573</span>
+<span id="1574">1574</span>
+<span id="1575">1575</span>
+<span id="1576">1576</span>
+<span id="1577">1577</span>
+<span id="1578">1578</span>
+<span id="1579">1579</span>
+<span id="1580">1580</span>
+<span id="1581">1581</span>
+<span id="1582">1582</span>
+<span id="1583">1583</span>
+<span id="1584">1584</span>
+<span id="1585">1585</span>
+<span id="1586">1586</span>
+<span id="1587">1587</span>
+<span id="1588">1588</span>
+<span id="1589">1589</span>
+<span id="1590">1590</span>
+<span id="1591">1591</span>
+<span id="1592">1592</span>
+<span id="1593">1593</span>
+<span id="1594">1594</span>
+<span id="1595">1595</span>
+<span id="1596">1596</span>
+<span id="1597">1597</span>
+<span id="1598">1598</span>
+<span id="1599">1599</span>
+<span id="1600">1600</span>
+<span id="1601">1601</span>
+<span id="1602">1602</span>
+<span id="1603">1603</span>
+<span id="1604">1604</span>
+<span id="1605">1605</span>
+<span id="1606">1606</span>
+<span id="1607">1607</span>
+<span id="1608">1608</span>
+<span id="1609">1609</span>
+<span id="1610">1610</span>
+<span id="1611">1611</span>
+<span id="1612">1612</span>
+<span id="1613">1613</span>
+<span id="1614">1614</span>
+<span id="1615">1615</span>
+<span id="1616">1616</span>
+<span id="1617">1617</span>
+<span id="1618">1618</span>
+<span id="1619">1619</span>
+<span id="1620">1620</span>
+<span id="1621">1621</span>
+<span id="1622">1622</span>
+<span id="1623">1623</span>
+<span id="1624">1624</span>
+<span id="1625">1625</span>
+<span id="1626">1626</span>
+<span id="1627">1627</span>
+<span id="1628">1628</span>
+<span id="1629">1629</span>
+<span id="1630">1630</span>
+<span id="1631">1631</span>
+<span id="1632">1632</span>
+<span id="1633">1633</span>
+<span id="1634">1634</span>
+<span id="1635">1635</span>
+<span id="1636">1636</span>
+<span id="1637">1637</span>
+<span id="1638">1638</span>
+<span id="1639">1639</span>
+<span id="1640">1640</span>
+<span id="1641">1641</span>
+<span id="1642">1642</span>
+<span id="1643">1643</span>
+<span id="1644">1644</span>
+<span id="1645">1645</span>
+<span id="1646">1646</span>
+<span id="1647">1647</span>
+<span id="1648">1648</span>
+<span id="1649">1649</span>
+<span id="1650">1650</span>
+<span id="1651">1651</span>
+<span id="1652">1652</span>
+<span id="1653">1653</span>
+<span id="1654">1654</span>
+<span id="1655">1655</span>
+<span id="1656">1656</span>
+<span id="1657">1657</span>
+<span id="1658">1658</span>
+<span id="1659">1659</span>
+<span id="1660">1660</span>
+<span id="1661">1661</span>
+<span id="1662">1662</span>
+<span id="1663">1663</span>
+<span id="1664">1664</span>
+<span id="1665">1665</span>
+<span id="1666">1666</span>
+<span id="1667">1667</span>
+<span id="1668">1668</span>
+<span id="1669">1669</span>
+<span id="1670">1670</span>
+<span id="1671">1671</span>
+<span id="1672">1672</span>
+<span id="1673">1673</span>
+<span id="1674">1674</span>
+<span id="1675">1675</span>
+<span id="1676">1676</span>
+<span id="1677">1677</span>
+<span id="1678">1678</span>
+<span id="1679">1679</span>
+<span id="1680">1680</span>
+<span id="1681">1681</span>
+<span id="1682">1682</span>
+<span id="1683">1683</span>
+<span id="1684">1684</span>
+<span id="1685">1685</span>
+<span id="1686">1686</span>
+<span id="1687">1687</span>
+<span id="1688">1688</span>
+<span id="1689">1689</span>
+<span id="1690">1690</span>
+<span id="1691">1691</span>
+<span id="1692">1692</span>
+<span id="1693">1693</span>
+<span id="1694">1694</span>
+<span id="1695">1695</span>
+<span id="1696">1696</span>
+<span id="1697">1697</span>
+<span id="1698">1698</span>
+<span id="1699">1699</span>
+<span id="1700">1700</span>
+<span id="1701">1701</span>
+<span id="1702">1702</span>
+<span id="1703">1703</span>
+<span id="1704">1704</span>
+<span id="1705">1705</span>
+<span id="1706">1706</span>
+<span id="1707">1707</span>
+<span id="1708">1708</span>
+<span id="1709">1709</span>
+<span id="1710">1710</span>
+<span id="1711">1711</span>
+<span id="1712">1712</span>
+<span id="1713">1713</span>
+<span id="1714">1714</span>
+<span id="1715">1715</span>
+<span id="1716">1716</span>
+<span id="1717">1717</span>
+<span id="1718">1718</span>
+<span id="1719">1719</span>
+<span id="1720">1720</span>
+<span id="1721">1721</span>
+<span id="1722">1722</span>
+<span id="1723">1723</span>
+<span id="1724">1724</span>
+<span id="1725">1725</span>
+<span id="1726">1726</span>
+<span id="1727">1727</span>
+<span id="1728">1728</span>
+<span id="1729">1729</span>
+<span id="1730">1730</span>
+<span id="1731">1731</span>
+<span id="1732">1732</span>
+<span id="1733">1733</span>
+<span id="1734">1734</span>
+<span id="1735">1735</span>
+<span id="1736">1736</span>
+<span id="1737">1737</span>
+<span id="1738">1738</span>
+<span id="1739">1739</span>
+<span id="1740">1740</span>
+<span id="1741">1741</span>
+<span id="1742">1742</span>
+<span id="1743">1743</span>
+<span id="1744">1744</span>
+<span id="1745">1745</span>
+<span id="1746">1746</span>
+<span id="1747">1747</span>
+<span id="1748">1748</span>
+<span id="1749">1749</span>
+<span id="1750">1750</span>
+<span id="1751">1751</span>
+<span id="1752">1752</span>
+<span id="1753">1753</span>
+<span id="1754">1754</span>
+<span id="1755">1755</span>
+<span id="1756">1756</span>
+<span id="1757">1757</span>
+<span id="1758">1758</span>
+<span id="1759">1759</span>
+<span id="1760">1760</span>
+<span id="1761">1761</span>
+<span id="1762">1762</span>
+<span id="1763">1763</span>
+<span id="1764">1764</span>
+<span id="1765">1765</span>
+<span id="1766">1766</span>
+<span id="1767">1767</span>
+<span id="1768">1768</span>
+<span id="1769">1769</span>
+<span id="1770">1770</span>
+<span id="1771">1771</span>
+<span id="1772">1772</span>
+<span id="1773">1773</span>
+<span id="1774">1774</span>
+<span id="1775">1775</span>
+<span id="1776">1776</span>
+<span id="1777">1777</span>
+<span id="1778">1778</span>
+<span id="1779">1779</span>
+<span id="1780">1780</span>
+<span id="1781">1781</span>
+<span id="1782">1782</span>
+<span id="1783">1783</span>
+<span id="1784">1784</span>
+<span id="1785">1785</span>
+<span id="1786">1786</span>
+<span id="1787">1787</span>
+<span id="1788">1788</span>
+<span id="1789">1789</span>
+<span id="1790">1790</span>
+<span id="1791">1791</span>
+<span id="1792">1792</span>
+<span id="1793">1793</span>
+<span id="1794">1794</span>
+<span id="1795">1795</span>
+<span id="1796">1796</span>
+<span id="1797">1797</span>
+<span id="1798">1798</span>
+<span id="1799">1799</span>
+<span id="1800">1800</span>
+<span id="1801">1801</span>
+<span id="1802">1802</span>
+<span id="1803">1803</span>
+<span id="1804">1804</span>
+<span id="1805">1805</span>
+<span id="1806">1806</span>
+<span id="1807">1807</span>
+<span id="1808">1808</span>
+<span id="1809">1809</span>
+<span id="1810">1810</span>
+<span id="1811">1811</span>
+<span id="1812">1812</span>
+<span id="1813">1813</span>
+<span id="1814">1814</span>
+<span id="1815">1815</span>
+<span id="1816">1816</span>
+<span id="1817">1817</span>
+<span id="1818">1818</span>
+<span id="1819">1819</span>
+<span id="1820">1820</span>
+<span id="1821">1821</span>
+<span id="1822">1822</span>
+<span id="1823">1823</span>
+<span id="1824">1824</span>
+<span id="1825">1825</span>
+<span id="1826">1826</span>
+<span id="1827">1827</span>
+<span id="1828">1828</span>
+<span id="1829">1829</span>
+<span id="1830">1830</span>
+<span id="1831">1831</span>
+<span id="1832">1832</span>
+<span id="1833">1833</span>
+<span id="1834">1834</span>
+<span id="1835">1835</span>
+<span id="1836">1836</span>
+<span id="1837">1837</span>
+<span id="1838">1838</span>
+<span id="1839">1839</span>
+<span id="1840">1840</span>
+<span id="1841">1841</span>
+<span id="1842">1842</span>
+<span id="1843">1843</span>
+<span id="1844">1844</span>
+<span id="1845">1845</span>
+<span id="1846">1846</span>
+<span id="1847">1847</span>
+<span id="1848">1848</span>
+<span id="1849">1849</span>
+<span id="1850">1850</span>
+<span id="1851">1851</span>
+<span id="1852">1852</span>
+<span id="1853">1853</span>
+<span id="1854">1854</span>
+<span id="1855">1855</span>
+<span id="1856">1856</span>
+<span id="1857">1857</span>
+<span id="1858">1858</span>
+<span id="1859">1859</span>
+<span id="1860">1860</span>
+<span id="1861">1861</span>
+<span id="1862">1862</span>
+<span id="1863">1863</span>
+<span id="1864">1864</span>
+<span id="1865">1865</span>
+<span id="1866">1866</span>
+<span id="1867">1867</span>
+<span id="1868">1868</span>
+<span id="1869">1869</span>
+<span id="1870">1870</span>
+<span id="1871">1871</span>
+<span id="1872">1872</span>
+<span id="1873">1873</span>
+<span id="1874">1874</span>
+<span id="1875">1875</span>
+<span id="1876">1876</span>
+<span id="1877">1877</span>
+<span id="1878">1878</span>
+<span id="1879">1879</span>
+<span id="1880">1880</span>
+<span id="1881">1881</span>
+<span id="1882">1882</span>
+<span id="1883">1883</span>
+<span id="1884">1884</span>
+<span id="1885">1885</span>
+<span id="1886">1886</span>
+<span id="1887">1887</span>
+<span id="1888">1888</span>
+<span id="1889">1889</span>
+<span id="1890">1890</span>
+<span id="1891">1891</span>
+<span id="1892">1892</span>
+<span id="1893">1893</span>
+<span id="1894">1894</span>
+<span id="1895">1895</span>
+<span id="1896">1896</span>
+<span id="1897">1897</span>
+<span id="1898">1898</span>
+<span id="1899">1899</span>
+<span id="1900">1900</span>
+<span id="1901">1901</span>
+<span id="1902">1902</span>
+<span id="1903">1903</span>
+<span id="1904">1904</span>
+<span id="1905">1905</span>
+<span id="1906">1906</span>
+<span id="1907">1907</span>
+<span id="1908">1908</span>
+<span id="1909">1909</span>
+<span id="1910">1910</span>
+<span id="1911">1911</span>
+<span id="1912">1912</span>
+<span id="1913">1913</span>
+<span id="1914">1914</span>
+<span id="1915">1915</span>
+<span id="1916">1916</span>
+<span id="1917">1917</span>
+<span id="1918">1918</span>
+<span id="1919">1919</span>
+<span id="1920">1920</span>
+<span id="1921">1921</span>
+<span id="1922">1922</span>
+<span id="1923">1923</span>
+<span id="1924">1924</span>
+<span id="1925">1925</span>
+<span id="1926">1926</span>
+<span id="1927">1927</span>
+<span id="1928">1928</span>
+<span id="1929">1929</span>
+<span id="1930">1930</span>
+<span id="1931">1931</span>
+<span id="1932">1932</span>
+<span id="1933">1933</span>
+<span id="1934">1934</span>
+<span id="1935">1935</span>
+<span id="1936">1936</span>
+<span id="1937">1937</span>
+<span id="1938">1938</span>
+<span id="1939">1939</span>
+<span id="1940">1940</span>
+<span id="1941">1941</span>
+<span id="1942">1942</span>
+<span id="1943">1943</span>
+<span id="1944">1944</span>
+<span id="1945">1945</span>
+<span id="1946">1946</span>
+<span id="1947">1947</span>
+<span id="1948">1948</span>
+<span id="1949">1949</span>
+<span id="1950">1950</span>
+<span id="1951">1951</span>
+<span id="1952">1952</span>
+<span id="1953">1953</span>
+<span id="1954">1954</span>
+<span id="1955">1955</span>
+<span id="1956">1956</span>
+<span id="1957">1957</span>
+<span id="1958">1958</span>
+<span id="1959">1959</span>
+<span id="1960">1960</span>
+<span id="1961">1961</span>
+<span id="1962">1962</span>
+<span id="1963">1963</span>
+<span id="1964">1964</span>
+<span id="1965">1965</span>
+<span id="1966">1966</span>
+<span id="1967">1967</span>
+<span id="1968">1968</span>
+<span id="1969">1969</span>
+<span id="1970">1970</span>
+<span id="1971">1971</span>
+<span id="1972">1972</span>
+<span id="1973">1973</span>
+<span id="1974">1974</span>
+<span id="1975">1975</span>
+<span id="1976">1976</span>
+<span id="1977">1977</span>
+<span id="1978">1978</span>
+<span id="1979">1979</span>
+<span id="1980">1980</span>
+<span id="1981">1981</span>
+<span id="1982">1982</span>
+<span id="1983">1983</span>
+<span id="1984">1984</span>
+<span id="1985">1985</span>
+<span id="1986">1986</span>
+<span id="1987">1987</span>
+<span id="1988">1988</span>
+<span id="1989">1989</span>
+<span id="1990">1990</span>
+<span id="1991">1991</span>
+<span id="1992">1992</span>
+<span id="1993">1993</span>
+<span id="1994">1994</span>
+<span id="1995">1995</span>
+<span id="1996">1996</span>
+<span id="1997">1997</span>
+<span id="1998">1998</span>
+<span id="1999">1999</span>
+<span id="2000">2000</span>
+<span id="2001">2001</span>
+<span id="2002">2002</span>
+<span id="2003">2003</span>
+<span id="2004">2004</span>
+<span id="2005">2005</span>
+<span id="2006">2006</span>
+<span id="2007">2007</span>
+<span id="2008">2008</span>
+<span id="2009">2009</span>
+<span id="2010">2010</span>
+<span id="2011">2011</span>
+<span id="2012">2012</span>
+<span id="2013">2013</span>
+<span id="2014">2014</span>
+<span id="2015">2015</span>
+<span id="2016">2016</span>
+<span id="2017">2017</span>
+<span id="2018">2018</span>
+<span id="2019">2019</span>
+<span id="2020">2020</span>
+<span id="2021">2021</span>
+<span id="2022">2022</span>
+<span id="2023">2023</span>
+<span id="2024">2024</span>
+<span id="2025">2025</span>
+<span id="2026">2026</span>
+<span id="2027">2027</span>
+<span id="2028">2028</span>
+<span id="2029">2029</span>
+<span id="2030">2030</span>
+<span id="2031">2031</span>
+<span id="2032">2032</span>
+<span id="2033">2033</span>
+<span id="2034">2034</span>
+<span id="2035">2035</span>
+<span id="2036">2036</span>
+<span id="2037">2037</span>
+<span id="2038">2038</span>
+<span id="2039">2039</span>
+<span id="2040">2040</span>
+<span id="2041">2041</span>
+<span id="2042">2042</span>
+<span id="2043">2043</span>
+<span id="2044">2044</span>
+<span id="2045">2045</span>
+<span id="2046">2046</span>
+<span id="2047">2047</span>
+<span id="2048">2048</span>
+<span id="2049">2049</span>
+<span id="2050">2050</span>
+<span id="2051">2051</span>
+<span id="2052">2052</span>
+<span id="2053">2053</span>
+<span id="2054">2054</span>
+<span id="2055">2055</span>
+<span id="2056">2056</span>
+<span id="2057">2057</span>
+<span id="2058">2058</span>
+<span id="2059">2059</span>
+<span id="2060">2060</span>
+<span id="2061">2061</span>
+<span id="2062">2062</span>
+<span id="2063">2063</span>
+<span id="2064">2064</span>
+<span id="2065">2065</span>
+<span id="2066">2066</span>
+<span id="2067">2067</span>
+<span id="2068">2068</span>
+<span id="2069">2069</span>
+<span id="2070">2070</span>
+<span id="2071">2071</span>
+<span id="2072">2072</span>
+<span id="2073">2073</span>
+<span id="2074">2074</span>
+<span id="2075">2075</span>
+<span id="2076">2076</span>
+<span id="2077">2077</span>
+<span id="2078">2078</span>
+<span id="2079">2079</span>
+<span id="2080">2080</span>
+<span id="2081">2081</span>
+<span id="2082">2082</span>
+<span id="2083">2083</span>
+<span id="2084">2084</span>
+<span id="2085">2085</span>
+<span id="2086">2086</span>
+<span id="2087">2087</span>
+<span id="2088">2088</span>
+<span id="2089">2089</span>
+<span id="2090">2090</span>
+<span id="2091">2091</span>
+<span id="2092">2092</span>
+<span id="2093">2093</span>
+<span id="2094">2094</span>
+<span id="2095">2095</span>
+<span id="2096">2096</span>
+<span id="2097">2097</span>
+<span id="2098">2098</span>
+<span id="2099">2099</span>
+<span id="2100">2100</span>
+<span id="2101">2101</span>
+<span id="2102">2102</span>
+<span id="2103">2103</span>
+<span id="2104">2104</span>
+<span id="2105">2105</span>
+<span id="2106">2106</span>
+<span id="2107">2107</span>
+<span id="2108">2108</span>
+<span id="2109">2109</span>
+<span id="2110">2110</span>
+<span id="2111">2111</span>
+<span id="2112">2112</span>
+<span id="2113">2113</span>
+<span id="2114">2114</span>
+<span id="2115">2115</span>
+<span id="2116">2116</span>
+<span id="2117">2117</span>
+<span id="2118">2118</span>
+<span id="2119">2119</span>
+<span id="2120">2120</span>
+<span id="2121">2121</span>
+<span id="2122">2122</span>
+<span id="2123">2123</span>
+<span id="2124">2124</span>
+<span id="2125">2125</span>
+<span id="2126">2126</span>
+<span id="2127">2127</span>
+<span id="2128">2128</span>
+<span id="2129">2129</span>
+<span id="2130">2130</span>
+<span id="2131">2131</span>
+<span id="2132">2132</span>
+<span id="2133">2133</span>
+<span id="2134">2134</span>
+<span id="2135">2135</span>
+<span id="2136">2136</span>
+<span id="2137">2137</span>
+<span id="2138">2138</span>
+<span id="2139">2139</span>
+<span id="2140">2140</span>
+<span id="2141">2141</span>
+<span id="2142">2142</span>
+<span id="2143">2143</span>
+<span id="2144">2144</span>
+<span id="2145">2145</span>
+<span id="2146">2146</span>
+<span id="2147">2147</span>
+<span id="2148">2148</span>
+<span id="2149">2149</span>
+<span id="2150">2150</span>
+<span id="2151">2151</span>
+<span id="2152">2152</span>
+<span id="2153">2153</span>
+<span id="2154">2154</span>
+<span id="2155">2155</span>
+<span id="2156">2156</span>
+<span id="2157">2157</span>
+<span id="2158">2158</span>
+<span id="2159">2159</span>
+<span id="2160">2160</span>
+<span id="2161">2161</span>
+<span id="2162">2162</span>
+<span id="2163">2163</span>
+<span id="2164">2164</span>
+<span id="2165">2165</span>
+<span id="2166">2166</span>
+<span id="2167">2167</span>
+<span id="2168">2168</span>
+<span id="2169">2169</span>
+<span id="2170">2170</span>
+<span id="2171">2171</span>
+<span id="2172">2172</span>
+<span id="2173">2173</span>
+<span id="2174">2174</span>
+<span id="2175">2175</span>
+<span id="2176">2176</span>
+<span id="2177">2177</span>
+<span id="2178">2178</span>
+<span id="2179">2179</span>
+<span id="2180">2180</span>
+<span id="2181">2181</span>
+<span id="2182">2182</span>
+<span id="2183">2183</span>
+<span id="2184">2184</span>
+<span id="2185">2185</span>
+<span id="2186">2186</span>
+<span id="2187">2187</span>
+<span id="2188">2188</span>
+<span id="2189">2189</span>
+<span id="2190">2190</span>
+<span id="2191">2191</span>
+<span id="2192">2192</span>
+<span id="2193">2193</span>
+<span id="2194">2194</span>
+<span id="2195">2195</span>
+<span id="2196">2196</span>
+<span id="2197">2197</span>
+<span id="2198">2198</span>
+<span id="2199">2199</span>
+<span id="2200">2200</span>
+<span id="2201">2201</span>
+<span id="2202">2202</span>
+<span id="2203">2203</span>
+<span id="2204">2204</span>
+<span id="2205">2205</span>
+<span id="2206">2206</span>
+<span id="2207">2207</span>
+<span id="2208">2208</span>
+<span id="2209">2209</span>
+<span id="2210">2210</span>
+<span id="2211">2211</span>
+<span id="2212">2212</span>
+<span id="2213">2213</span>
+<span id="2214">2214</span>
+<span id="2215">2215</span>
+<span id="2216">2216</span>
+<span id="2217">2217</span>
+<span id="2218">2218</span>
+<span id="2219">2219</span>
+<span id="2220">2220</span>
+<span id="2221">2221</span>
+<span id="2222">2222</span>
+<span id="2223">2223</span>
+<span id="2224">2224</span>
+<span id="2225">2225</span>
+<span id="2226">2226</span>
+<span id="2227">2227</span>
+<span id="2228">2228</span>
+<span id="2229">2229</span>
+<span id="2230">2230</span>
+<span id="2231">2231</span>
+<span id="2232">2232</span>
+<span id="2233">2233</span>
+<span id="2234">2234</span>
+<span id="2235">2235</span>
+<span id="2236">2236</span>
+<span id="2237">2237</span>
+<span id="2238">2238</span>
+<span id="2239">2239</span>
+<span id="2240">2240</span>
+<span id="2241">2241</span>
+<span id="2242">2242</span>
+<span id="2243">2243</span>
+<span id="2244">2244</span>
+<span id="2245">2245</span>
+<span id="2246">2246</span>
+<span id="2247">2247</span>
+<span id="2248">2248</span>
+<span id="2249">2249</span>
+<span id="2250">2250</span>
+<span id="2251">2251</span>
+<span id="2252">2252</span>
+<span id="2253">2253</span>
+<span id="2254">2254</span>
+<span id="2255">2255</span>
+<span id="2256">2256</span>
+<span id="2257">2257</span>
+<span id="2258">2258</span>
+<span id="2259">2259</span>
+<span id="2260">2260</span>
+<span id="2261">2261</span>
+<span id="2262">2262</span>
+<span id="2263">2263</span>
+<span id="2264">2264</span>
+<span id="2265">2265</span>
+<span id="2266">2266</span>
+<span id="2267">2267</span>
+<span id="2268">2268</span>
+<span id="2269">2269</span>
+<span id="2270">2270</span>
+<span id="2271">2271</span>
+<span id="2272">2272</span>
+<span id="2273">2273</span>
+<span id="2274">2274</span>
+<span id="2275">2275</span>
+<span id="2276">2276</span>
+<span id="2277">2277</span>
+<span id="2278">2278</span>
+<span id="2279">2279</span>
+<span id="2280">2280</span>
+<span id="2281">2281</span>
+<span id="2282">2282</span>
+<span id="2283">2283</span>
+<span id="2284">2284</span>
+<span id="2285">2285</span>
+<span id="2286">2286</span>
+<span id="2287">2287</span>
+<span id="2288">2288</span>
+<span id="2289">2289</span>
+<span id="2290">2290</span>
+<span id="2291">2291</span>
+<span id="2292">2292</span>
+<span id="2293">2293</span>
+<span id="2294">2294</span>
+<span id="2295">2295</span>
+<span id="2296">2296</span>
+<span id="2297">2297</span>
+<span id="2298">2298</span>
+<span id="2299">2299</span>
+<span id="2300">2300</span>
+<span id="2301">2301</span>
+<span id="2302">2302</span>
+<span id="2303">2303</span>
+<span id="2304">2304</span>
+<span id="2305">2305</span>
+<span id="2306">2306</span>
+<span id="2307">2307</span>
+<span id="2308">2308</span>
+<span id="2309">2309</span>
+<span id="2310">2310</span>
+<span id="2311">2311</span>
+<span id="2312">2312</span>
+<span id="2313">2313</span>
+<span id="2314">2314</span>
+<span id="2315">2315</span>
+<span id="2316">2316</span>
+<span id="2317">2317</span>
+<span id="2318">2318</span>
+<span id="2319">2319</span>
+<span id="2320">2320</span>
+<span id="2321">2321</span>
+<span id="2322">2322</span>
+<span id="2323">2323</span>
+<span id="2324">2324</span>
+<span id="2325">2325</span>
+<span id="2326">2326</span>
+<span id="2327">2327</span>
+<span id="2328">2328</span>
+<span id="2329">2329</span>
+<span id="2330">2330</span>
+<span id="2331">2331</span>
+<span id="2332">2332</span>
+<span id="2333">2333</span>
+<span id="2334">2334</span>
+<span id="2335">2335</span>
+<span id="2336">2336</span>
+<span id="2337">2337</span>
+<span id="2338">2338</span>
+<span id="2339">2339</span>
+<span id="2340">2340</span>
+<span id="2341">2341</span>
+<span id="2342">2342</span>
+<span id="2343">2343</span>
+<span id="2344">2344</span>
+<span id="2345">2345</span>
+<span id="2346">2346</span>
+<span id="2347">2347</span>
+<span id="2348">2348</span>
+<span id="2349">2349</span>
+<span id="2350">2350</span>
+<span id="2351">2351</span>
+<span id="2352">2352</span>
+<span id="2353">2353</span>
+<span id="2354">2354</span>
+<span id="2355">2355</span>
+<span id="2356">2356</span>
+<span id="2357">2357</span>
+<span id="2358">2358</span>
+<span id="2359">2359</span>
+<span id="2360">2360</span>
+<span id="2361">2361</span>
+<span id="2362">2362</span>
+<span id="2363">2363</span>
+<span id="2364">2364</span>
+<span id="2365">2365</span>
+<span id="2366">2366</span>
+<span id="2367">2367</span>
+<span id="2368">2368</span>
+<span id="2369">2369</span>
+<span id="2370">2370</span>
+<span id="2371">2371</span>
+<span id="2372">2372</span>
+<span id="2373">2373</span>
+<span id="2374">2374</span>
+<span id="2375">2375</span>
+<span id="2376">2376</span>
+<span id="2377">2377</span>
+<span id="2378">2378</span>
+<span id="2379">2379</span>
+<span id="2380">2380</span>
+<span id="2381">2381</span>
+<span id="2382">2382</span>
+<span id="2383">2383</span>
+<span id="2384">2384</span>
+<span id="2385">2385</span>
+<span id="2386">2386</span>
+<span id="2387">2387</span>
+<span id="2388">2388</span>
+<span id="2389">2389</span>
+<span id="2390">2390</span>
+<span id="2391">2391</span>
+<span id="2392">2392</span>
+<span id="2393">2393</span>
+<span id="2394">2394</span>
+<span id="2395">2395</span>
+<span id="2396">2396</span>
+<span id="2397">2397</span>
+<span id="2398">2398</span>
+<span id="2399">2399</span>
+<span id="2400">2400</span>
+<span id="2401">2401</span>
+<span id="2402">2402</span>
+<span id="2403">2403</span>
+<span id="2404">2404</span>
+<span id="2405">2405</span>
+<span id="2406">2406</span>
+<span id="2407">2407</span>
+<span id="2408">2408</span>
+<span id="2409">2409</span>
+<span id="2410">2410</span>
+<span id="2411">2411</span>
+<span id="2412">2412</span>
+<span id="2413">2413</span>
+<span id="2414">2414</span>
+<span id="2415">2415</span>
+<span id="2416">2416</span>
+<span id="2417">2417</span>
+<span id="2418">2418</span>
+<span id="2419">2419</span>
+<span id="2420">2420</span>
+<span id="2421">2421</span>
+<span id="2422">2422</span>
+<span id="2423">2423</span>
+<span id="2424">2424</span>
+<span id="2425">2425</span>
+<span id="2426">2426</span>
+<span id="2427">2427</span>
+<span id="2428">2428</span>
+<span id="2429">2429</span>
+<span id="2430">2430</span>
+<span id="2431">2431</span>
+<span id="2432">2432</span>
+<span id="2433">2433</span>
+<span id="2434">2434</span>
+<span id="2435">2435</span>
+<span id="2436">2436</span>
+<span id="2437">2437</span>
+<span id="2438">2438</span>
+<span id="2439">2439</span>
+<span id="2440">2440</span>
+<span id="2441">2441</span>
+<span id="2442">2442</span>
+<span id="2443">2443</span>
+<span id="2444">2444</span>
+<span id="2445">2445</span>
+<span id="2446">2446</span>
+<span id="2447">2447</span>
+<span id="2448">2448</span>
+<span id="2449">2449</span>
+<span id="2450">2450</span>
+<span id="2451">2451</span>
+<span id="2452">2452</span>
+<span id="2453">2453</span>
+<span id="2454">2454</span>
+<span id="2455">2455</span>
+<span id="2456">2456</span>
+<span id="2457">2457</span>
+<span id="2458">2458</span>
+<span id="2459">2459</span>
+<span id="2460">2460</span>
+<span id="2461">2461</span>
+<span id="2462">2462</span>
+<span id="2463">2463</span>
+<span id="2464">2464</span>
+<span id="2465">2465</span>
+<span id="2466">2466</span>
+<span id="2467">2467</span>
+<span id="2468">2468</span>
+<span id="2469">2469</span>
+<span id="2470">2470</span>
+<span id="2471">2471</span>
+<span id="2472">2472</span>
+<span id="2473">2473</span>
+<span id="2474">2474</span>
+<span id="2475">2475</span>
+<span id="2476">2476</span>
+<span id="2477">2477</span>
+<span id="2478">2478</span>
+<span id="2479">2479</span>
+<span id="2480">2480</span>
+<span id="2481">2481</span>
+<span id="2482">2482</span>
+<span id="2483">2483</span>
+<span id="2484">2484</span>
+<span id="2485">2485</span>
+<span id="2486">2486</span>
+<span id="2487">2487</span>
+<span id="2488">2488</span>
+<span id="2489">2489</span>
+<span id="2490">2490</span>
+<span id="2491">2491</span>
+<span id="2492">2492</span>
+<span id="2493">2493</span>
+<span id="2494">2494</span>
+<span id="2495">2495</span>
+<span id="2496">2496</span>
+<span id="2497">2497</span>
+<span id="2498">2498</span>
+<span id="2499">2499</span>
+<span id="2500">2500</span>
+<span id="2501">2501</span>
+<span id="2502">2502</span>
+<span id="2503">2503</span>
+<span id="2504">2504</span>
+<span id="2505">2505</span>
+<span id="2506">2506</span>
+<span id="2507">2507</span>
+<span id="2508">2508</span>
+<span id="2509">2509</span>
+<span id="2510">2510</span>
+<span id="2511">2511</span>
+<span id="2512">2512</span>
+<span id="2513">2513</span>
+<span id="2514">2514</span>
+<span id="2515">2515</span>
+<span id="2516">2516</span>
+<span id="2517">2517</span>
+<span id="2518">2518</span>
+<span id="2519">2519</span>
+<span id="2520">2520</span>
+<span id="2521">2521</span>
+<span id="2522">2522</span>
+<span id="2523">2523</span>
+<span id="2524">2524</span>
+<span id="2525">2525</span>
+<span id="2526">2526</span>
+<span id="2527">2527</span>
+<span id="2528">2528</span>
+<span id="2529">2529</span>
+<span id="2530">2530</span>
+<span id="2531">2531</span>
+<span id="2532">2532</span>
+<span id="2533">2533</span>
+<span id="2534">2534</span>
+<span id="2535">2535</span>
+<span id="2536">2536</span>
+<span id="2537">2537</span>
+<span id="2538">2538</span>
+<span id="2539">2539</span>
+<span id="2540">2540</span>
+<span id="2541">2541</span>
+<span id="2542">2542</span>
+<span id="2543">2543</span>
+<span id="2544">2544</span>
+<span id="2545">2545</span>
+<span id="2546">2546</span>
+<span id="2547">2547</span>
+<span id="2548">2548</span>
+<span id="2549">2549</span>
+<span id="2550">2550</span>
+<span id="2551">2551</span>
+<span id="2552">2552</span>
+<span id="2553">2553</span>
+<span id="2554">2554</span>
+<span id="2555">2555</span>
+<span id="2556">2556</span>
+<span id="2557">2557</span>
+<span id="2558">2558</span>
+<span id="2559">2559</span>
+<span id="2560">2560</span>
+<span id="2561">2561</span>
+<span id="2562">2562</span>
+<span id="2563">2563</span>
+<span id="2564">2564</span>
+<span id="2565">2565</span>
+<span id="2566">2566</span>
+<span id="2567">2567</span>
+<span id="2568">2568</span>
+<span id="2569">2569</span>
+<span id="2570">2570</span>
+<span id="2571">2571</span>
+<span id="2572">2572</span>
+<span id="2573">2573</span>
+<span id="2574">2574</span>
+<span id="2575">2575</span>
+<span id="2576">2576</span>
+<span id="2577">2577</span>
+<span id="2578">2578</span>
+<span id="2579">2579</span>
+<span id="2580">2580</span>
+<span id="2581">2581</span>
+<span id="2582">2582</span>
+<span id="2583">2583</span>
+<span id="2584">2584</span>
+<span id="2585">2585</span>
+<span id="2586">2586</span>
+<span id="2587">2587</span>
+<span id="2588">2588</span>
+</pre><div class="example-wrap"><pre class="rust ">
+<span class="comment">// Copyright 2012-2018 The Rust Project Developers. See the COPYRIGHT</span>
+<span class="comment">// file at the top-level directory of this distribution and at</span>
+<span class="comment">// http://rust-lang.org/COPYRIGHT.</span>
+<span class="comment">//</span>
+<span class="comment">// Licensed under the Apache License, Version 2.0 &lt;LICENSE-APACHE or</span>
+<span class="comment">// http://www.apache.org/licenses/LICENSE-2.0&gt; or the MIT license</span>
+<span class="comment">// &lt;LICENSE-MIT or http://opensource.org/licenses/MIT&gt;, at your</span>
+<span class="comment">// option. This file may not be copied, modified, or distributed</span>
+<span class="comment">// except according to those terms.</span>
+
+<span class="comment">// NOTE: The following code was generated by &quot;scripts/unicode.py&quot;, do not edit directly</span>
+
+<span class="attribute">#![<span class="ident">allow</span>(<span class="ident">missing_docs</span>, <span class="ident">non_upper_case_globals</span>, <span class="ident">non_snake_case</span>)]</span>
+
+<span class="doccomment">/// The version of [Unicode](http://www.unicode.org/)</span>
+<span class="doccomment">/// that this version of unicode-segmentation is based on.</span>
+<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">UNICODE_VERSION</span>: (<span class="ident">u64</span>, <span class="ident">u64</span>, <span class="ident">u64</span>) <span class="op">=</span> (<span class="number">13</span>, <span class="number">0</span>, <span class="number">0</span>);
+
+<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">util</span> {
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">bsearch_range_table</span>(<span class="ident">c</span>: <span class="ident">char</span>, <span class="ident">r</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> [(<span class="ident">char</span>,<span class="ident">char</span>)]) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="kw">use</span> <span class="ident">core</span>::<span class="ident">cmp</span>::<span class="ident">Ordering</span>::{<span class="ident">Equal</span>, <span class="ident">Less</span>, <span class="ident">Greater</span>};
+        <span class="ident">r</span>.<span class="ident">binary_search_by</span>(<span class="op">|</span><span class="kw-2">&amp;</span>(<span class="ident">lo</span>,<span class="ident">hi</span>)<span class="op">|</span> {
+            <span class="kw">if</span> <span class="ident">lo</span> <span class="op">&lt;</span><span class="op">=</span> <span class="ident">c</span> <span class="op">&amp;&amp;</span> <span class="ident">c</span> <span class="op">&lt;</span><span class="op">=</span> <span class="ident">hi</span> { <span class="ident">Equal</span> }
+            <span class="kw">else</span> <span class="kw">if</span> <span class="ident">hi</span> <span class="op">&lt;</span> <span class="ident">c</span> { <span class="ident">Less</span> }
+            <span class="kw">else</span> { <span class="ident">Greater</span> }
+        }).<span class="ident">is_ok</span>()
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">is_alphabetic</span>(<span class="ident">c</span>: <span class="ident">char</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="kw">match</span> <span class="ident">c</span> {
+            <span class="string">&#39;a&#39;</span> ..<span class="op">=</span> <span class="string">&#39;z&#39;</span> <span class="op">|</span> <span class="string">&#39;A&#39;</span> ..<span class="op">=</span> <span class="string">&#39;Z&#39;</span> <span class="op">=</span><span class="op">&gt;</span> <span class="bool-val">true</span>,
+            <span class="ident">c</span> <span class="kw">if</span> <span class="ident">c</span> <span class="op">&gt;</span> <span class="string">&#39;&#39;</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">super</span>::<span class="ident">derived_property</span>::<span class="ident">Alphabetic</span>(<span class="ident">c</span>),
+            <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="bool-val">false</span>,
+        }
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">fn</span> <span class="ident">is_numeric</span>(<span class="ident">c</span>: <span class="ident">char</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="kw">match</span> <span class="ident">c</span> {
+            <span class="string">&#39;0&#39;</span> ..<span class="op">=</span> <span class="string">&#39;9&#39;</span> <span class="op">=</span><span class="op">&gt;</span> <span class="bool-val">true</span>,
+            <span class="ident">c</span> <span class="kw">if</span> <span class="ident">c</span> <span class="op">&gt;</span> <span class="string">&#39;&#39;</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">super</span>::<span class="ident">general_category</span>::<span class="ident">N</span>(<span class="ident">c</span>),
+            <span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="bool-val">false</span>,
+        }
+    }
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_alphanumeric</span>(<span class="ident">c</span>: <span class="ident">char</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="ident">is_alphabetic</span>(<span class="ident">c</span>) <span class="op">|</span><span class="op">|</span> <span class="ident">is_numeric</span>(<span class="ident">c</span>)
+    }
+}
+
+<span class="kw">mod</span> <span class="ident">general_category</span> {
+    <span class="kw">const</span> <span class="ident">N_table</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> [(<span class="ident">char</span>, <span class="ident">char</span>)] <span class="op">=</span> <span class="kw-2">&amp;</span>[
+        (<span class="string">&#39;\u{30}&#39;</span>, <span class="string">&#39;\u{39}&#39;</span>), (<span class="string">&#39;\u{b2}&#39;</span>, <span class="string">&#39;\u{b3}&#39;</span>), (<span class="string">&#39;\u{b9}&#39;</span>, <span class="string">&#39;\u{b9}&#39;</span>), (<span class="string">&#39;\u{bc}&#39;</span>, <span class="string">&#39;\u{be}&#39;</span>),
+        (<span class="string">&#39;\u{660}&#39;</span>, <span class="string">&#39;\u{669}&#39;</span>), (<span class="string">&#39;\u{6f0}&#39;</span>, <span class="string">&#39;\u{6f9}&#39;</span>), (<span class="string">&#39;\u{7c0}&#39;</span>, <span class="string">&#39;\u{7c9}&#39;</span>), (<span class="string">&#39;\u{966}&#39;</span>,
+        <span class="string">&#39;\u{96f}&#39;</span>), (<span class="string">&#39;\u{9e6}&#39;</span>, <span class="string">&#39;\u{9ef}&#39;</span>), (<span class="string">&#39;\u{9f4}&#39;</span>, <span class="string">&#39;\u{9f9}&#39;</span>), (<span class="string">&#39;\u{a66}&#39;</span>, <span class="string">&#39;\u{a6f}&#39;</span>),
+        (<span class="string">&#39;\u{ae6}&#39;</span>, <span class="string">&#39;\u{aef}&#39;</span>), (<span class="string">&#39;\u{b66}&#39;</span>, <span class="string">&#39;\u{b6f}&#39;</span>), (<span class="string">&#39;\u{b72}&#39;</span>, <span class="string">&#39;\u{b77}&#39;</span>), (<span class="string">&#39;\u{be6}&#39;</span>,
+        <span class="string">&#39;\u{bf2}&#39;</span>), (<span class="string">&#39;\u{c66}&#39;</span>, <span class="string">&#39;\u{c6f}&#39;</span>), (<span class="string">&#39;\u{c78}&#39;</span>, <span class="string">&#39;\u{c7e}&#39;</span>), (<span class="string">&#39;\u{ce6}&#39;</span>, <span class="string">&#39;\u{cef}&#39;</span>),
+        (<span class="string">&#39;\u{d58}&#39;</span>, <span class="string">&#39;\u{d5e}&#39;</span>), (<span class="string">&#39;\u{d66}&#39;</span>, <span class="string">&#39;\u{d78}&#39;</span>), (<span class="string">&#39;\u{de6}&#39;</span>, <span class="string">&#39;\u{def}&#39;</span>), (<span class="string">&#39;\u{e50}&#39;</span>,
+        <span class="string">&#39;\u{e59}&#39;</span>), (<span class="string">&#39;\u{ed0}&#39;</span>, <span class="string">&#39;\u{ed9}&#39;</span>), (<span class="string">&#39;\u{f20}&#39;</span>, <span class="string">&#39;\u{f33}&#39;</span>), (<span class="string">&#39;\u{1040}&#39;</span>, <span class="string">&#39;\u{1049}&#39;</span>),
+        (<span class="string">&#39;\u{1090}&#39;</span>, <span class="string">&#39;\u{1099}&#39;</span>), (<span class="string">&#39;\u{1369}&#39;</span>, <span class="string">&#39;\u{137c}&#39;</span>), (<span class="string">&#39;\u{16ee}&#39;</span>, <span class="string">&#39;\u{16f0}&#39;</span>), (<span class="string">&#39;\u{17e0}&#39;</span>,
+        <span class="string">&#39;\u{17e9}&#39;</span>), (<span class="string">&#39;\u{17f0}&#39;</span>, <span class="string">&#39;\u{17f9}&#39;</span>), (<span class="string">&#39;\u{1810}&#39;</span>, <span class="string">&#39;\u{1819}&#39;</span>), (<span class="string">&#39;\u{1946}&#39;</span>, <span class="string">&#39;\u{194f}&#39;</span>),
+        (<span class="string">&#39;\u{19d0}&#39;</span>, <span class="string">&#39;\u{19da}&#39;</span>), (<span class="string">&#39;\u{1a80}&#39;</span>, <span class="string">&#39;\u{1a89}&#39;</span>), (<span class="string">&#39;\u{1a90}&#39;</span>, <span class="string">&#39;\u{1a99}&#39;</span>), (<span class="string">&#39;\u{1b50}&#39;</span>,
+        <span class="string">&#39;\u{1b59}&#39;</span>), (<span class="string">&#39;\u{1bb0}&#39;</span>, <span class="string">&#39;\u{1bb9}&#39;</span>), (<span class="string">&#39;\u{1c40}&#39;</span>, <span class="string">&#39;\u{1c49}&#39;</span>), (<span class="string">&#39;\u{1c50}&#39;</span>, <span class="string">&#39;\u{1c59}&#39;</span>),
+        (<span class="string">&#39;\u{2070}&#39;</span>, <span class="string">&#39;\u{2070}&#39;</span>), (<span class="string">&#39;\u{2074}&#39;</span>, <span class="string">&#39;\u{2079}&#39;</span>), (<span class="string">&#39;\u{2080}&#39;</span>, <span class="string">&#39;\u{2089}&#39;</span>), (<span class="string">&#39;\u{2150}&#39;</span>,
+        <span class="string">&#39;\u{2182}&#39;</span>), (<span class="string">&#39;\u{2185}&#39;</span>, <span class="string">&#39;\u{2189}&#39;</span>), (<span class="string">&#39;\u{2460}&#39;</span>, <span class="string">&#39;\u{249b}&#39;</span>), (<span class="string">&#39;\u{24ea}&#39;</span>, <span class="string">&#39;\u{24ff}&#39;</span>),
+        (<span class="string">&#39;\u{2776}&#39;</span>, <span class="string">&#39;\u{2793}&#39;</span>), (<span class="string">&#39;\u{2cfd}&#39;</span>, <span class="string">&#39;\u{2cfd}&#39;</span>), (<span class="string">&#39;\u{3007}&#39;</span>, <span class="string">&#39;\u{3007}&#39;</span>), (<span class="string">&#39;\u{3021}&#39;</span>,
+        <span class="string">&#39;\u{3029}&#39;</span>), (<span class="string">&#39;\u{3038}&#39;</span>, <span class="string">&#39;\u{303a}&#39;</span>), (<span class="string">&#39;\u{3192}&#39;</span>, <span class="string">&#39;\u{3195}&#39;</span>), (<span class="string">&#39;\u{3220}&#39;</span>, <span class="string">&#39;\u{3229}&#39;</span>),
+        (<span class="string">&#39;\u{3248}&#39;</span>, <span class="string">&#39;\u{324f}&#39;</span>), (<span class="string">&#39;\u{3251}&#39;</span>, <span class="string">&#39;\u{325f}&#39;</span>), (<span class="string">&#39;\u{3280}&#39;</span>, <span class="string">&#39;\u{3289}&#39;</span>), (<span class="string">&#39;\u{32b1}&#39;</span>,
+        <span class="string">&#39;\u{32bf}&#39;</span>), (<span class="string">&#39;\u{a620}&#39;</span>, <span class="string">&#39;\u{a629}&#39;</span>), (<span class="string">&#39;\u{a6e6}&#39;</span>, <span class="string">&#39;\u{a6ef}&#39;</span>), (<span class="string">&#39;\u{a830}&#39;</span>, <span class="string">&#39;\u{a835}&#39;</span>),
+        (<span class="string">&#39;\u{a8d0}&#39;</span>, <span class="string">&#39;\u{a8d9}&#39;</span>), (<span class="string">&#39;\u{a900}&#39;</span>, <span class="string">&#39;\u{a909}&#39;</span>), (<span class="string">&#39;\u{a9d0}&#39;</span>, <span class="string">&#39;\u{a9d9}&#39;</span>), (<span class="string">&#39;\u{a9f0}&#39;</span>,
+        <span class="string">&#39;\u{a9f9}&#39;</span>), (<span class="string">&#39;\u{aa50}&#39;</span>, <span class="string">&#39;\u{aa59}&#39;</span>), (<span class="string">&#39;\u{abf0}&#39;</span>, <span class="string">&#39;\u{abf9}&#39;</span>), (<span class="string">&#39;\u{ff10}&#39;</span>, <span class="string">&#39;\u{ff19}&#39;</span>),
+        (<span class="string">&#39;\u{10107}&#39;</span>, <span class="string">&#39;\u{10133}&#39;</span>), (<span class="string">&#39;\u{10140}&#39;</span>, <span class="string">&#39;\u{10178}&#39;</span>), (<span class="string">&#39;\u{1018a}&#39;</span>, <span class="string">&#39;\u{1018b}&#39;</span>),
+        (<span class="string">&#39;\u{102e1}&#39;</span>, <span class="string">&#39;\u{102fb}&#39;</span>), (<span class="string">&#39;\u{10320}&#39;</span>, <span class="string">&#39;\u{10323}&#39;</span>), (<span class="string">&#39;\u{10341}&#39;</span>, <span class="string">&#39;\u{10341}&#39;</span>),
+        (<span class="string">&#39;\u{1034a}&#39;</span>, <span class="string">&#39;\u{1034a}&#39;</span>), (<span class="string">&#39;\u{103d1}&#39;</span>, <span class="string">&#39;\u{103d5}&#39;</span>), (<span class="string">&#39;\u{104a0}&#39;</span>, <span class="string">&#39;\u{104a9}&#39;</span>),
+        (<span class="string">&#39;\u{10858}&#39;</span>, <span class="string">&#39;\u{1085f}&#39;</span>), (<span class="string">&#39;\u{10879}&#39;</span>, <span class="string">&#39;\u{1087f}&#39;</span>), (<span class="string">&#39;\u{108a7}&#39;</span>, <span class="string">&#39;\u{108af}&#39;</span>),
+        (<span class="string">&#39;\u{108fb}&#39;</span>, <span class="string">&#39;\u{108ff}&#39;</span>), (<span class="string">&#39;\u{10916}&#39;</span>, <span class="string">&#39;\u{1091b}&#39;</span>), (<span class="string">&#39;\u{109bc}&#39;</span>, <span class="string">&#39;\u{109bd}&#39;</span>),
+        (<span class="string">&#39;\u{109c0}&#39;</span>, <span class="string">&#39;\u{109cf}&#39;</span>), (<span class="string">&#39;\u{109d2}&#39;</span>, <span class="string">&#39;\u{109ff}&#39;</span>), (<span class="string">&#39;\u{10a40}&#39;</span>, <span class="string">&#39;\u{10a48}&#39;</span>),
+        (<span class="string">&#39;\u{10a7d}&#39;</span>, <span class="string">&#39;\u{10a7e}&#39;</span>), (<span class="string">&#39;\u{10a9d}&#39;</span>, <span class="string">&#39;\u{10a9f}&#39;</span>), (<span class="string">&#39;\u{10aeb}&#39;</span>, <span class="string">&#39;\u{10aef}&#39;</span>),
+        (<span class="string">&#39;\u{10b58}&#39;</span>, <span class="string">&#39;\u{10b5f}&#39;</span>), (<span class="string">&#39;\u{10b78}&#39;</span>, <span class="string">&#39;\u{10b7f}&#39;</span>), (<span class="string">&#39;\u{10ba9}&#39;</span>, <span class="string">&#39;\u{10baf}&#39;</span>),
+        (<span class="string">&#39;\u{10cfa}&#39;</span>, <span class="string">&#39;\u{10cff}&#39;</span>), (<span class="string">&#39;\u{10d30}&#39;</span>, <span class="string">&#39;\u{10d39}&#39;</span>), (<span class="string">&#39;\u{10e60}&#39;</span>, <span class="string">&#39;\u{10e7e}&#39;</span>),
+        (<span class="string">&#39;\u{10f1d}&#39;</span>, <span class="string">&#39;\u{10f26}&#39;</span>), (<span class="string">&#39;\u{10f51}&#39;</span>, <span class="string">&#39;\u{10f54}&#39;</span>), (<span class="string">&#39;\u{10fc5}&#39;</span>, <span class="string">&#39;\u{10fcb}&#39;</span>),
+        (<span class="string">&#39;\u{11052}&#39;</span>, <span class="string">&#39;\u{1106f}&#39;</span>), (<span class="string">&#39;\u{110f0}&#39;</span>, <span class="string">&#39;\u{110f9}&#39;</span>), (<span class="string">&#39;\u{11136}&#39;</span>, <span class="string">&#39;\u{1113f}&#39;</span>),
+        (<span class="string">&#39;\u{111d0}&#39;</span>, <span class="string">&#39;\u{111d9}&#39;</span>), (<span class="string">&#39;\u{111e1}&#39;</span>, <span class="string">&#39;\u{111f4}&#39;</span>), (<span class="string">&#39;\u{112f0}&#39;</span>, <span class="string">&#39;\u{112f9}&#39;</span>),
+        (<span class="string">&#39;\u{11450}&#39;</span>, <span class="string">&#39;\u{11459}&#39;</span>), (<span class="string">&#39;\u{114d0}&#39;</span>, <span class="string">&#39;\u{114d9}&#39;</span>), (<span class="string">&#39;\u{11650}&#39;</span>, <span class="string">&#39;\u{11659}&#39;</span>),
+        (<span class="string">&#39;\u{116c0}&#39;</span>, <span class="string">&#39;\u{116c9}&#39;</span>), (<span class="string">&#39;\u{11730}&#39;</span>, <span class="string">&#39;\u{1173b}&#39;</span>), (<span class="string">&#39;\u{118e0}&#39;</span>, <span class="string">&#39;\u{118f2}&#39;</span>),
+        (<span class="string">&#39;\u{11950}&#39;</span>, <span class="string">&#39;\u{11959}&#39;</span>), (<span class="string">&#39;\u{11c50}&#39;</span>, <span class="string">&#39;\u{11c6c}&#39;</span>), (<span class="string">&#39;\u{11d50}&#39;</span>, <span class="string">&#39;\u{11d59}&#39;</span>),
+        (<span class="string">&#39;\u{11da0}&#39;</span>, <span class="string">&#39;\u{11da9}&#39;</span>), (<span class="string">&#39;\u{11fc0}&#39;</span>, <span class="string">&#39;\u{11fd4}&#39;</span>), (<span class="string">&#39;\u{12400}&#39;</span>, <span class="string">&#39;\u{1246e}&#39;</span>),
+        (<span class="string">&#39;\u{16a60}&#39;</span>, <span class="string">&#39;\u{16a69}&#39;</span>), (<span class="string">&#39;\u{16b50}&#39;</span>, <span class="string">&#39;\u{16b59}&#39;</span>), (<span class="string">&#39;\u{16b5b}&#39;</span>, <span class="string">&#39;\u{16b61}&#39;</span>),
+        (<span class="string">&#39;\u{16e80}&#39;</span>, <span class="string">&#39;\u{16e96}&#39;</span>), (<span class="string">&#39;\u{1d2e0}&#39;</span>, <span class="string">&#39;\u{1d2f3}&#39;</span>), (<span class="string">&#39;\u{1d360}&#39;</span>, <span class="string">&#39;\u{1d378}&#39;</span>),
+        (<span class="string">&#39;\u{1d7ce}&#39;</span>, <span class="string">&#39;\u{1d7ff}&#39;</span>), (<span class="string">&#39;\u{1e140}&#39;</span>, <span class="string">&#39;\u{1e149}&#39;</span>), (<span class="string">&#39;\u{1e2f0}&#39;</span>, <span class="string">&#39;\u{1e2f9}&#39;</span>),
+        (<span class="string">&#39;\u{1e8c7}&#39;</span>, <span class="string">&#39;\u{1e8cf}&#39;</span>), (<span class="string">&#39;\u{1e950}&#39;</span>, <span class="string">&#39;\u{1e959}&#39;</span>), (<span class="string">&#39;\u{1ec71}&#39;</span>, <span class="string">&#39;\u{1ecab}&#39;</span>),
+        (<span class="string">&#39;\u{1ecad}&#39;</span>, <span class="string">&#39;\u{1ecaf}&#39;</span>), (<span class="string">&#39;\u{1ecb1}&#39;</span>, <span class="string">&#39;\u{1ecb4}&#39;</span>), (<span class="string">&#39;\u{1ed01}&#39;</span>, <span class="string">&#39;\u{1ed2d}&#39;</span>),
+        (<span class="string">&#39;\u{1ed2f}&#39;</span>, <span class="string">&#39;\u{1ed3d}&#39;</span>), (<span class="string">&#39;\u{1f100}&#39;</span>, <span class="string">&#39;\u{1f10c}&#39;</span>), (<span class="string">&#39;\u{1fbf0}&#39;</span>, <span class="string">&#39;\u{1fbf9}&#39;</span>)
+    ];
+
+    <span class="attribute">#[<span class="ident">inline</span>]</span>
+    <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">N</span>(<span class="ident">c</span>: <span class="ident">char</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
+        <span class="kw">super</span>::<span class="ident">util</span>::<span class="ident">bsearch_range_table</span>(<span class="ident">c</span>, <span class="ident">N_table</span>)
+    }
+
+}
+
+<span class="kw">mod</span> <span class="ident">derived_property</span> {
+    <span class="kw">const</span> <span class="ident">Alphabetic_table</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> [(<span class="ident">char</span>, <span class="ident">char</span>)] <span class="op">=</span> <span class="kw-2">&amp;</span>[
+        (<span class="string">&#39;\u{41}&#39;</span>, <span class="string">&#39;\u{5a}&#39;</span>), (<span class="string">&#39;\u{61}&#39;</span>, <span class="string">&#39;\u{7a}&#39;</span>), (<span class="string">&#39;\u{aa}&#39;</span>, <span class="string">&#39;\u{aa}&#39;</span>), (<span class="string">&#39;\u{b5}&#39;</span>, <span class="string">&#39;\u{b5}&#39;</span>),
+        (<span class="string">&#39;\u{ba}&#39;</span>, <span class="string">&#39;\u{ba}&#39;</span>), (<span class="string">&#39;\u{c0}&#39;</span>, <span class="string">&#39;\u{d6}&#39;</span>), (<span class="string">&#39;\u{d8}&#39;</span>, <span class="string">&#39;\u{f6}&#39;</span>), (<span class="string">&#39;\u{f8}&#39;</span>, <span class="string">&#39;\u{2c1}&#39;</span>),
+        (<span class="string">&#39;\u{2c6}&#39;</span>, <span class="string">&#39;\u{2d1}&#39;</span>), (<span class="string">&#39;\u{2e0}&#39;</span>, <span class="string">&#39;\u{2e4}&#39;</span>), (<span class="string">&#39;\u{2ec}&#39;</span>, <span class="string">&#39;\u{2ec}&#39;</span>), (<span class="string">&#39;\u{2ee}&#39;</span>,
+        <span class="string">&#39;\u{2ee}&#39;</span>), (<span class="string">&#39;\u{345}&#39;</span>, <span class="string">&#39;\u{345}&#39;</span>), (<span class="string">&#39;\u{370}&#39;</span>, <span class="string">&#39;\u{374}&#39;</span>), (<span class="string">&#39;\u{376}&#39;</span>, <span class="string">&#39;\u{377}&#39;</span>),
+        (<span class="string">&#39;\u{37a}&#39;</span>, <span class="string">&#39;\u{37d}&#39;</span>), (<span class="string">&#39;\u{37f}&#39;</span>, <span class="string">&#39;\u{37f}&#39;</span>), (<span class="string">&#39;\u{386}&#39;</span>, <span class="string">&#39;\u{386}&#39;</span>), (<span class="string">&#39;\u{388}&#39;</span>,
+        <span class="string">&#39;\u{38a}&#39;</span>), (<span class="string">&#39;\u{38c}&#39;</span>, <span class="string">&#39;\u{38c}&#39;</span>), (<span class="string">&#39;\u{38e}&#39;</span>, <span class="string">&#39;\u{3a1}&#39;</span>), (<span class="string">&#39;\u{3a3}&#39;</span>, <span class="string">&#39;\u{3f5}&#39;</span>),
+        (<span class="string">&#39;\u{3f7}&#39;</span>, <span class="string">&#39;\u{481}&#39;</span>), (<span class="string">&#39;\u{48a}&#39;</span>, <span class="string">&#39;\u{52f}&#39;</span>), (<span class="string">&#39;\u{531}&#39;</span>, <span class="string">&#39;\u{556}&#39;</span>), (<span class="string">&#39;\u{559}&#39;</span>,
+        <span class="string">&#39;\u{559}&#39;</span>), (<span class="string">&#39;\u{560}&#39;</span>, <span class="string">&#39;\u{588}&#39;</span>), (<span class="string">&#39;\u{5b0}&#39;</span>, <span class="string">&#39;\u{5bd}&#39;</span>), (<span class="string">&#39;\u{5bf}&#39;</span>, <span class="string">&#39;\u{5bf}&#39;</span>),
+        (<span class="string">&#39;\u{5c1}&#39;</span>, <span class="string">&#39;\u{5c2}&#39;</span>), (<span class="string">&#39;\u{5c4}&#39;</span>, <span class="string">&#39;\u{5c5}&#39;</span>), (<span class="string">&#39;\u{5c7}&#39;</span>, <span class="string">&#39;\u{5c7}&#39;</span>), (<span class="string">&#39;\u{5d0}&#39;</span>,
+        <span class="string">&#39;\u{5ea}&#39;</span>), (<span class="string">&#39;\u{5ef}&#39;</span>, <span class="string">&#39;\u{5f2}&#39;</span>), (<span class="string">&#39;\u{610}&#39;</span>, <span class="string">&#39;\u{61a}&#39;</span>), (<span class="string">&#39;\u{620}&#39;</span>, <span class="string">&#39;\u{657}&#39;</span>),
+        (<span class="string">&#39;\u{659}&#39;</span>, <span class="string">&#39;\u{65f}&#39;</span>), (<span class="string">&#39;\u{66e}&#39;</span>, <span class="string">&#39;\u{6d3}&#39;</span>), (<span class="string">&#39;\u{6d5}&#39;</span>, <span class="string">&#39;\u{6dc}&#39;</span>), (<span class="string">&#39;\u{6e1}&#39;</span>,
+        <span class="string">&#39;\u{6e8}&#39;</span>), (<span class="string">&#39;\u{6ed}&#39;</span>, <span class="string">&#39;\u{6ef}&#39;</span>), (<span class="string">&#39;\u{6fa}&#39;</span>, <span class="string">&#39;\u{6fc}&#39;</span>), (<span class="string">&#39;\u{6ff}&#39;</span>, <span class="string">&#39;\u{6ff}&#39;</span>),
+        (<span class="string">&#39;\u{710}&#39;</span>, <span class="string">&#39;\u{73f}&#39;</span>), (<span class="string">&#39;\u{74d}&#39;</span>, <span class="string">&#39;\u{7b1}&#39;</span>), (<span class="string">&#39;\u{7ca}&#39;</span>, <span class="string">&#39;\u{7ea}&#39;</span>), (<span class="string">&#39;\u{7f4}&#39;</span>,
+        <span class="string">&#39;\u{7f5}&#39;</span>), (<span class="string">&#39;\u{7fa}&#39;</span>, <span class="string">&#39;\u{7fa}&#39;</span>), (<span class="string">&#39;\u{800}&#39;</span>, <span class="string">&#39;\u{817}&#39;</span>), (<span class="string">&#39;\u{81a}&#39;</span>, <span class="string">&#39;\u{82c}&#39;</span>),
+        (<span class="string">&#39;\u{840}&#39;</span>, <span class="string">&#39;\u{858}&#39;</span>), (<span class="string">&#39;\u{860}&#39;</span>, <span class="string">&#39;\u{86a}&#39;</span>), (<span class="string">&#39;\u{8a0}&#39;</span>, <span class="string">&#39;\u{8b4}&#39;</span>), (<span class="string">&#39;\u{8b6}&#39;</span>,
+        <span class="string">&#39;\u{8c7}&#39;</span>), (<span class="string">&#39;\u{8d4}&#39;</span>, <span class="string">&#39;\u{8df}&#39;</span>), (<span class="string">&#39;\u{8e3}&#39;</span>, <span class="string">&#39;\u{8e9}&#39;</span>), (<span class="string">&#39;\u{8f0}&#39;</span>, <span class="string">&#39;\u{93b}&#39;</span>),
+        (<span class="string">&#39;\u{93d}&#39;</span>, <span class="string">&#39;\u{94c}&#39;</span>), (<span class="string">&#39;\u{94e}&#39;</span>, <span class="string">&#39;\u{950}&#39;</span>), (<span class="string">&#39;\u{955}&#39;</span>, <span class="string">&#39;\u{963}&#39;</span>), (<span class="string">&#39;\u{971}&#39;</span>,
+        <span class="string">&#39;\u{983}&#39;</span>), (<span class="string">&#39;\u{985}&#39;</span>, <span class="string">&#39;\u{98c}&#39;</span>), (<span class="string">&#39;\u{98f}&#39;</span>, <span class="string">&#39;\u{990}&#39;</span>), (<span class="string">&#39;\u{993}&#39;</span>, <span class="string">&#39;\u{9a8}&#39;</span>),
+        (<span class="string">&#39;\u{9aa}&#39;</span>, <span class="string">&#39;\u{9b0}&#39;</span>), (<span class="string">&#39;\u{9b2}&#39;</span>, <span class="string">&#39;\u{9b2}&#39;</span>), (<span class="string">&#39;\u{9b6}&#39;</span>, <span class="string">&#39;\u{9b9}&#39;</span>), (<span class="string">&#39;\u{9bd}&#39;</span>,
+        <span class="string">&#39;\u{9c4}&#39;</span>), (<span class="string">&#39;\u{9c7}&#39;</span>, <span class="string">&#39;\u{9c8}&#39;</span>), (<span class="string">&#39;\u{9cb}&#39;</span>, <span class="string">&#39;\u{9cc}&#39;</span>), (<span class="string">&#39;\u{9ce}&#39;</span>, <span class="string">&#39;\u{9ce}&#39;</span>),
+        (<span class="string">&#39;\u{9d7}&#39;</span>, <span class="string">&#39;\u{9d7}&#39;</span>), (<span class="string">&#39;\u{9dc}&#39;</span>, <span class="string">&#39;\u{9dd}&#39;</span>), (<span class="string">&#39;\u{9df}&#39;</span>, <span class="string">&#39;\u{9e3}&#39;</span>), (<span class="string">&#39;\u{9f0}&#39;</span>,
+        <span class="string">&#39;\u{9f1}&#39;</span>), (<span class="string">&#39;\u{9fc}&#39;</span>, <span class="string">&#39;\u{9fc}&#39;</span>), (<span class="string">&#39;\u{a01}&#39;</span>, <span class="string">&#39;\u{a03}&#39;</span>), (<span class="string">&#39;\u{a05}&#39;</span>, <span class="string">&#39;\u{a0a}&#39;</span>),
+        (<span class="string">&#39;\u{a0f}&#39;</span>, <span class="string">&#39;\u{a10}&#39;</span>), (<span class="string">&#39;\u{a13}&#39;</span>, <span class="string">&#39;\u{a28}&#39;</span>), (<span class="string">&#39;\u{a2a}&#39;</span>, <span class="string">&#39;\u{a30}&#39;</span>), (<span class="string">&#39;\u{a32}&#39;</span>,
+        <span class="string">&#39;\u{a33}&#39;</span>), (<span class="string">&#39;\u{a35}&#39;</span>, <span class="string">&#39;\u{a36}&#39;</span>), (<span class="string">&#39;\u{a38}&#39;</span>, <span class="string">&#39;\u{a39}&#39;</span>), (<span class="string">&#39;\u{a3e}&#39;</span>, <span class="string">&#39;\u{a42}&#39;</span>),
+        (<span class="string">&#39;\u{a47}&#39;</span>, <span class="string">&#39;\u{a48}&#39;</span>), (<span class="string">&#39;\u{a4b}&#39;</span>, <span class="string">&#39;\u{a4c}&#39;</span>), (<span class="string">&#39;\u{a51}&#39;</span>, <span class="string">&#39;\u{a51}&#39;</span>), (<span class="string">&#39;\u{a59}&#39;</span>,
+        <span class="string">&#39;\u{a5c}&#39;</span>), (<span class="string">&#39;\u{a5e}&#39;</span>, <span class="string">&#39;\u{a5e}&#39;</span>), (<span class="string">&#39;\u{a70}&#39;</span>, <span class="string">&#39;\u{a75}&#39;</span>), (<span class="string">&#39;\u{a81}&#39;</span>, <span class="string">&#39;\u{a83}&#39;</span>),
+        (<span class="string">&#39;\u{a85}&#39;</span>, <span class="string">&#39;\u{a8d}&#39;</span>), (<span class="string">&#39;\u{a8f}&#39;</span>, <span class="string">&#39;\u{a91}&#39;</span>), (<span class="string">&#39;\u{a93}&#39;</span>, <span class="string">&#39;\u{aa8}&#39;</span>), (<span class="string">&#39;\u{aaa}&#39;</span>,
+        <span class="string">&#39;\u{ab0}&#39;</span>), (<span class="string">&#39;\u{ab2}&#39;</span>, <span class="string">&#39;\u{ab3}&#39;</span>), (<span class="string">&#39;\u{ab5}&#39;</span>, <span class="string">&#39;\u{ab9}&#39;</span>), (<span class="string">&#39;\u{abd}&#39;</span>, <span class="string">&#39;\u{ac5}&#39;</span>),
+        (<span class="string">&#39;\u{ac7}&#39;</span>, <span class="string">&#39;\u{ac9}&#39;</span>), (<span class="string">&#39;\u{acb}&#39;</span>, <span class="string">&#39;\u{acc}&#39;</span>), (<span class="string">&#39;\u{ad0}&#39;</span>, <span class="string">&#39;\u{ad0}&#39;</span>), (<span class="string">&#39;\u{ae0}&#39;</span>,
+        <span class="string">&#39;\u{ae3}&#39;</span>), (<span class="string">&#39;\u{af9}&#39;</span>, <span class="string">&#39;\u{afc}&#39;</span>), (<span class="string">&#39;\u{b01}&#39;</span>, <span class="string">&#39;\u{b03}&#39;</span>), (<span class="string">&#39;\u{b05}&#39;</span>, <span class="string">&#39;\u{b0c}&#39;</span>),
+        (<span class="string">&#39;\u{b0f}&#39;</span>, <span class="string">&#39;\u{b10}&#39;</span>), (<span class="string">&#39;\u{b13}&#39;</span>, <span class="string">&#39;\u{b28}&#39;</span>), (<span class="string">&#39;\u{b2a}&#39;</span>, <span class="string">&#39;\u{b30}&#39;</span>), (<span class="string">&#39;\u{b32}&#39;</span>,
+        <span class="string">&#39;\u{b33}&#39;</span>), (<span class="string">&#39;\u{b35}&#39;</span>, <span class="string">&#39;\u{b39}&#39;</span>), (<span class="string">&#39;\u{b3d}&#39;</span>, <span class="string">&#39;\u{b44}&#39;</span>), (<span class="string">&#39;\u{b47}&#39;</span>, <span class="string">&#39;\u{b48}&#39;</span>),
+        (<span class="string">&#39;\u{b4b}&#39;</span>, <span class="string">&#39;\u{b4c}&#39;</span>), (<span class="string">&#39;\u{b56}&#39;</span>, <span class="string">&#39;\u{b57}&#39;</span>), (<span class="string">&#39;\u{b5c}&#39;</span>, <span class="string">&#39;\u{b5d}&#39;</span>), (<span class="string">&#39;\u{b5f}&#39;</span>,
+        <span class="string">&#39;\u{b63}&#39;</span>), (<span class="string">&#39;\u{b71}&#39;</span>, <span class="string">&#39;\u{b71}&#39;</span>), (<span class="string">&#39;\u{b82}&#39;</span>, <span class="string">&#39;\u{b83}&#39;</span>), (<span class="string">&#39;\u{b85}&#39;</span>, <span class="string">&#39;\u{b8a}&#39;</span>),
+        (<span class="string">&#39;\u{b8e}&#39;</span>, <span class="string">&#39;\u{b90}&#39;</span>), (<span class="string">&#39;\u{b92}&#39;</span>, <span class="string">&#39;\u{b95}&#39;</span>), (<span class="string">&#39;\u{b99}&#39;</span>, <span class="string">&#39;\u{b9a}&#39;</span>), (<span class="string">&#39;\u{b9c}&#39;</span>,
+        <span class="string">&#39;\u{b9c}&#39;</span>), (<span class="string">&#39;\u{b9e}&#39;</span>, <span class="string">&#39;\u{b9f}&#39;</span>), (<span class="string">&#39;\u{ba3}&#39;</span>, <span class="string">&#39;\u{ba4}&#39;</span>), (<span class="string">&#39;\u{ba8}&#39;</span>, <span class="string">&#39;\u{baa}&#39;</span>),
+        (<span class="string">&#39;\u{bae}&#39;</span>, <span class="string">&#39;\u{bb9}&#39;</span>), (<span class="string">&#39;\u{bbe}&#39;</span>, <span class="string">&#39;\u{bc2}&#39;</span>), (<span class="string">&#39;\u{bc6}&#39;</span>, <span class="string">&#39;\u{bc8}&#39;</span>), (<span class="string">&#39;\u{bca}&#39;</span>,
+        <span class="string">&#39;\u{bcc}&#39;</span>), (<span class="string">&#39;\u{bd0}&#39;</span>, <span class="string">&#39;\u{bd0}&#39;</span>), (<span class="string">&#39;\u{bd7}&#39;</span>, <span class="string">&#39;\u{bd7}&#39;</span>), (<span class="string">&#39;\u{c00}&#39;</span>, <span class="string">&#39;\u{c03}&#39;</span>),
+        (<span class="string">&#39;\u{c05}&#39;</span>, <span class="string">&#39;\u{c0c}&#39;</span>), (<span class="string">&#39;\u{c0e}&#39;</span>, <span class="string">&#39;\u{c10}&#39;</span>), (<span class="string">&#39;\u{c12}&#39;</span>, <span class="string">&#39;\u{c28}&#39;</span>), (<span class="string">&#39;\u{c2a}&#39;</span>,
+        <span class="string">&#39;\u{c39}&#39;</span>), (<span class="string">&#39;\u{c3d}&#39;</span>, <span class="string">&#39;\u{c44}&#39;</span>), (<span class="string">&#39;\u{c46}&#39;</span>, <span class="string">&#39;\u{c48}&#39;</span>), (<span class="string">&#39;\u{c4a}&#39;</span>, <span class="string">&#39;\u{c4c}&#39;</span>),
+        (<span class="string">&#39;\u{c55}&#39;</span>, <span class="string">&#39;\u{c56}&#39;</span>), (<span class="string">&#39;\u{c58}&#39;</span>, <span class="string">&#39;\u{c5a}&#39;</span>), (<span class="string">&#39;\u{c60}&#39;</span>, <span class="string">&#39;\u{c63}&#39;</span>), (<span class="string">&#39;\u{c80}&#39;</span>,
+        <span class="string">&#39;\u{c83}&#39;</span>), (<span class="string">&#39;\u{c85}&#39;</span>, <span class="string">&#39;\u{c8c}&#39;</span>), (<span class="string">&#39;\u{c8e}&#39;</span>, <span class="string">&#39;\u{c90}&#39;</span>), (<span class="string">&#39;\u{c92}&#39;</span>, <span class="string">&#39;\u{ca8}&#39;</span>),
+        (<span class="string">&#39;\u{caa}&#39;</span>, <span class="string">&#39;\u{cb3}&#39;</span>), (<span class="string">&#39;\u{cb5}&#39;</span>, <span class="string">&#39;\u{cb9}&#39;</span>), (<span class="string">&#39;\u{cbd}&#39;</span>, <span class="string">&#39;\u{cc4}&#39;</span>), (<span class="string">&#39;\u{cc6}&#39;</span>,
+        <span class="string">&#39;\u{cc8}&#39;</span>), (<span class="string">&#39;\u{cca}&#39;</span>, <span class="string">&#39;\u{ccc}&#39;</span>), (<span class="string">&#39;\u{cd5}&#39;</span>, <span class="string">&#39;\u{cd6}&#39;</span>), (<span class="string">&#39;\u{cde}&#39;</span>, <span class="string">&#39;\u{cde}&#39;</span>),
+        (<span class="string">&#39;\u{ce0}&#39;</span>, <span class="string">&#39;\u{ce3}&#39;</span>), (<span class="string">&#39;\u{cf1}&#39;</span>, <span class="string">&#39;\u{cf2}&#39;</span>), (<span class="string">&#39;\u{d00}&#39;</span>, <span class="string">&#39;\u{d0c}&#39;</span>), (<span class="string">&#39;\u{d0e}&#39;</span>,
+        <span class="string">&#39;\u{d10}&#39;</span>), (<span class="string">&#39;\u{d12}&#39;</span>, <span class="string">&#39;\u{d3a}&#39;</span>), (<span class="string">&#39;\u{d3d}&#39;</span>, <span class="string">&#39;\u{d44}&#39;</span>), (<span class="string">&#39;\u{d46}&#39;</span>, <span class="string">&#39;\u{d48}&#39;</span>),
+        (<span class="string">&#39;\u{d4a}&#39;</span>, <span class="string">&#39;\u{d4c}&#39;</span>), (<span class="string">&#39;\u{d4e}&#39;</span>, <span class="string">&#39;\u{d4e}&#39;</span>), (<span class="string">&#39;\u{d54}&#39;</span>, <span class="string">&#39;\u{d57}&#39;</span>), (<span class="string">&#39;\u{d5f}&#39;</span>,
+        <span class="string">&#39;\u{d63}&#39;</span>), (<span class="string">&#39;\u{d7a}&#39;</span>, <span class="string">&#39;\u{d7f}&#39;</span>), (<span class="string">&#39;\u{d81}&#39;</span>, <span class="string">&#39;\u{d83}&#39;</span>), (<span class="string">&#39;\u{d85}&#39;</span>, <span class="string">&#39;\u{d96}&#39;</span>),
+        (<span class="string">&#39;\u{d9a}&#39;</span>, <span class="string">&#39;\u{db1}&#39;</span>), (<span class="string">&#39;\u{db3}&#39;</span>, <span class="string">&#39;\u{dbb}&#39;</span>), (<span class="string">&#39;\u{dbd}&#39;</span>, <span class="string">&#39;\u{dbd}&#39;</span>), (<span class="string">&#39;\u{dc0}&#39;</span>,
+        <span class="string">&#39;\u{dc6}&#39;</span>), (<span class="string">&#39;\u{dcf}&#39;</span>, <span class="string">&#39;\u{dd4}&#39;</span>), (<span class="string">&#39;\u{dd6}&#39;</span>, <span class="string">&#39;\u{dd6}&#39;</span>), (<span class="string">&#39;\u{dd8}&#39;</span>, <span class="string">&#39;\u{ddf}&#39;</span>),
+        (<span class="string">&#39;\u{df2}&#39;</span>, <span class="string">&#39;\u{df3}&#39;</span>), (<span class="string">&#39;\u{e01}&#39;</span>, <span class="string">&#39;\u{e3a}&#39;</span>), (<span class="string">&#39;\u{e40}&#39;</span>, <span class="string">&#39;\u{e46}&#39;</span>), (<span class="string">&#39;\u{e4d}&#39;</span>,
+        <span class="string">&#39;\u{e4d}&#39;</span>), (<span class="string">&#39;\u{e81}&#39;</span>, <span class="string">&#39;\u{e82}&#39;</span>), (<span class="string">&#39;\u{e84}&#39;</span>, <span class="string">&#39;\u{e84}&#39;</span>), (<span class="string">&#39;\u{e86}&#39;</span>, <span class="string">&#39;\u{e8a}&#39;</span>),
+        (<span class="string">&#39;\u{e8c}&#39;</span>, <span class="string">&#39;\u{ea3}&#39;</span>), (<span class="string">&#39;\u{ea5}&#39;</span>, <span class="string">&#39;\u{ea5}&#39;</span>), (<span class="string">&#39;\u{ea7}&#39;</span>, <span class="string">&#39;\u{eb9}&#39;</span>), (<span class="string">&#39;\u{ebb}&#39;</span>,
+        <span class="string">&#39;\u{ebd}&#39;</span>), (<span class="string">&#39;\u{ec0}&#39;</span>, <span class="string">&#39;\u{ec4}&#39;</span>), (<span class="string">&#39;\u{ec6}&#39;</span>, <span class="string">&#39;\u{ec6}&#39;</span>), (<span class="string">&#39;\u{ecd}&#39;</span>, <span class="string">&#39;\u{ecd}&#39;</span>),
+        (<span class="string">&#39;\u{edc}&#39;</span>, <span class="string">&#39;\u{edf}&#39;</span>), (<span class="string">&#39;\u{f00}&#39;</span>, <span class="string">&#39;\u{f00}&#39;</span>), (<span class="string">&#39;\u{f40}&#39;</span>, <span class="string">&#39;\u{f47}&#39;</span>), (<span class="string">&#39;\u{f49}&#39;</span>,
+        <span class="string">&#39;\u{f6c}&#39;</span>), (<span class="string">&#39;\u{f71}&#39;</span>, <span class="string">&#39;\u{f81}&#39;</span>), (<span class="string">&#39;\u{f88}&#39;</span>, <span class="string">&#39;\u{f97}&#39;</span>), (<span class="string">&#39;\u{f99}&#39;</span>, <span class="string">&#39;\u{fbc}&#39;</span>),
+        (<span class="string">&#39;\u{1000}&#39;</span>, <span class="string">&#39;\u{1036}&#39;</span>), (<span class="string">&#39;\u{1038}&#39;</span>, <span class="string">&#39;\u{1038}&#39;</span>), (<span class="string">&#39;\u{103b}&#39;</span>, <span class="string">&#39;\u{103f}&#39;</span>), (<span class="string">&#39;\u{1050}&#39;</span>,
+        <span class="string">&#39;\u{108f}&#39;</span>), (<span class="string">&#39;\u{109a}&#39;</span>, <span class="string">&#39;\u{109d}&#39;</span>), (<span class="string">&#39;\u{10a0}&#39;</span>, <span class="string">&#39;\u{10c5}&#39;</span>), (<span class="string">&#39;\u{10c7}&#39;</span>, <span class="string">&#39;\u{10c7}&#39;</span>),
+        (<span class="string">&#39;\u{10cd}&#39;</span>, <span class="string">&#39;\u{10cd}&#39;</span>), (<span class="string">&#39;\u{10d0}&#39;</span>, <span class="string">&#39;\u{10fa}&#39;</span>), (<span class="string">&#39;\u{10fc}&#39;</span>, <span class="string">&#39;\u{1248}&#39;</span>), (<span class="string">&#39;\u{124a}&#39;</span>,
+        <span class="string">&#39;\u{124d}&#39;</span>), (<span class="string">&#39;\u{1250}&#39;</span>, <span class="string">&#39;\u{1256}&#39;</span>), (<span class="string">&#39;\u{1258}&#39;</span>, <span class="string">&#39;\u{1258}&#39;</span>), (<span class="string">&#39;\u{125a}&#39;</span>, <span class="string">&#39;\u{125d}&#39;</span>),
+        (<span class="string">&#39;\u{1260}&#39;</span>, <span class="string">&#39;\u{1288}&#39;</span>), (<span class="string">&#39;\u{128a}&#39;</span>, <span class="string">&#39;\u{128d}&#39;</span>), (<span class="string">&#39;\u{1290}&#39;</span>, <span class="string">&#39;\u{12b0}&#39;</span>), (<span class="string">&#39;\u{12b2}&#39;</span>,
+        <span class="string">&#39;\u{12b5}&#39;</span>), (<span class="string">&#39;\u{12b8}&#39;</span>, <span class="string">&#39;\u{12be}&#39;</span>), (<span class="string">&#39;\u{12c0}&#39;</span>, <span class="string">&#39;\u{12c0}&#39;</span>), (<span class="string">&#39;\u{12c2}&#39;</span>, <span class="string">&#39;\u{12c5}&#39;</span>),
+        (<span class="string">&#39;\u{12c8}&#39;</span>, <span class="string">&#39;\u{12d6}&#39;</span>), (<span class="string">&#39;\u{12d8}&#39;</span>, <span class="string">&#39;\u{1310}&#39;</span>), (<span class="string">&#39;\u{1312}&#39;</span>, <span class="string">&#39;\u{1315}&#39;</span>), (<span class="string">&#39;\u{1318}&#39;</span>,
+        <span class="string">&#39;\u{135a}&#39;</span>), (<span class="string">&#39;\u{1380}&#39;</span>, <span class="string">&#39;\u{138f}&#39;</span>), (<span class="string">&#39;\u{13a0}&#39;</span>, <span class="string">&#39;\u{13f5}&#39;</span>), (<span class="string">&#39;\u{13f8}&#39;</span>, <span class="string">&#39;\u{13fd}&#39;</span>),
+        (<span class="string">&#39;\u{1401}&#39;</span>, <span class="string">&#39;\u{166c}&#39;</span>), (<span class="string">&#39;\u{166f}&#39;</span>, <span class="string">&#39;\u{167f}&#39;</span>), (<span class="string">&#39;\u{1681}&#39;</span>, <span class="string">&#39;\u{169a}&#39;</span>), (<span class="string">&#39;\u{16a0}&#39;</span>,
+        <span class="string">&#39;\u{16ea}&#39;</span>), (<span class="string">&#39;\u{16ee}&#39;</span>, <span class="string">&#39;\u{16f8}&#39;</span>), (<span class="string">&#39;\u{1700}&#39;</span>, <span class="string">&#39;\u{170c}&#39;</span>), (<span class="string">&#39;\u{170e}&#39;</span>, <span class="string">&#39;\u{1713}&#39;</span>),
+        (<span class="string">&#39;\u{1720}&#39;</span>, <span class="string">&#39;\u{1733}&#39;</span>), (<span class="string">&#39;\u{1740}&#39;</span>, <span class="string">&#39;\u{1753}&#39;</span>), (<span class="string">&#39;\u{1760}&#39;</span>, <span class="string">&#39;\u{176c}&#39;</span>), (<span class="string">&#39;\u{176e}&#39;</span>,
+        <span class="string">&#39;\u{1770}&#39;</span>), (<span class="string">&#39;\u{1772}&#39;</span>, <span class="string">&#39;\u{1773}&#39;</span>), (<span class="string">&#39;\u{1780}&#39;</span>, <span class="string">&#39;\u{17b3}&#39;</span>), (<span class="string">&#39;\u{17b6}&#39;</span>, <span class="string">&#39;\u{17c8}&#39;</span>),
+        (<span class="string">&#39;\u{17d7}&#39;</span>, <span class="string">&#39;\u{17d7}&#39;</span>), (<span class="string">&#39;\u{17dc}&#39;</span>, <span class="string">&#39;\u{17dc}&#39;</span>), (<span class="string">&#39;\u{1820}&#39;</span>, <span class="string">&#39;\u{1878}&#39;</span>), (<span class="string">&#39;\u{1880}&#39;</span>,
+        <span class="string">&#39;\u{18aa}&#39;</span>), (<span class="string">&#39;\u{18b0}&#39;</span>, <span class="string">&#39;\u{18f5}&#39;</span>), (<span class="string">&#39;\u{1900}&#39;</span>, <span class="string">&#39;\u{191e}&#39;</span>), (<span class="string">&#39;\u{1920}&#39;</span>, <span class="string">&#39;\u{192b}&#39;</span>),
+        (<span class="string">&#39;\u{1930}&#39;</span>, <span class="string">&#39;\u{1938}&#39;</span>), (<span class="string">&#39;\u{1950}&#39;</span>, <span class="string">&#39;\u{196d}&#39;</span>), (<span class="string">&#39;\u{1970}&#39;</span>, <span class="string">&#39;\u{1974}&#39;</span>), (<span class="string">&#39;\u{1980}&#39;</span>,
+        <span class="string">&#39;\u{19ab}&#39;</span>), (<span class="string">&#39;\u{19b0}&#39;</span>, <span class="string">&#39;\u{19c9}&#39;</span>), (<span class="string">&#39;\u{1a00}&#39;</span>, <span class="string">&#39;\u{1a1b}&#39;</span>), (<span class="string">&#39;\u{1a20}&#39;</span>, <span class="string">&#39;\u{1a5e}&#39;</span>),
+        (<span class="string">&#39;\u{1a61}&#39;</span>, <span class="string">&#39;\u{1a74}&#39;</span>), (<span class="string">&#39;\u{1aa7}&#39;</span>, <span class="string">&#39;\u{1aa7}&#39;</span>), (<span class="string">&#39;\u{1abf}&#39;</span>, <span class="string">&#39;\u{1ac0}&#39;</span>), (<span class="string">&#39;\u{1b00}&#39;</span>,
+        <span class="string">&#39;\u{1b33}&#39;</span>), (<span class="string">&#39;\u{1b35}&#39;</span>, <span class="string">&#39;\u{1b43}&#39;</span>), (<span class="string">&#39;\u{1b45}&#39;</span>, <span class="string">&#39;\u{1b4b}&#39;</span>), (<span class="string">&#39;\u{1b80}&#39;</span>, <span class="string">&#39;\u{1ba9}&#39;</span>),
+        (<span class="string">&#39;\u{1bac}&#39;</span>, <span class="string">&#39;\u{1baf}&#39;</span>), (<span class="string">&#39;\u{1bba}&#39;</span>, <span class="string">&#39;\u{1be5}&#39;</span>), (<span class="string">&#39;\u{1be7}&#39;</span>, <span class="string">&#39;\u{1bf1}&#39;</span>), (<span class="string">&#39;\u{1c00}&#39;</span>,
+        <span class="string">&#39;\u{1c36}&#39;</span>), (<span class="string">&#39;\u{1c4d}&#39;</span>, <span class="string">&#39;\u{1c4f}&#39;</span>), (<span class="string">&#39;\u{1c5a}&#39;</span>, <span class="string">&#39;\u{1c7d}&#39;</span>), (<span class="string">&#39;\u{1c80}&#39;</span>, <span class="string">&#39;\u{1c88}&#39;</span>),
+        (<span class="string">&#39;\u{1c90}&#39;</span>, <span class="string">&#39;\u{1cba}&#39;</span>), (<span class="string">&#39;\u{1cbd}&#39;</span>, <span class="string">&#39;\u{1cbf}&#39;</span>), (<span class="string">&#39;\u{1ce9}&#39;</span>, <span class="string">&#39;\u{1cec}&#39;</span>), (<span class="string">&#39;\u{1cee}&#39;</span>,
+        <span class="string">&#39;\u{1cf3}&#39;</span>), (<span class="string">&#39;\u{1cf5}&#39;</span>, <span class="string">&#39;\u{1cf6}&#39;</span>), (<span class="string">&#39;\u{1cfa}&#39;</span>, <span class="string">&#39;\u{1cfa}&#39;</span>), (<span class="string">&#39;\u{1d00}&#39;</span>, <span class="string">&#39;\u{1dbf}&#39;</span>),
+        (<span class="string">&#39;\u{1de7}&#39;</span>, <span class="string">&#39;\u{1df4}&#39;</span>), (<span class="string">&#39;\u{1e00}&#39;</span>, <span class="string">&#39;\u{1f15}&#39;</span>), (<span class="string">&#39;\u{1f18}&#39;</span>, <span class="string">&#39;\u{1f1d}&#39;</span>), (<span class="string">&#39;\u{1f20}&#39;</span>,
+        <span class="string">&#39;\u{1f45}&#39;</span>), (<span class="string">&#39;\u{1f48}&#39;</span>, <span class="string">&#39;\u{1f4d}&#39;</span>), (<span class="string">&#39;\u{1f50}&#39;</span>, <span class="string">&#39;\u{1f57}&#39;</span>), (<span class="string">&#39;\u{1f59}&#39;</span>, <span class="string">&#39;\u{1f59}&#39;</span>),
+        (<span class="string">&#39;\u{1f5b}&#39;</span>, <span class="string">&#39;\u{1f5b}&#39;</span>), (<span class="string">&#39;\u{1f5d}&#39;</span>, <span class="string">&#39;\u{1f5d}&#39;</span>), (<span class="string">&#39;\u{1f5f}&#39;</span>, <span class="string">&#39;\u{1f7d}&#39;</span>), (<span class="string">&#39;\u{1f80}&#39;</span>,
+        <span class="string">&#39;\u{1fb4}&#39;</span>), (<span class="string">&#39;\u{1fb6}&#39;</span>, <span class="string">&#39;\u{1fbc}&#39;</span>), (<span class="string">&#39;\u{1fbe}&#39;</span>, <span class="string">&#39;\u{1fbe}&#39;</span>), (<span class="string">&#39;\u{1fc2}&#39;</span>, <span class="string">&#39;\u{1fc4}&#39;</span>),
+        (<span class="string">&#39;\u{1fc6}&#39;</span>, <span class="string">&#39;\u{1fcc}&#39;</span>), (<span class="string">&#39;\u{1fd0}&#39;</span>, <span class="string">&#39;\u{1fd3}&#39;</span>), (<span class="string">&#39;\u{1fd6}&#39;</span>, <span class="string">&#39;\u{1fdb}&#39;</span>), (<span class="string">&#39;\u{1fe0}&#39;</span>,
+        <span class="string">&#39;\u{1fec}&#39;</span>), (<span class="string">&#39;\u{1ff2}&#39;</span>, <span class="string">&#39;\u{1ff4}&#39;</span>), (<span class="string">&#39;\u{1ff6}&#39;</span>, <span class="string">&#39;\u{1ffc}&#39;</span>), (<span class="string">&#39;\u{2071}&#39;</span>, <span class="string">&#39;\u{2071}&#39;</span>),
+        (<span class="string">&#39;\u{207f}&#39;</span>, <span class="string">&#39;\u{207f}&#39;</span>), (<span class="string">&#39;\u{2090}&#39;</span>, <span class="string">&#39;\u{209c}&#39;</span>), (<span class="string">&#39;\u{2102}&#39;</span>, <span class="string">&#39;\u{2102}&#39;</span>), (<span class="string">&#39;\u{2107}&#39;</span>,
+        <span class="string">&#39;\u{2107}&#39;</span>), (<span class="string">&#39;\u{210a}&#39;</span>, <span class="string">&#39;\u{2113}&#39;</span>), (<span class="string">&#39;\u{2115}&#39;</span>, <span class="string">&#39;\u{2115}&#39;</span>), (<span class="string">&#39;\u{2119}&#39;</span>, <span class="string">&#39;\u{211d}&#39;</span>),
+        (<span class="string">&#39;\u{2124}&#39;</span>, <span class="string">&#39;\u{2124}&#39;</span>), (<span class="string">&#39;\u{2126}&#39;</span>, <span class="string">&#39;\u{2126}&#39;</span>), (<span class="string">&#39;\u{2128}&#39;</span>, <span class="string">&#39;\u{2128}&#39;</span>), (<span class="string">&#39;\u{212a}&#39;</span>,
+        <span class="string">&#39;\u{212d}&#39;</span>), (<span class="string">&#39;\u{212f}&#39;</span>, <span class="string">&#39;\u{2139}&#39;</span>), (<span class="string">&#39;\u{213c}&#39;</span>, <span class="string">&#39;\u{213f}&#39;</span>), (<span class="string">&#39;\u{2145}&#39;</span>, <span class="string">&#39;\u{2149}&#39;</span>),
+        (<span class="string">&#39;\u{214e}&#39;</span>, <span class="string">&#39;\u{214e}&#39;</span>), (<span class="string">&#39;\u{2160}&#39;</span>, <span class="string">&#39;\u{2188}&#39;</span>), (<span class="string">&#39;\u{24b6}&#39;</span>, <span class="string">&#39;\u{24e9}&#39;</span>), (<span class="string">&#39;\u{2c00}&#39;</span>,
+        <span class="string">&#39;\u{2c2e}&#39;</span>), (<span class="string">&#39;\u{2c30}&#39;</span>, <span class="string">&#39;\u{2c5e}&#39;</span>), (<span class="string">&#39;\u{2c60}&#39;</span>, <span class="string">&#39;\u{2ce4}&#39;</span>), (<span class="string">&#39;\u{2ceb}&#39;</span>, <span class="string">&#39;\u{2cee}&#39;</span>),
+        (<span class="string">&#39;\u{2cf2}&#39;</span>, <span class="string">&#39;\u{2cf3}&#39;</span>), (<span class="string">&#39;\u{2d00}&#39;</span>, <span class="string">&#39;\u{2d25}&#39;</span>), (<span class="string">&#39;\u{2d27}&#39;</span>, <span class="string">&#39;\u{2d27}&#39;</span>), (<span class="string">&#39;\u{2d2d}&#39;</span>,
+        <span class="string">&#39;\u{2d2d}&#39;</span>), (<span class="string">&#39;\u{2d30}&#39;</span>, <span class="string">&#39;\u{2d67}&#39;</span>), (<span class="string">&#39;\u{2d6f}&#39;</span>, <span class="string">&#39;\u{2d6f}&#39;</span>), (<span class="string">&#39;\u{2d80}&#39;</span>, <span class="string">&#39;\u{2d96}&#39;</span>),
+        (<span class="string">&#39;\u{2da0}&#39;</span>, <span class="string">&#39;\u{2da6}&#39;</span>), (<span class="string">&#39;\u{2da8}&#39;</span>, <span class="string">&#39;\u{2dae}&#39;</span>), (<span class="string">&#39;\u{2db0}&#39;</span>, <span class="string">&#39;\u{2db6}&#39;</span>), (<span class="string">&#39;\u{2db8}&#39;</span>,
+        <span class="string">&#39;\u{2dbe}&#39;</span>), (<span class="string">&#39;\u{2dc0}&#39;</span>, <span class="string">&#39;\u{2dc6}&#39;</span>), (<span class="string">&#39;\u{2dc8}&#39;</span>, <span class="string">&#39;\u{2dce}&#39;</span>), (<span class="string">&#39;\u{2dd0}&#39;</span>, <span class="string">&#39;\u{2dd6}&#39;</span>),
+        (<span class="string">&#39;\u{2dd8}&#39;</span>, <span class="string">&#39;\u{2dde}&#39;</span>), (<span class="string">&#39;\u{2de0}&#39;</span>, <span class="string">&#39;\u{2dff}&#39;</span>), (<span class="string">&#39;\u{2e2f}&#39;</span>, <span class="string">&#39;\u{2e2f}&#39;</span>), (<span class="string">&#39;\u{3005}&#39;</span>,
+        <span class="string">&#39;\u{3007}&#39;</span>), (<span class="string">&#39;\u{3021}&#39;</span>, <span class="string">&#39;\u{3029}&#39;</span>), (<span class="string">&#39;\u{3031}&#39;</span>, <span class="string">&#39;\u{3035}&#39;</span>), (<span class="string">&#39;\u{3038}&#39;</span>, <span class="string">&#39;\u{303c}&#39;</span>),
+        (<span class="string">&#39;\u{3041}&#39;</span>, <span class="string">&#39;\u{3096}&#39;</span>), (<span class="string">&#39;\u{309d}&#39;</span>, <span class="string">&#39;\u{309f}&#39;</span>), (<span class="string">&#39;\u{30a1}&#39;</span>, <span class="string">&#39;\u{30fa}&#39;</span>), (<span class="string">&#39;\u{30fc}&#39;</span>,
+        <span class="string">&#39;\u{30ff}&#39;</span>), (<span class="string">&#39;\u{3105}&#39;</span>, <span class="string">&#39;\u{312f}&#39;</span>), (<span class="string">&#39;\u{3131}&#39;</span>, <span class="string">&#39;\u{318e}&#39;</span>), (<span class="string">&#39;\u{31a0}&#39;</span>, <span class="string">&#39;\u{31bf}&#39;</span>),
+        (<span class="string">&#39;\u{31f0}&#39;</span>, <span class="string">&#39;\u{31ff}&#39;</span>), (<span class="string">&#39;\u{3400}&#39;</span>, <span class="string">&#39;\u{4dbf}&#39;</span>), (<span class="string">&#39;\u{4e00}&#39;</span>, <span class="string">&#39;\u{9ffc}&#39;</span>), (<span class="string">&#39;\u{a000}&#39;</span>,
+        <span class="string">&#39;\u{a48c}&#39;</span>), (<span class="string">&#39;\u{a4d0}&#39;</span>, <span class="string">&#39;\u{a4fd}&#39;</span>), (<span class="string">&#39;\u{a500}&#39;</span>, <span class="string">&#39;\u{a60c}&#39;</span>), (<span class="string">&#39;\u{a610}&#39;</span>, <span class="string">&#39;\u{a61f}&#39;</span>),
+        (<span class="string">&#39;\u{a62a}&#39;</span>, <span class="string">&#39;\u{a62b}&#39;</span>), (<span class="string">&#39;\u{a640}&#39;</span>, <span class="string">&#39;\u{a66e}&#39;</span>), (<span class="string">&#39;\u{a674}&#39;</span>, <span class="string">&#39;\u{a67b}&#39;</span>), (<span class="string">&#39;\u{a67f}&#39;</span>,
+        <span class="string">&#39;\u{a6ef}&#39;</span>), (<span class="string">&#39;\u{a717}&#39;</span>, <span class="string">&#39;\u{a71f}&#39;</span>), (<span class="string">&#39;\u{a722}&#39;</span>, <span class="string">&#39;\u{a788}&#39;</span>), (<span class="string">&#39;\u{a78b}&#39;</span>, <span class="string">&#39;\u{a7bf}&#39;</span>),
+        (<span class="string">&#39;\u{a7c2}&#39;</span>, <span class="string">&#39;\u{a7ca}&#39;</span>), (<span class="string">&#39;\u{a7f5}&#39;</span>, <span class="string">&#39;\u{a805}&#39;</span>), (<span class="string">&#39;\u{a807}&#39;</span>, <span class="string">&#39;\u{a827}&#39;</span>), (<span class="string">&#39;\u{a840}&#39;</span>,
+        <span class="string">&#39;\u{a873}&#39;</span>), (<span class="string">&#39;\u{a880}&#39;</span>, <span class="string">&#39;\u{a8c3}&#39;</span>), (<span class="string">&#39;\u{a8c5}&#39;</span>, <span class="string">&#39;\u{a8c5}&#39;</span>), (<span class="string">&#39;\u{a8f2}&#39;</span>, <span class="string">&#39;\u{a8f7}&#39;</span>),
+        (<span class="string">&#39;\u{a8fb}&#39;</span>, <span class="string">&#39;\u{a8fb}&#39;</span>), (<span class="string">&#39;\u{a8fd}&#39;</span>, <span class="string">&#39;\u{a8ff}&#39;</span>), (<span class="string">&#39;\u{a90a}&#39;</span>, <span class="string">&#39;\u{a92a}&#39;</span>), (<span class="string">&#39;\u{a930}&#39;</span>,
+        <span class="string">&#39;\u{a952}&#39;</span>), (<span class="string">&#39;\u{a960}&#39;</span>, <span class="string">&#39;\u{a97c}&#39;</span>), (<span class="string">&#39;\u{a980}&#39;</span>, <span class="string">&#39;\u{a9b2}&#39;</span>), (<span class="string">&#39;\u{a9b4}&#39;</span>, <span class="string">&#39;\u{a9bf}&#39;</span>),
+        (<span class="string">&#39;\u{a9cf}&#39;</span>, <span class="string">&#39;\u{a9cf}&#39;</span>), (<span class="string">&#39;\u{a9e0}&#39;</span>, <span class="string">&#39;\u{a9ef}&#39;</span>), (<span class="string">&#39;\u{a9fa}&#39;</span>, <span class="string">&#39;\u{a9fe}&#39;</span>), (<span class="string">&#39;\u{aa00}&#39;</span>,
+        <span class="string">&#39;\u{aa36}&#39;</span>), (<span class="string">&#39;\u{aa40}&#39;</span>, <span class="string">&#39;\u{aa4d}&#39;</span>), (<span class="string">&#39;\u{aa60}&#39;</span>, <span class="string">&#39;\u{aa76}&#39;</span>), (<span class="string">&#39;\u{aa7a}&#39;</span>, <span class="string">&#39;\u{aabe}&#39;</span>),
+        (<span class="string">&#39;\u{aac0}&#39;</span>, <span class="string">&#39;\u{aac0}&#39;</span>), (<span class="string">&#39;\u{aac2}&#39;</span>, <span class="string">&#39;\u{aac2}&#39;</span>), (<span class="string">&#39;\u{aadb}&#39;</span>, <span class="string">&#39;\u{aadd}&#39;</span>), (<span class="string">&#39;\u{aae0}&#39;</span>,
+        <span class="string">&#39;\u{aaef}&#39;</span>), (<span class="string">&#39;\u{aaf2}&#39;</span>, <span class="string">&#39;\u{aaf5}&#39;</span>), (<span class="string">&#39;\u{ab01}&#39;</span>, <span class="string">&#39;\u{ab06}&#39;</span>), (<span class="string">&#39;\u{ab09}&#39;</span>, <span class="string">&#39;\u{ab0e}&#39;</span>),
+        (<span class="string">&#39;\u{ab11}&#39;</span>, <span class="string">&#39;\u{ab16}&#39;</span>), (<span class="string">&#39;\u{ab20}&#39;</span>, <span class="string">&#39;\u{ab26}&#39;</span>), (<span class="string">&#39;\u{ab28}&#39;</span>, <span class="string">&#39;\u{ab2e}&#39;</span>), (<span class="string">&#39;\u{ab30}&#39;</span>,
+        <span class="string">&#39;\u{ab5a}&#39;</span>), (<span class="string">&#39;\u{ab5c}&#39;</span>, <span class="string">&#39;\u{ab69}&#39;</span>), (<span class="string">&#39;\u{ab70}&#39;</span>, <span class="string">&#39;\u{abea}&#39;</span>), (<span class="string">&#39;\u{ac00}&#39;</span>, <span class="string">&#39;\u{d7a3}&#39;</span>),
+        (<span class="string">&#39;\u{d7b0}&#39;</span>, <span class="string">&#39;\u{d7c6}&#39;</span>), (<span class="string">&#39;\u{d7cb}&#39;</span>, <span class="string">&#39;\u{d7fb}&#39;</span>), (<span class="string">&#39;\u{f900}&#39;</span>, <span class="string">&#39;\u{fa6d}&#39;</span>), (<span class="string">&#39;\u{fa70}&#39;</span>,
+        <span class="string">&#39;\u{fad9}&#39;</span>), (<span class="string">&#39;\u{fb00}&#39;</span>, <span class="string">&#39;\u{fb06}&#39;</span>), (<span class="string">&#39;\u{fb13}&#39;</span>, <span class="string">&#39;\u{fb17}&#39;</span>), (<span class="string">&#39;\u{fb1d}&#39;</span>, <span class="string">&#39;\u{fb28}&#39;</span>),
+        (<span class="string">&#39;\u{fb2a}&#39;</span>, <span class="string">&#39;\u{fb36}&#39;</span>), (<span class="string">&#39;\u{fb38}&#39;</span>, <span class="string">&#39;\u{fb3c}&#39;</span>), (<span class="string">&#39;\u{fb3e}&#39;</span>, <span class="string">&#39;\u{fb3e}&#39;</span>), (<span class="string">&#39;\u{fb40}&#39;</span>,
+        <span class="string">&#39;\u{fb41}&#39;</span>), (<span class="string">&#39;\u{fb43}&#39;</span>, <span class="string">&#39;\u{fb44}&#39;</span>), (<span class="string">&#39;\u{fb46}&#39;</span>, <span class="string">&#39;\u{fbb1}&#39;</span>), (<span class="string">&#39;\u{fbd3}&#39;</span>, <span class="string">&#39;\u{fd3d}&#39;</span>),
+        (<span class="string">&#39;\u{fd50}&#39;</span>, <span class="string">&#39;\u{fd8f}&#39;</span>), (<span class="string">&#39;\u{fd92}&#39;</span>, <span class="string">&#39;\u{fdc7}&#39;</span>), (<span class="string">&#39;\u{fdf0}&#39;</span>, <span class="string">&#39;\u{fdfb}&#39;</span>), (<span class="string">&#39;\u{fe70}&#39;</span>,
+        <span class="string">&#39;\u{fe74}&#39;</span>), (<span class="string">&#39;\u{fe76}&#39;</span>, <span class="string">&#39;\u{fefc}&#39;</span>), (<span class="string">&#39;\u{ff21}&#39;</span>, <span class="string">&#39;\u{ff3a}&#39;</span>), (<span class="string">&#39;\u{ff41}&#39;</span>, <span class="string">&#39;\u{ff5a}&#39;</span>),
+        (<span class="string">&#39;\u{ff66}&#39;</span>, <span class="string">&#39;\u{ffbe}&#39;</span>), (<span class="string">&#39;\u{ffc2}&#39;</span>, <span class="string">&#39;\u{ffc7}&#39;</span>), (<span class="string">&#39;\u{ffca}&#39;</span>, <span class="string">&#39;\u{ffcf}&#39;</span>), (<span class="string">&#39;\u{ffd2}&#39;</span>,
+        <span class="string">&#39;\u{ffd7}&#39;</span>), (<span class="string">&#39;\u{ffda}&#39;</span>, <span class="string">&#39;\u{ffdc}&#39;</span>), (<span class="string">&#39;\u{10000}&#39;</span>, <span class="string">&#39;\u{1000b}&#39;</span>), (<span class="string">&#39;\u{1000d}&#39;</span>,
+        <span class="string">&#39;\u{10026}&#39;</span>), (<span class="string">&#39;\u{10028}&#39;</span>, <span class="string">&#39;\u{1003a}&#39;</span>), (<span class="string">&#39;\u{1003c}&#39;</span>, <span class="string">&#39;\u{1003d}&#39;</span>), (<span class="string">&#39;\u{1003f}&#39;</span>,
+        <span class="string">&#39;\u{1004d}&#39;</span>), (<span class="string">&#39;\u{10050}&#39;</span>, <span class="string">&#39;\u{1005d}&#39;</span>), (<span class="string">&#39;\u{10080}&#39;</span>, <span class="string">&#39;\u{100fa}&#39;</span>), (<span class="string">&#39;\u{10140}&#39;</span>,
+        <span class="string">&#39;\u{10174}&#39;</span>), (<span class="string">&#39;\u{10280}&#39;</span>, <span class="string">&#39;\u{1029c}&#39;</span>), (<span class="string">&#39;\u{102a0}&#39;</span>, <span class="string">&#39;\u{102d0}&#39;</span>), (<span class="string"&g