Fix problems from CASSANDRA-12533

git-svn-id: http://svn.apache.org/repos/asf/cassandra/site@1758581 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/_config.yml b/src/_config.yml
index 555e835..8231fbe 100644
--- a/src/_config.yml
+++ b/src/_config.yml
@@ -16,6 +16,9 @@
 
 exclude: [ Makefile, README ]
 
+include:
+  - _images
+
 
 # Build settings
 markdown: kramdown
diff --git a/src/css/sphinx.scss b/src/css/sphinx.scss
index 659b299..806fabf 100644
--- a/src/css/sphinx.scss
+++ b/src/css/sphinx.scss
@@ -223,7 +223,7 @@
   }
 }
 
-.admonition.note {
+.admonition.note, .admonition.hint {
   border-color: #d6e9c6;
 
   .admonition-title {
diff --git a/src/doc/3.10/.buildinfo b/src/doc/3.10/.buildinfo
deleted file mode 100644
index 30f4736..0000000
--- a/src/doc/3.10/.buildinfo
+++ /dev/null
@@ -1,4 +0,0 @@
-# Sphinx build info version 1
-# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 926a0d5adaa77316c0219c6fbc31de48
-tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/src/doc/3.10/_images/eclipse_debug0.png b/src/doc/3.10/_images/eclipse_debug0.png
deleted file mode 100644
index e69de29..0000000
--- a/src/doc/3.10/_images/eclipse_debug0.png
+++ /dev/null
diff --git a/src/doc/3.10/_images/eclipse_debug1.png b/src/doc/3.10/_images/eclipse_debug1.png
deleted file mode 100644
index e69de29..0000000
--- a/src/doc/3.10/_images/eclipse_debug1.png
+++ /dev/null
diff --git a/src/doc/3.10/_images/eclipse_debug2.png b/src/doc/3.10/_images/eclipse_debug2.png
deleted file mode 100644
index e69de29..0000000
--- a/src/doc/3.10/_images/eclipse_debug2.png
+++ /dev/null
diff --git a/src/doc/3.10/_images/eclipse_debug3.png b/src/doc/3.10/_images/eclipse_debug3.png
deleted file mode 100644
index e69de29..0000000
--- a/src/doc/3.10/_images/eclipse_debug3.png
+++ /dev/null
diff --git a/src/doc/3.10/_images/eclipse_debug4.png b/src/doc/3.10/_images/eclipse_debug4.png
deleted file mode 100644
index e69de29..0000000
--- a/src/doc/3.10/_images/eclipse_debug4.png
+++ /dev/null
diff --git a/src/doc/3.10/_images/eclipse_debug5.png b/src/doc/3.10/_images/eclipse_debug5.png
deleted file mode 100644
index e69de29..0000000
--- a/src/doc/3.10/_images/eclipse_debug5.png
+++ /dev/null
diff --git a/src/doc/3.10/_images/eclipse_debug6.png b/src/doc/3.10/_images/eclipse_debug6.png
deleted file mode 100644
index e69de29..0000000
--- a/src/doc/3.10/_images/eclipse_debug6.png
+++ /dev/null
diff --git a/src/doc/3.10/_sources/architecture/dynamo.txt b/src/doc/3.10/_sources/architecture/dynamo.txt
deleted file mode 100644
index a7dbb87..0000000
--- a/src/doc/3.10/_sources/architecture/dynamo.txt
+++ /dev/null
@@ -1,139 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Dynamo
-------
-
-.. _gossip:
-
-Gossip
-^^^^^^
-
-.. todo:: todo
-
-Failure Detection
-^^^^^^^^^^^^^^^^^
-
-.. todo:: todo
-
-Token Ring/Ranges
-^^^^^^^^^^^^^^^^^
-
-.. todo:: todo
-
-.. _replication-strategy:
-
-Replication
-^^^^^^^^^^^
-
-The replication strategy of a keyspace determines which nodes are replicas for a given token range. The two main
-replication strategies are :ref:`simple-strategy` and :ref:`network-topology-strategy`.
-
-.. _simple-strategy:
-
-SimpleStrategy
-~~~~~~~~~~~~~~
-
-SimpleStrategy allows a single integer ``replication_factor`` to be defined. This determines the number of nodes that
-should contain a copy of each row.  For example, if ``replication_factor`` is 3, then three different nodes should store
-a copy of each row.
-
-SimpleStrategy treats all nodes identically, ignoring any configured datacenters or racks.  To determine the replicas
-for a token range, Cassandra iterates through the tokens in the ring, starting with the token range of interest.  For
-each token, it checks whether the owning node has been added to the set of replicas, and if it has not, it is added to
-the set.  This process continues until ``replication_factor`` distinct nodes have been added to the set of replicas.
-
-.. _network-topology-strategy:
-
-NetworkTopologyStrategy
-~~~~~~~~~~~~~~~~~~~~~~~
-
-NetworkTopologyStrategy allows a replication factor to be specified for each datacenter in the cluster.  Even if your
-cluster only uses a single datacenter, NetworkTopologyStrategy should be prefered over SimpleStrategy to make it easier
-to add new physical or virtual datacenters to the cluster later.
-
-In addition to allowing the replication factor to be specified per-DC, NetworkTopologyStrategy also attempts to choose
-replicas within a datacenter from different racks.  If the number of racks is greater than or equal to the replication
-factor for the DC, each replica will be chosen from a different rack.  Otherwise, each rack will hold at least one
-replica, but some racks may hold more than one. Note that this rack-aware behavior has some potentially `surprising
-implications <https://issues.apache.org/jira/browse/CASSANDRA-3810>`_.  For example, if there are not an even number of
-nodes in each rack, the data load on the smallest rack may be much higher.  Similarly, if a single node is bootstrapped
-into a new rack, it will be considered a replica for the entire ring.  For this reason, many operators choose to
-configure all nodes on a single "rack".
-
-Tunable Consistency
-^^^^^^^^^^^^^^^^^^^
-
-Cassandra supports a per-operation tradeoff between consistency and availability through *Consistency Levels*.
-Essentially, an operation's consistency level specifies how many of the replicas need to respond to the coordinator in
-order to consider the operation a success.
-
-The following consistency levels are available:
-
-``ONE``
-  Only a single replica must respond.
-
-``TWO``
-  Two replicas must respond.
-
-``THREE``
-  Three replicas must respond.
-
-``QUORUM``
-  A majority (n/2 + 1) of the replicas must respond.
-
-``ALL``
-  All of the replicas must respond.
-
-``LOCAL_QUORUM``
-  A majority of the replicas in the local datacenter (whichever datacenter the coordinator is in) must respond.
-
-``EACH_QUORUM``
-  A majority of the replicas in each datacenter must respond.
-
-``LOCAL_ONE``
-  Only a single replica must respond.  In a multi-datacenter cluster, this also gaurantees that read requests are not
-  sent to replicas in a remote datacenter.
-
-``ANY``
-  A single replica may respond, or the coordinator may store a hint. If a hint is stored, the coordinator will later
-  attempt to replay the hint and deliver the mutation to the replicas.  This consistency level is only accepted for
-  write operations.
-
-Write operations are always sent to all replicas, regardless of consistency level. The consistency level simply
-controls how many responses the coordinator waits for before responding to the client.
-
-For read operations, the coordinator generally only issues read commands to enough replicas to satisfy the consistency
-level. There are a couple of exceptions to this:
-
-- Speculative retry may issue a redundant read request to an extra replica if the other replicas have not responded
-  within a specified time window.
-- Based on ``read_repair_chance`` and ``dclocal_read_repair_chance`` (part of a table's schema), read requests may be
-  randomly sent to all replicas in order to repair potentially inconsistent data.
-
-Picking Consistency Levels
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-It is common to pick read and write consistency levels that are high enough to overlap, resulting in "strong"
-consistency.  This is typically expressed as ``W + R > RF``, where ``W`` is the write consistency level, ``R`` is the
-read consistency level, and ``RF`` is the replication factor.  For example, if ``RF = 3``, a ``QUORUM`` request will
-require responses from at least two of the three replicas.  If ``QUORUM`` is used for both writes and reads, at least
-one of the replicas is guaranteed to participate in *both* the write and the read request, which in turn guarantees that
-the latest write will be read. In a multi-datacenter environment, ``LOCAL_QUORUM`` can be used to provide a weaker but
-still useful guarantee: reads are guaranteed to see the latest write from within the same datacenter.
-
-If this type of strong consistency isn't required, lower consistency levels like ``ONE`` may be used to improve
-throughput, latency, and availability.
diff --git a/src/doc/3.10/_sources/architecture/guarantees.txt b/src/doc/3.10/_sources/architecture/guarantees.txt
deleted file mode 100644
index c0b58d8..0000000
--- a/src/doc/3.10/_sources/architecture/guarantees.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Guarantees
-----------
-
-.. todo:: todo
diff --git a/src/doc/3.10/_sources/architecture/index.txt b/src/doc/3.10/_sources/architecture/index.txt
deleted file mode 100644
index 58eda13..0000000
--- a/src/doc/3.10/_sources/architecture/index.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Architecture
-============
-
-This section describes the general architecture of Apache Cassandra.
-
-.. toctree::
-   :maxdepth: 2
-
-   overview
-   dynamo
-   storage_engine
-   guarantees
-
diff --git a/src/doc/3.10/_sources/architecture/overview.txt b/src/doc/3.10/_sources/architecture/overview.txt
deleted file mode 100644
index 005b15b..0000000
--- a/src/doc/3.10/_sources/architecture/overview.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Overview
---------
-
-.. todo:: todo
diff --git a/src/doc/3.10/_sources/architecture/storage_engine.txt b/src/doc/3.10/_sources/architecture/storage_engine.txt
deleted file mode 100644
index e4114e5..0000000
--- a/src/doc/3.10/_sources/architecture/storage_engine.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Storage Engine
---------------
-
-.. _commit-log:
-
-CommitLog
-^^^^^^^^^
-
-.. todo:: todo
-
-.. _memtables:
-
-Memtables
-^^^^^^^^^
-
-Memtables are in-memory structures where Cassandra buffers writes.  In general, there is one active memtable per table.
-Eventually, memtables are flushed onto disk and become immutable `SSTables`_.  This can be triggered in several
-ways:
-
-- The memory usage of the memtables exceeds the configured threshold  (see ``memtable_cleanup_threshold``)
-- The :ref:`commit-log` approaches its maximum size, and forces memtable flushes in order to allow commitlog segments to
-  be freed
-
-Memtables may be stored entirely on-heap or partially off-heap, depending on ``memtable_allocation_type``.
-
-SSTables
-^^^^^^^^
-
-SSTables are the immutable data files that Cassandra uses for persisting data on disk.
-
-As SSTables are flushed to disk from :ref:`memtables` or are streamed from other nodes, Cassandra triggers compactions
-which combine multiple SSTables into one.  Once the new SSTable has been written, the old SSTables can be removed.
-
-Each SSTable is comprised of multiple components stored in separate files:
-
-``Data.db``
-  The actual data, i.e. the contents of rows.
-
-``Index.db``
-  An index from partition keys to positions in the ``Data.db`` file.  For wide partitions, this may also include an
-  index to rows within a partition.
-
-``Summary.db``
-  A sampling of (by default) every 128th entry in the ``Index.db`` file.
-
-``Filter.db``
-  A Bloom Filter of the partition keys in the SSTable.
-
-``CompressionInfo.db``
-  Metadata about the offsets and lengths of compression chunks in the ``Data.db`` file.
-
-``Statistics.db``
-  Stores metadata about the SSTable, including information about timestamps, tombstones, clustering keys, compaction,
-  repair, compression, TTLs, and more.
-
-``Digest.crc32``
-  A CRC-32 digest of the ``Data.db`` file.
-
-``TOC.txt``
-  A plain text list of the component files for the SSTable.
-
-Within the ``Data.db`` file, rows are organized by partition.  These partitions are sorted in token order (i.e. by a
-hash of the partition key when the default partitioner, ``Murmur3Partition``, is used).  Within a partition, rows are
-stored in the order of their clustering keys.
-
-SSTables can be optionally compressed using block-based compression.
diff --git a/src/doc/3.10/_sources/bugs.txt b/src/doc/3.10/_sources/bugs.txt
deleted file mode 100644
index 240cfd4..0000000
--- a/src/doc/3.10/_sources/bugs.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Reporting Bugs and Contributing
-===============================
-
-If you encounter a problem with Cassandra, the first places to ask for help are the :ref:`user mailing list
-<mailing-lists>` and the ``#cassandra`` :ref:`IRC channel <irc-channels>`.
-
-If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
-ticket through the `Apache Cassandra JIRA <https://issues.apache.org/jira/browse/CASSANDRA>`__. Please provide as much
-details as you can on your problem, and don't forget to indicate which version of Cassandra you are running and on which
-environment.
-
-Further details on how to contribute can be found at our :doc:`development/index` section. Please note that the source of
-this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
-same path.
diff --git a/src/doc/3.10/_sources/configuration/cassandra_config_file.txt b/src/doc/3.10/_sources/configuration/cassandra_config_file.txt
deleted file mode 100644
index 5a20733..0000000
--- a/src/doc/3.10/_sources/configuration/cassandra_config_file.txt
+++ /dev/null
@@ -1,1792 +0,0 @@
-.. _cassandra-yaml:
-
-Cassandra Configuration File
-============================
-
-``cluster_name``
-----------------
-The name of the cluster. This is mainly used to prevent machines in
-one logical cluster from joining another.
-
-*Default Value:* 'Test Cluster'
-
-``num_tokens``
---------------
-
-This defines the number of tokens randomly assigned to this node on the ring
-The more tokens, relative to other nodes, the larger the proportion of data
-that this node will store. You probably want all nodes to have the same number
-of tokens assuming they have equal hardware capability.
-
-If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
-and will use the initial_token as described below.
-
-Specifying initial_token will override this setting on the node's initial start,
-on subsequent starts, this setting will apply even if initial token is set.
-
-If you already have a cluster with 1 token per node, and wish to migrate to 
-multiple tokens per node, see http://wiki.apache.org/cassandra/Operations
-
-*Default Value:* 256
-
-``allocate_tokens_for_keyspace``
---------------------------------
-*This option is commented out by default.*
-
-Triggers automatic allocation of num_tokens tokens for this node. The allocation
-algorithm attempts to choose tokens in a way that optimizes replicated load over
-the nodes in the datacenter for the replication strategy used by the specified
-keyspace.
-
-The load assigned to each node will be close to proportional to its number of
-vnodes.
-
-Only supported with the Murmur3Partitioner.
-
-*Default Value:* KEYSPACE
-
-``initial_token``
------------------
-*This option is commented out by default.*
-
-initial_token allows you to specify tokens manually.  While you can use it with
-vnodes (num_tokens > 1, above) -- in which case you should provide a 
-comma-separated list -- it's primarily used when adding nodes to legacy clusters 
-that do not have vnodes enabled.
-
-``hinted_handoff_enabled``
---------------------------
-
-See http://wiki.apache.org/cassandra/HintedHandoff
-May either be "true" or "false" to enable globally
-
-*Default Value:* true
-
-``hinted_handoff_disabled_datacenters``
----------------------------------------
-*This option is commented out by default.*
-
-When hinted_handoff_enabled is true, a black list of data centers that will not
-perform hinted handoff
-
-*Default Value (complex option)*::
-
-    #    - DC1
-    #    - DC2
-
-``max_hint_window_in_ms``
--------------------------
-this defines the maximum amount of time a dead host will have hints
-generated.  After it has been dead this long, new hints for it will not be
-created until it has been seen alive and gone down again.
-
-*Default Value:* 10800000 # 3 hours
-
-``hinted_handoff_throttle_in_kb``
----------------------------------
-
-Maximum throttle in KBs per second, per delivery thread.  This will be
-reduced proportionally to the number of nodes in the cluster.  (If there
-are two nodes in the cluster, each delivery thread will use the maximum
-rate; if there are three, each will throttle to half of the maximum,
-since we expect two nodes to be delivering hints simultaneously.)
-
-*Default Value:* 1024
-
-``max_hints_delivery_threads``
-------------------------------
-
-Number of threads with which to deliver hints;
-Consider increasing this number when you have multi-dc deployments, since
-cross-dc handoff tends to be slower
-
-*Default Value:* 2
-
-``hints_directory``
--------------------
-*This option is commented out by default.*
-
-Directory where Cassandra should store hints.
-If not set, the default directory is $CASSANDRA_HOME/data/hints.
-
-*Default Value:*  /var/lib/cassandra/hints
-
-``hints_flush_period_in_ms``
-----------------------------
-
-How often hints should be flushed from the internal buffers to disk.
-Will *not* trigger fsync.
-
-*Default Value:* 10000
-
-``max_hints_file_size_in_mb``
------------------------------
-
-Maximum size for a single hints file, in megabytes.
-
-*Default Value:* 128
-
-``hints_compression``
----------------------
-*This option is commented out by default.*
-
-Compression to apply to the hint files. If omitted, hints files
-will be written uncompressed. LZ4, Snappy, and Deflate compressors
-are supported.
-
-*Default Value (complex option)*::
-
-    #   - class_name: LZ4Compressor
-    #     parameters:
-    #         -
-
-``batchlog_replay_throttle_in_kb``
-----------------------------------
-Maximum throttle in KBs per second, total. This will be
-reduced proportionally to the number of nodes in the cluster.
-
-*Default Value:* 1024
-
-``authenticator``
------------------
-
-Authentication backend, implementing IAuthenticator; used to identify users
-Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
-PasswordAuthenticator}.
-
-- AllowAllAuthenticator performs no checks - set it to disable authentication.
-- PasswordAuthenticator relies on username/password pairs to authenticate
-  users. It keeps usernames and hashed passwords in system_auth.credentials table.
-  Please increase system_auth keyspace replication factor if you use this authenticator.
-  If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)
-
-*Default Value:* AllowAllAuthenticator
-
-``authorizer``
---------------
-
-Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
-Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
-CassandraAuthorizer}.
-
-- AllowAllAuthorizer allows any action to any user - set it to disable authorization.
-- CassandraAuthorizer stores permissions in system_auth.permissions table. Please
-  increase system_auth keyspace replication factor if you use this authorizer.
-
-*Default Value:* AllowAllAuthorizer
-
-``role_manager``
-----------------
-
-Part of the Authentication & Authorization backend, implementing IRoleManager; used
-to maintain grants and memberships between roles.
-Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
-which stores role information in the system_auth keyspace. Most functions of the
-IRoleManager require an authenticated login, so unless the configured IAuthenticator
-actually implements authentication, most of this functionality will be unavailable.
-
-- CassandraRoleManager stores role data in the system_auth keyspace. Please
-  increase system_auth keyspace replication factor if you use this role manager.
-
-*Default Value:* CassandraRoleManager
-
-``roles_validity_in_ms``
-------------------------
-
-Validity period for roles cache (fetching granted roles can be an expensive
-operation depending on the role manager, CassandraRoleManager is one example)
-Granted roles are cached for authenticated sessions in AuthenticatedUser and
-after the period specified here, become eligible for (async) reload.
-Defaults to 2000, set to 0 to disable caching entirely.
-Will be disabled automatically for AllowAllAuthenticator.
-
-*Default Value:* 2000
-
-``roles_update_interval_in_ms``
--------------------------------
-*This option is commented out by default.*
-
-Refresh interval for roles cache (if enabled).
-After this interval, cache entries become eligible for refresh. Upon next
-access, an async reload is scheduled and the old value returned until it
-completes. If roles_validity_in_ms is non-zero, then this must be
-also.
-Defaults to the same value as roles_validity_in_ms.
-
-*Default Value:* 2000
-
-``permissions_validity_in_ms``
-------------------------------
-
-Validity period for permissions cache (fetching permissions can be an
-expensive operation depending on the authorizer, CassandraAuthorizer is
-one example). Defaults to 2000, set to 0 to disable.
-Will be disabled automatically for AllowAllAuthorizer.
-
-*Default Value:* 2000
-
-``permissions_update_interval_in_ms``
--------------------------------------
-*This option is commented out by default.*
-
-Refresh interval for permissions cache (if enabled).
-After this interval, cache entries become eligible for refresh. Upon next
-access, an async reload is scheduled and the old value returned until it
-completes. If permissions_validity_in_ms is non-zero, then this must be
-also.
-Defaults to the same value as permissions_validity_in_ms.
-
-*Default Value:* 2000
-
-``credentials_validity_in_ms``
-------------------------------
-
-Validity period for credentials cache. This cache is tightly coupled to
-the provided PasswordAuthenticator implementation of IAuthenticator. If
-another IAuthenticator implementation is configured, this cache will not
-be automatically used and so the following settings will have no effect.
-Please note, credentials are cached in their encrypted form, so while
-activating this cache may reduce the number of queries made to the
-underlying table, it may not  bring a significant reduction in the
-latency of individual authentication attempts.
-Defaults to 2000, set to 0 to disable credentials caching.
-
-*Default Value:* 2000
-
-``credentials_update_interval_in_ms``
--------------------------------------
-*This option is commented out by default.*
-
-Refresh interval for credentials cache (if enabled).
-After this interval, cache entries become eligible for refresh. Upon next
-access, an async reload is scheduled and the old value returned until it
-completes. If credentials_validity_in_ms is non-zero, then this must be
-also.
-Defaults to the same value as credentials_validity_in_ms.
-
-*Default Value:* 2000
-
-``partitioner``
----------------
-
-The partitioner is responsible for distributing groups of rows (by
-partition key) across nodes in the cluster.  You should leave this
-alone for new clusters.  The partitioner can NOT be changed without
-reloading all data, so when upgrading you should set this to the
-same partitioner you were already using.
-
-Besides Murmur3Partitioner, partitioners included for backwards
-compatibility include RandomPartitioner, ByteOrderedPartitioner, and
-OrderPreservingPartitioner.
-
-
-*Default Value:* org.apache.cassandra.dht.Murmur3Partitioner
-
-``data_file_directories``
--------------------------
-*This option is commented out by default.*
-
-Directories where Cassandra should store data on disk.  Cassandra
-will spread data evenly across them, subject to the granularity of
-the configured compaction strategy.
-If not set, the default directory is $CASSANDRA_HOME/data/data.
-
-*Default Value (complex option)*::
-
-    #     - /var/lib/cassandra/data
-
-``commitlog_directory``
------------------------
-*This option is commented out by default.*
-commit log.  when running on magnetic HDD, this should be a
-separate spindle than the data directories.
-If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
-
-*Default Value:*  /var/lib/cassandra/commitlog
-
-``cdc_enabled``
----------------
-
-Enable / disable CDC functionality on a per-node basis. This modifies the logic used
-for write path allocation rejection (standard: never reject. cdc: reject Mutation
-containing a CDC-enabled table if at space limit in cdc_raw_directory).
-
-*Default Value:* false
-
-``cdc_raw_directory``
----------------------
-*This option is commented out by default.*
-
-CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
-segment contains mutations for a CDC-enabled table. This should be placed on a
-separate spindle than the data directories. If not set, the default directory is
-$CASSANDRA_HOME/data/cdc_raw.
-
-*Default Value:*  /var/lib/cassandra/cdc_raw
-
-``disk_failure_policy``
------------------------
-
-Policy for data disk failures:
-
-die
-  shut down gossip and client transports and kill the JVM for any fs errors or
-  single-sstable errors, so the node can be replaced.
-
-stop_paranoid
-  shut down gossip and client transports even for single-sstable errors,
-  kill the JVM for errors during startup.
-
-stop
-  shut down gossip and client transports, leaving the node effectively dead, but
-  can still be inspected via JMX, kill the JVM for errors during startup.
-
-best_effort
-   stop using the failed disk and respond to requests based on
-   remaining available sstables.  This means you WILL see obsolete
-   data at CL.ONE!
-
-ignore
-   ignore fatal errors and let requests fail, as in pre-1.2 Cassandra
-
-*Default Value:* stop
-
-``commit_failure_policy``
--------------------------
-
-Policy for commit disk failures:
-
-die
-  shut down gossip and Thrift and kill the JVM, so the node can be replaced.
-
-stop
-  shut down gossip and Thrift, leaving the node effectively dead, but
-  can still be inspected via JMX.
-
-stop_commit
-  shutdown the commit log, letting writes collect but
-  continuing to service reads, as in pre-2.0.5 Cassandra
-
-ignore
-  ignore fatal errors and let the batches fail
-
-*Default Value:* stop
-
-``prepared_statements_cache_size_mb``
--------------------------------------
-
-Maximum size of the native protocol prepared statement cache
-
-Valid values are either "auto" (omitting the value) or a value greater 0.
-
-Note that specifying a too large value will result in long running GCs and possbily
-out-of-memory errors. Keep the value at a small fraction of the heap.
-
-If you constantly see "prepared statements discarded in the last minute because
-cache limit reached" messages, the first step is to investigate the root cause
-of these messages and check whether prepared statements are used correctly -
-i.e. use bind markers for variable parts.
-
-Do only change the default value, if you really have more prepared statements than
-fit in the cache. In most cases it is not neccessary to change this value.
-Constantly re-preparing statements is a performance penalty.
-
-Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
-
-``thrift_prepared_statements_cache_size_mb``
---------------------------------------------
-
-Maximum size of the Thrift prepared statement cache
-
-If you do not use Thrift at all, it is safe to leave this value at "auto".
-
-See description of 'prepared_statements_cache_size_mb' above for more information.
-
-Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
-
-``key_cache_size_in_mb``
-------------------------
-
-Maximum size of the key cache in memory.
-
-Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
-minimum, sometimes more. The key cache is fairly tiny for the amount of
-time it saves, so it's worthwhile to use it at large numbers.
-The row cache saves even more time, but must contain the entire row,
-so it is extremely space-intensive. It's best to only use the
-row cache if you have hot rows or static rows.
-
-NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
-
-Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.
-
-``key_cache_save_period``
--------------------------
-
-Duration in seconds after which Cassandra should
-save the key cache. Caches are saved to saved_caches_directory as
-specified in this configuration file.
-
-Saved caches greatly improve cold-start speeds, and is relatively cheap in
-terms of I/O for the key cache. Row cache saving is much more expensive and
-has limited use.
-
-Default is 14400 or 4 hours.
-
-*Default Value:* 14400
-
-``key_cache_keys_to_save``
---------------------------
-*This option is commented out by default.*
-
-Number of keys from the key cache to save
-Disabled by default, meaning all keys are going to be saved
-
-*Default Value:* 100
-
-``row_cache_class_name``
-------------------------
-*This option is commented out by default.*
-
-Row cache implementation class name. Available implementations:
-
-org.apache.cassandra.cache.OHCProvider
-  Fully off-heap row cache implementation (default).
-
-org.apache.cassandra.cache.SerializingCacheProvider
-  This is the row cache implementation availabile
-  in previous releases of Cassandra.
-
-*Default Value:* org.apache.cassandra.cache.OHCProvider
-
-``row_cache_size_in_mb``
-------------------------
-
-Maximum size of the row cache in memory.
-Please note that OHC cache implementation requires some additional off-heap memory to manage
-the map structures and some in-flight memory during operations before/after cache entries can be
-accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
-Do not specify more memory that the system can afford in the worst usual situation and leave some
-headroom for OS block level cache. Do never allow your system to swap.
-
-Default value is 0, to disable row caching.
-
-*Default Value:* 0
-
-``row_cache_save_period``
--------------------------
-
-Duration in seconds after which Cassandra should save the row cache.
-Caches are saved to saved_caches_directory as specified in this configuration file.
-
-Saved caches greatly improve cold-start speeds, and is relatively cheap in
-terms of I/O for the key cache. Row cache saving is much more expensive and
-has limited use.
-
-Default is 0 to disable saving the row cache.
-
-*Default Value:* 0
-
-``row_cache_keys_to_save``
---------------------------
-*This option is commented out by default.*
-
-Number of keys from the row cache to save.
-Specify 0 (which is the default), meaning all keys are going to be saved
-
-*Default Value:* 100
-
-``counter_cache_size_in_mb``
-----------------------------
-
-Maximum size of the counter cache in memory.
-
-Counter cache helps to reduce counter locks' contention for hot counter cells.
-In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
-write entirely. With RF > 1 a counter cache hit will still help to reduce the duration
-of the lock hold, helping with hot counter cell updates, but will not allow skipping
-the read entirely. Only the local (clock, count) tuple of a counter cell is kept
-in memory, not the whole counter, so it's relatively cheap.
-
-NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
-
-Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
-NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.
-
-``counter_cache_save_period``
------------------------------
-
-Duration in seconds after which Cassandra should
-save the counter cache (keys only). Caches are saved to saved_caches_directory as
-specified in this configuration file.
-
-Default is 7200 or 2 hours.
-
-*Default Value:* 7200
-
-``counter_cache_keys_to_save``
-------------------------------
-*This option is commented out by default.*
-
-Number of keys from the counter cache to save
-Disabled by default, meaning all keys are going to be saved
-
-*Default Value:* 100
-
-``saved_caches_directory``
---------------------------
-*This option is commented out by default.*
-
-saved caches
-If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
-
-*Default Value:*  /var/lib/cassandra/saved_caches
-
-``commitlog_sync``
-------------------
-*This option is commented out by default.*
-
-commitlog_sync may be either "periodic" or "batch." 
-
-When in batch mode, Cassandra won't ack writes until the commit log
-has been fsynced to disk.  It will wait
-commitlog_sync_batch_window_in_ms milliseconds between fsyncs.
-This window should be kept short because the writer threads will
-be unable to do extra work while waiting.  (You may need to increase
-concurrent_writes for the same reason.)
-
-
-*Default Value:* batch
-
-``commitlog_sync_batch_window_in_ms``
--------------------------------------
-*This option is commented out by default.*
-
-*Default Value:* 2
-
-``commitlog_sync``
-------------------
-
-the other option is "periodic" where writes may be acked immediately
-and the CommitLog is simply synced every commitlog_sync_period_in_ms
-milliseconds. 
-
-*Default Value:* periodic
-
-``commitlog_sync_period_in_ms``
--------------------------------
-
-*Default Value:* 10000
-
-``commitlog_segment_size_in_mb``
---------------------------------
-
-The size of the individual commitlog file segments.  A commitlog
-segment may be archived, deleted, or recycled once all the data
-in it (potentially from each columnfamily in the system) has been
-flushed to sstables.
-
-The default size is 32, which is almost always fine, but if you are
-archiving commitlog segments (see commitlog_archiving.properties),
-then you probably want a finer granularity of archiving; 8 or 16 MB
-is reasonable.
-Max mutation size is also configurable via max_mutation_size_in_kb setting in
-cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
-
-NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
-be set to at least twice the size of max_mutation_size_in_kb / 1024
-
-
-*Default Value:* 32
-
-``commitlog_compression``
--------------------------
-*This option is commented out by default.*
-
-Compression to apply to the commit log. If omitted, the commit log
-will be written uncompressed.  LZ4, Snappy, and Deflate compressors
-are supported.
-
-*Default Value (complex option)*::
-
-    #   - class_name: LZ4Compressor
-    #     parameters:
-    #         -
-
-``seed_provider``
------------------
-any class that implements the SeedProvider interface and has a
-constructor that takes a Map<String, String> of parameters will do.
-
-*Default Value (complex option)*::
-
-        # Addresses of hosts that are deemed contact points. 
-        # Cassandra nodes use this list of hosts to find each other and learn
-        # the topology of the ring.  You must change this if you are running
-        # multiple nodes!
-        - class_name: org.apache.cassandra.locator.SimpleSeedProvider
-          parameters:
-              # seeds is actually a comma-delimited list of addresses.
-              # Ex: "<ip1>,<ip2>,<ip3>"
-              - seeds: "127.0.0.1"
-
-``concurrent_reads``
---------------------
-For workloads with more data than can fit in memory, Cassandra's
-bottleneck will be reads that need to fetch data from
-disk. "concurrent_reads" should be set to (16 * number_of_drives) in
-order to allow the operations to enqueue low enough in the stack
-that the OS and drives can reorder them. Same applies to
-"concurrent_counter_writes", since counter writes read the current
-values before incrementing and writing them back.
-
-On the other hand, since writes are almost never IO bound, the ideal
-number of "concurrent_writes" is dependent on the number of cores in
-your system; (8 * number_of_cores) is a good rule of thumb.
-
-*Default Value:* 32
-
-``concurrent_writes``
----------------------
-
-*Default Value:* 32
-
-``concurrent_counter_writes``
------------------------------
-
-*Default Value:* 32
-
-``concurrent_materialized_view_writes``
----------------------------------------
-
-For materialized view writes, as there is a read involved, so this should
-be limited by the less of concurrent reads or concurrent writes.
-
-*Default Value:* 32
-
-``file_cache_size_in_mb``
--------------------------
-*This option is commented out by default.*
-
-Maximum memory to use for sstable chunk cache and buffer pooling.
-32MB of this are reserved for pooling buffers, the rest is used as an
-cache that holds uncompressed sstable chunks.
-Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
-so is in addition to the memory allocated for heap. The cache also has on-heap
-overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
-if the default 64k chunk size is used).
-Memory is only allocated when needed.
-
-*Default Value:* 512
-
-``buffer_pool_use_heap_if_exhausted``
--------------------------------------
-*This option is commented out by default.*
-
-Flag indicating whether to allocate on or off heap when the sstable buffer
-pool is exhausted, that is when it has exceeded the maximum memory
-file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.
-
-
-*Default Value:* true
-
-``disk_optimization_strategy``
-------------------------------
-*This option is commented out by default.*
-
-The strategy for optimizing disk read
-Possible values are:
-ssd (for solid state disks, the default)
-spinning (for spinning disks)
-
-*Default Value:* ssd
-
-``memtable_heap_space_in_mb``
------------------------------
-*This option is commented out by default.*
-
-Total permitted memory to use for memtables. Cassandra will stop
-accepting writes when the limit is exceeded until a flush completes,
-and will trigger a flush based on memtable_cleanup_threshold
-If omitted, Cassandra will set both to 1/4 the size of the heap.
-
-*Default Value:* 2048
-
-``memtable_offheap_space_in_mb``
---------------------------------
-*This option is commented out by default.*
-
-*Default Value:* 2048
-
-``memtable_cleanup_threshold``
-------------------------------
-*This option is commented out by default.*
-
-memtable_cleanup_threshold is deprecated. The default calculation
-is the only reasonable choice. See the comments on  memtable_flush_writers
-for more information.
-
-Ratio of occupied non-flushing memtable size to total permitted size
-that will trigger a flush of the largest memtable. Larger mct will
-mean larger flushes and hence less compaction, but also less concurrent
-flush activity which can make it difficult to keep your disks fed
-under heavy write load.
-
-memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)
-
-*Default Value:* 0.11
-
-``memtable_allocation_type``
-----------------------------
-
-Specify the way Cassandra allocates and manages memtable memory.
-Options are:
-
-heap_buffers
-  on heap nio buffers
-
-offheap_buffers
-  off heap (direct) nio buffers
-
-offheap_objects
-   off heap objects
-
-*Default Value:* heap_buffers
-
-``commitlog_total_space_in_mb``
--------------------------------
-*This option is commented out by default.*
-
-Total space to use for commit logs on disk.
-
-If space gets above this value, Cassandra will flush every dirty CF
-in the oldest segment and remove it.  So a small total commitlog space
-will tend to cause more flush activity on less-active columnfamilies.
-
-The default value is the smaller of 8192, and 1/4 of the total space
-of the commitlog volume.
-
-
-*Default Value:* 8192
-
-``memtable_flush_writers``
---------------------------
-*This option is commented out by default.*
-
-This sets the number of memtable flush writer threads per disk
-as well as the total number of memtables that can be flushed concurrently.
-These are generally a combination of compute and IO bound.
-
-Memtable flushing is more CPU efficient than memtable ingest and a single thread
-can keep up with the ingest rate of a whole server on a single fast disk
-until it temporarily becomes IO bound under contention typically with compaction.
-At that point you need multiple flush threads. At some point in the future
-it may become CPU bound all the time.
-
-You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
-metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
-to free memory.
-
-memtable_flush_writers defaults to two for a single data directory.
-This means that two  memtables can be flushed concurrently to the single data directory.
-If you have multiple data directories the default is one memtable flushing at a time
-but the flush will use a thread per data directory so you will get two or more writers.
-
-Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
-Adding more flush writers will result in smaller more frequent flushes that introduce more
-compaction overhead.
-
-There is a direct tradeoff between number of memtables that can be flushed concurrently
-and flush size and frequency. More is not better you just need enough flush writers
-to never stall waiting for flushing to free memory.
-
-
-*Default Value:* 2
-
-``cdc_total_space_in_mb``
--------------------------
-*This option is commented out by default.*
-
-Total space to use for change-data-capture logs on disk.
-
-If space gets above this value, Cassandra will throw WriteTimeoutException
-on Mutations including tables with CDC enabled. A CDCCompactor is responsible
-for parsing the raw CDC logs and deleting them when parsing is completed.
-
-The default value is the min of 4096 mb and 1/8th of the total space
-of the drive where cdc_raw_directory resides.
-
-*Default Value:* 4096
-
-``cdc_free_space_check_interval_ms``
-------------------------------------
-*This option is commented out by default.*
-
-When we hit our cdc_raw limit and the CDCCompactor is either running behind
-or experiencing backpressure, we check at the following interval to see if any
-new space for cdc-tracked tables has been made available. Default to 250ms
-
-*Default Value:* 250
-
-``index_summary_capacity_in_mb``
---------------------------------
-
-A fixed memory pool size in MB for for SSTable index summaries. If left
-empty, this will default to 5% of the heap size. If the memory usage of
-all index summaries exceeds this limit, SSTables with low read rates will
-shrink their index summaries in order to meet this limit.  However, this
-is a best-effort process. In extreme conditions Cassandra may need to use
-more than this amount of memory.
-
-``index_summary_resize_interval_in_minutes``
---------------------------------------------
-
-How frequently index summaries should be resampled.  This is done
-periodically to redistribute memory from the fixed-size pool to sstables
-proportional their recent read rates.  Setting to -1 will disable this
-process, leaving existing index summaries at their current sampling level.
-
-*Default Value:* 60
-
-``trickle_fsync``
------------------
-
-Whether to, when doing sequential writing, fsync() at intervals in
-order to force the operating system to flush the dirty
-buffers. Enable this to avoid sudden dirty buffer flushing from
-impacting read latencies. Almost always a good idea on SSDs; not
-necessarily on platters.
-
-*Default Value:* false
-
-``trickle_fsync_interval_in_kb``
---------------------------------
-
-*Default Value:* 10240
-
-``storage_port``
-----------------
-
-TCP port, for commands and data
-For security reasons, you should not expose this port to the internet.  Firewall it if needed.
-
-*Default Value:* 7000
-
-``ssl_storage_port``
---------------------
-
-SSL port, for encrypted communication.  Unused unless enabled in
-encryption_options
-For security reasons, you should not expose this port to the internet.  Firewall it if needed.
-
-*Default Value:* 7001
-
-``listen_address``
-------------------
-
-Address or interface to bind to and tell other Cassandra nodes to connect to.
-You _must_ change this if you want multiple nodes to be able to communicate!
-
-Set listen_address OR listen_interface, not both.
-
-Leaving it blank leaves it up to InetAddress.getLocalHost(). This
-will always do the Right Thing _if_ the node is properly configured
-(hostname, name resolution, etc), and the Right Thing is to use the
-address associated with the hostname (it might not be).
-
-Setting listen_address to 0.0.0.0 is always wrong.
-
-
-*Default Value:* localhost
-
-``listen_interface``
---------------------
-*This option is commented out by default.*
-
-Set listen_address OR listen_interface, not both. Interfaces must correspond
-to a single address, IP aliasing is not supported.
-
-*Default Value:* eth0
-
-``listen_interface_prefer_ipv6``
---------------------------------
-*This option is commented out by default.*
-
-If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
-you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
-address will be used. If true the first ipv6 address will be used. Defaults to false preferring
-ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
-
-*Default Value:* false
-
-``broadcast_address``
----------------------
-*This option is commented out by default.*
-
-Address to broadcast to other Cassandra nodes
-Leaving this blank will set it to the same value as listen_address
-
-*Default Value:* 1.2.3.4
-
-``listen_on_broadcast_address``
--------------------------------
-*This option is commented out by default.*
-
-When using multiple physical network interfaces, set this
-to true to listen on broadcast_address in addition to
-the listen_address, allowing nodes to communicate in both
-interfaces.
-Ignore this property if the network configuration automatically
-routes  between the public and private networks such as EC2.
-
-*Default Value:* false
-
-``internode_authenticator``
----------------------------
-*This option is commented out by default.*
-
-Internode authentication backend, implementing IInternodeAuthenticator;
-used to allow/disallow connections from peer nodes.
-
-*Default Value:* org.apache.cassandra.auth.AllowAllInternodeAuthenticator
-
-``start_native_transport``
---------------------------
-
-Whether to start the native transport server.
-Please note that the address on which the native transport is bound is the
-same as the rpc_address. The port however is different and specified below.
-
-*Default Value:* true
-
-``native_transport_port``
--------------------------
-port for the CQL native transport to listen for clients on
-For security reasons, you should not expose this port to the internet.  Firewall it if needed.
-
-*Default Value:* 9042
-
-``native_transport_port_ssl``
------------------------------
-*This option is commented out by default.*
-Enabling native transport encryption in client_encryption_options allows you to either use
-encryption for the standard port or to use a dedicated, additional port along with the unencrypted
-standard native_transport_port.
-Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
-for native_transport_port. Setting native_transport_port_ssl to a different value
-from native_transport_port will use encryption for native_transport_port_ssl while
-keeping native_transport_port unencrypted.
-
-*Default Value:* 9142
-
-``native_transport_max_threads``
---------------------------------
-*This option is commented out by default.*
-The maximum threads for handling requests when the native transport is used.
-This is similar to rpc_max_threads though the default differs slightly (and
-there is no native_transport_min_threads, idle threads will always be stopped
-after 30 seconds).
-
-*Default Value:* 128
-
-``native_transport_max_frame_size_in_mb``
------------------------------------------
-*This option is commented out by default.*
-
-The maximum size of allowed frame. Frame (requests) larger than this will
-be rejected as invalid. The default is 256MB. If you're changing this parameter,
-you may want to adjust max_value_size_in_mb accordingly.
-
-*Default Value:* 256
-
-``native_transport_max_concurrent_connections``
------------------------------------------------
-*This option is commented out by default.*
-
-The maximum number of concurrent client connections.
-The default is -1, which means unlimited.
-
-*Default Value:* -1
-
-``native_transport_max_concurrent_connections_per_ip``
-------------------------------------------------------
-*This option is commented out by default.*
-
-The maximum number of concurrent client connections per source ip.
-The default is -1, which means unlimited.
-
-*Default Value:* -1
-
-``start_rpc``
--------------
-
-Whether to start the thrift rpc server.
-
-*Default Value:* false
-
-``rpc_address``
----------------
-
-The address or interface to bind the Thrift RPC service and native transport
-server to.
-
-Set rpc_address OR rpc_interface, not both.
-
-Leaving rpc_address blank has the same effect as on listen_address
-(i.e. it will be based on the configured hostname of the node).
-
-Note that unlike listen_address, you can specify 0.0.0.0, but you must also
-set broadcast_rpc_address to a value other than 0.0.0.0.
-
-For security reasons, you should not expose this port to the internet.  Firewall it if needed.
-
-*Default Value:* localhost
-
-``rpc_interface``
------------------
-*This option is commented out by default.*
-
-Set rpc_address OR rpc_interface, not both. Interfaces must correspond
-to a single address, IP aliasing is not supported.
-
-*Default Value:* eth1
-
-``rpc_interface_prefer_ipv6``
------------------------------
-*This option is commented out by default.*
-
-If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
-you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
-address will be used. If true the first ipv6 address will be used. Defaults to false preferring
-ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
-
-*Default Value:* false
-
-``rpc_port``
-------------
-
-port for Thrift to listen for clients on
-
-*Default Value:* 9160
-
-``broadcast_rpc_address``
--------------------------
-*This option is commented out by default.*
-
-RPC address to broadcast to drivers and other Cassandra nodes. This cannot
-be set to 0.0.0.0. If left blank, this will be set to the value of
-rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
-be set.
-
-*Default Value:* 1.2.3.4
-
-``rpc_keepalive``
------------------
-
-enable or disable keepalive on rpc/native connections
-
-*Default Value:* true
-
-``rpc_server_type``
--------------------
-
-Cassandra provides two out-of-the-box options for the RPC Server:
-
-sync
-  One thread per thrift connection. For a very large number of clients, memory
-  will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
-  per thread, and that will correspond to your use of virtual memory (but physical memory
-  may be limited depending on use of stack space).
-
-hsha
-  Stands for "half synchronous, half asynchronous." All thrift clients are handled
-  asynchronously using a small number of threads that does not vary with the amount
-  of thrift clients (and thus scales well to many clients). The rpc requests are still
-  synchronous (one thread per active request). If hsha is selected then it is essential
-  that rpc_max_threads is changed from the default value of unlimited.
-
-The default is sync because on Windows hsha is about 30% slower.  On Linux,
-sync/hsha performance is about the same, with hsha of course using less memory.
-
-Alternatively,  can provide your own RPC server by providing the fully-qualified class name
-of an o.a.c.t.TServerFactory that can create an instance of it.
-
-*Default Value:* sync
-
-``rpc_min_threads``
--------------------
-*This option is commented out by default.*
-
-Uncomment rpc_min|max_thread to set request pool size limits.
-
-Regardless of your choice of RPC server (see above), the number of maximum requests in the
-RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
-RPC server, it also dictates the number of clients that can be connected at all).
-
-The default is unlimited and thus provides no protection against clients overwhelming the server. You are
-encouraged to set a maximum that makes sense for you in production, but do keep in mind that
-rpc_max_threads represents the maximum number of client requests this server may execute concurrently.
-
-
-*Default Value:* 16
-
-``rpc_max_threads``
--------------------
-*This option is commented out by default.*
-
-*Default Value:* 2048
-
-``rpc_send_buff_size_in_bytes``
--------------------------------
-*This option is commented out by default.*
-
-uncomment to set socket buffer sizes on rpc connections
-
-``rpc_recv_buff_size_in_bytes``
--------------------------------
-*This option is commented out by default.*
-
-``internode_send_buff_size_in_bytes``
--------------------------------------
-*This option is commented out by default.*
-
-Uncomment to set socket buffer size for internode communication
-Note that when setting this, the buffer size is limited by net.core.wmem_max
-and when not setting it it is defined by net.ipv4.tcp_wmem
-See also:
-/proc/sys/net/core/wmem_max
-/proc/sys/net/core/rmem_max
-/proc/sys/net/ipv4/tcp_wmem
-/proc/sys/net/ipv4/tcp_wmem
-and 'man tcp'
-
-``internode_recv_buff_size_in_bytes``
--------------------------------------
-*This option is commented out by default.*
-
-Uncomment to set socket buffer size for internode communication
-Note that when setting this, the buffer size is limited by net.core.wmem_max
-and when not setting it it is defined by net.ipv4.tcp_wmem
-
-``thrift_framed_transport_size_in_mb``
---------------------------------------
-
-Frame size for thrift (maximum message length).
-
-*Default Value:* 15
-
-``incremental_backups``
------------------------
-
-Set to true to have Cassandra create a hard link to each sstable
-flushed or streamed locally in a backups/ subdirectory of the
-keyspace data.  Removing these links is the operator's
-responsibility.
-
-*Default Value:* false
-
-``snapshot_before_compaction``
-------------------------------
-
-Whether or not to take a snapshot before each compaction.  Be
-careful using this option, since Cassandra won't clean up the
-snapshots for you.  Mostly useful if you're paranoid when there
-is a data format change.
-
-*Default Value:* false
-
-``auto_snapshot``
------------------
-
-Whether or not a snapshot is taken of the data before keyspace truncation
-or dropping of column families. The STRONGLY advised default of true 
-should be used to provide data safety. If you set this flag to false, you will
-lose data on truncation or drop.
-
-*Default Value:* true
-
-``column_index_size_in_kb``
----------------------------
-
-Granularity of the collation index of rows within a partition.
-Increase if your rows are large, or if you have a very large
-number of rows per partition.  The competing goals are these:
-
-- a smaller granularity means more index entries are generated
-  and looking up rows withing the partition by collation column
-  is faster
-- but, Cassandra will keep the collation index in memory for hot
-  rows (as part of the key cache), so a larger granularity means
-  you can cache more hot rows
-
-*Default Value:* 64
-
-``column_index_cache_size_in_kb``
----------------------------------
-
-Per sstable indexed key cache entries (the collation index in memory
-mentioned above) exceeding this size will not be held on heap.
-This means that only partition information is held on heap and the
-index entries are read from disk.
-
-Note that this size refers to the size of the
-serialized index information and not the size of the partition.
-
-*Default Value:* 2
-
-``concurrent_compactors``
--------------------------
-*This option is commented out by default.*
-
-Number of simultaneous compactions to allow, NOT including
-validation "compactions" for anti-entropy repair.  Simultaneous
-compactions can help preserve read performance in a mixed read/write
-workload, by mitigating the tendency of small sstables to accumulate
-during a single long running compactions. The default is usually
-fine and if you experience problems with compaction running too
-slowly or too fast, you should look at
-compaction_throughput_mb_per_sec first.
-
-concurrent_compactors defaults to the smaller of (number of disks,
-number of cores), with a minimum of 2 and a maximum of 8.
-
-If your data directories are backed by SSD, you should increase this
-to the number of cores.
-
-*Default Value:* 1
-
-``compaction_throughput_mb_per_sec``
-------------------------------------
-
-Throttles compaction to the given total throughput across the entire
-system. The faster you insert data, the faster you need to compact in
-order to keep the sstable count down, but in general, setting this to
-16 to 32 times the rate you are inserting data is more than sufficient.
-Setting this to 0 disables throttling. Note that this account for all types
-of compaction, including validation compaction.
-
-*Default Value:* 16
-
-``sstable_preemptive_open_interval_in_mb``
-------------------------------------------
-
-When compacting, the replacement sstable(s) can be opened before they
-are completely written, and used in place of the prior sstables for
-any range that has been written. This helps to smoothly transfer reads 
-between the sstables, reducing page cache churn and keeping hot rows hot
-
-*Default Value:* 50
-
-``stream_throughput_outbound_megabits_per_sec``
------------------------------------------------
-*This option is commented out by default.*
-
-Throttles all outbound streaming file transfers on this node to the
-given total throughput in Mbps. This is necessary because Cassandra does
-mostly sequential IO when streaming data during bootstrap or repair, which
-can lead to saturating the network connection and degrading rpc performance.
-When unset, the default is 200 Mbps or 25 MB/s.
-
-*Default Value:* 200
-
-``inter_dc_stream_throughput_outbound_megabits_per_sec``
---------------------------------------------------------
-*This option is commented out by default.*
-
-Throttles all streaming file transfer between the datacenters,
-this setting allows users to throttle inter dc stream throughput in addition
-to throttling all network stream traffic as configured with
-stream_throughput_outbound_megabits_per_sec
-When unset, the default is 200 Mbps or 25 MB/s
-
-*Default Value:* 200
-
-``read_request_timeout_in_ms``
-------------------------------
-
-How long the coordinator should wait for read operations to complete
-
-*Default Value:* 5000
-
-``range_request_timeout_in_ms``
--------------------------------
-How long the coordinator should wait for seq or index scans to complete
-
-*Default Value:* 10000
-
-``write_request_timeout_in_ms``
--------------------------------
-How long the coordinator should wait for writes to complete
-
-*Default Value:* 2000
-
-``counter_write_request_timeout_in_ms``
----------------------------------------
-How long the coordinator should wait for counter writes to complete
-
-*Default Value:* 5000
-
-``cas_contention_timeout_in_ms``
---------------------------------
-How long a coordinator should continue to retry a CAS operation
-that contends with other proposals for the same row
-
-*Default Value:* 1000
-
-``truncate_request_timeout_in_ms``
-----------------------------------
-How long the coordinator should wait for truncates to complete
-(This can be much longer, because unless auto_snapshot is disabled
-we need to flush first so we can snapshot before removing the data.)
-
-*Default Value:* 60000
-
-``request_timeout_in_ms``
--------------------------
-The default timeout for other, miscellaneous operations
-
-*Default Value:* 10000
-
-``slow_query_log_timeout_in_ms``
---------------------------------
-
-How long before a node logs slow queries. Select queries that take longer than
-this timeout to execute, will generate an aggregated log message, so that slow queries
-can be identified. Set this value to zero to disable slow query logging.
-
-*Default Value:* 500
-
-``cross_node_timeout``
-----------------------
-
-Enable operation timeout information exchange between nodes to accurately
-measure request timeouts.  If disabled, replicas will assume that requests
-were forwarded to them instantly by the coordinator, which means that
-under overload conditions we will waste that much extra time processing 
-already-timed-out requests.
-
-Warning: before enabling this property make sure to ntp is installed
-and the times are synchronized between the nodes.
-
-*Default Value:* false
-
-``streaming_socket_timeout_in_ms``
-----------------------------------
-*This option is commented out by default.*
-
-Set socket timeout for streaming operation.
-The stream session is failed if no data/ack is received by any of the participants
-within that period, which means this should also be sufficient to stream a large
-sstable or rebuild table indexes.
-Default value is 86400000ms, which means stale streams timeout after 24 hours.
-A value of zero means stream sockets should never time out.
-
-*Default Value:* 86400000
-
-``phi_convict_threshold``
--------------------------
-*This option is commented out by default.*
-
-phi value that must be reached for a host to be marked down.
-most users should never need to adjust this.
-
-*Default Value:* 8
-
-``endpoint_snitch``
--------------------
-
-endpoint_snitch -- Set this to a class that implements
-IEndpointSnitch.  The snitch has two functions:
-
-- it teaches Cassandra enough about your network topology to route
-  requests efficiently
-- it allows Cassandra to spread replicas around your cluster to avoid
-  correlated failures. It does this by grouping machines into
-  "datacenters" and "racks."  Cassandra will do its best not to have
-  more than one replica on the same "rack" (which may not actually
-  be a physical location)
-
-CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
-ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
-This means that if you start with the default SimpleSnitch, which
-locates every node on "rack1" in "datacenter1", your only options
-if you need to add another datacenter are GossipingPropertyFileSnitch
-(and the older PFS).  From there, if you want to migrate to an
-incompatible snitch like Ec2Snitch you can do it by adding new nodes
-under Ec2Snitch (which will locate them in a new "datacenter") and
-decommissioning the old ones.
-
-Out of the box, Cassandra provides:
-
-SimpleSnitch:
-   Treats Strategy order as proximity. This can improve cache
-   locality when disabling read repair.  Only appropriate for
-   single-datacenter deployments.
-
-GossipingPropertyFileSnitch
-   This should be your go-to snitch for production use.  The rack
-   and datacenter for the local node are defined in
-   cassandra-rackdc.properties and propagated to other nodes via
-   gossip.  If cassandra-topology.properties exists, it is used as a
-   fallback, allowing migration from the PropertyFileSnitch.
-
-PropertyFileSnitch:
-   Proximity is determined by rack and data center, which are
-   explicitly configured in cassandra-topology.properties.
-
-Ec2Snitch:
-   Appropriate for EC2 deployments in a single Region. Loads Region
-   and Availability Zone information from the EC2 API. The Region is
-   treated as the datacenter, and the Availability Zone as the rack.
-   Only private IPs are used, so this will not work across multiple
-   Regions.
-
-Ec2MultiRegionSnitch:
-   Uses public IPs as broadcast_address to allow cross-region
-   connectivity.  (Thus, you should set seed addresses to the public
-   IP as well.) You will need to open the storage_port or
-   ssl_storage_port on the public IP firewall.  (For intra-Region
-   traffic, Cassandra will switch to the private IP after
-   establishing a connection.)
-
-RackInferringSnitch:
-   Proximity is determined by rack and data center, which are
-   assumed to correspond to the 3rd and 2nd octet of each node's IP
-   address, respectively.  Unless this happens to match your
-   deployment conventions, this is best used as an example of
-   writing a custom Snitch class and is provided in that spirit.
-
-You can use a custom Snitch by setting this to the full class name
-of the snitch, which will be assumed to be on your classpath.
-
-*Default Value:* SimpleSnitch
-
-``dynamic_snitch_update_interval_in_ms``
-----------------------------------------
-
-controls how often to perform the more expensive part of host score
-calculation
-
-*Default Value:* 100 
-
-``dynamic_snitch_reset_interval_in_ms``
----------------------------------------
-controls how often to reset all host scores, allowing a bad host to
-possibly recover
-
-*Default Value:* 600000
-
-``dynamic_snitch_badness_threshold``
-------------------------------------
-if set greater than zero and read_repair_chance is < 1.0, this will allow
-'pinning' of replicas to hosts in order to increase cache capacity.
-The badness threshold will control how much worse the pinned host has to be
-before the dynamic snitch will prefer other replicas over it.  This is
-expressed as a double which represents a percentage.  Thus, a value of
-0.2 means Cassandra would continue to prefer the static snitch values
-until the pinned host was 20% worse than the fastest.
-
-*Default Value:* 0.1
-
-``request_scheduler``
----------------------
-
-request_scheduler -- Set this to a class that implements
-RequestScheduler, which will schedule incoming client requests
-according to the specific policy. This is useful for multi-tenancy
-with a single Cassandra cluster.
-NOTE: This is specifically for requests from the client and does
-not affect inter node communication.
-org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
-org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
-client requests to a node with a separate queue for each
-request_scheduler_id. The scheduler is further customized by
-request_scheduler_options as described below.
-
-*Default Value:* org.apache.cassandra.scheduler.NoScheduler
-
-``request_scheduler_options``
------------------------------
-*This option is commented out by default.*
-
-Scheduler Options vary based on the type of scheduler
-
-NoScheduler
-  Has no options
-
-RoundRobin
-  throttle_limit
-    The throttle_limit is the number of in-flight
-    requests per client.  Requests beyond 
-    that limit are queued up until
-    running requests can complete.
-    The value of 80 here is twice the number of
-    concurrent_reads + concurrent_writes.
-  default_weight
-    default_weight is optional and allows for
-    overriding the default which is 1.
-  weights
-    Weights are optional and will default to 1 or the
-    overridden default_weight. The weight translates into how
-    many requests are handled during each turn of the
-    RoundRobin, based on the scheduler id.
-
-
-*Default Value (complex option)*::
-
-    #    throttle_limit: 80
-    #    default_weight: 5
-    #    weights:
-    #      Keyspace1: 1
-    #      Keyspace2: 5
-
-``request_scheduler_id``
-------------------------
-*This option is commented out by default.*
-request_scheduler_id -- An identifier based on which to perform
-the request scheduling. Currently the only valid option is keyspace.
-
-*Default Value:* keyspace
-
-``server_encryption_options``
------------------------------
-
-Enable or disable inter-node encryption
-JVM defaults for supported SSL socket protocols and cipher suites can
-be replaced using custom encryption options. This is not recommended
-unless you have policies in place that dictate certain settings, or
-need to disable vulnerable ciphers or protocols in case the JVM cannot
-be updated.
-FIPS compliant settings can be configured at JVM level and should not
-involve changing encryption settings here:
-https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html
-*NOTE* No custom encryption options are enabled at the moment
-The available internode options are : all, none, dc, rack
-
-If set to dc cassandra will encrypt the traffic between the DCs
-If set to rack cassandra will encrypt the traffic between the racks
-
-The passwords used in these options must match the passwords used when generating
-the keystore and truststore.  For instructions on generating these files, see:
-http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore
-
-
-*Default Value (complex option)*::
-
-        internode_encryption: none
-        keystore: conf/.keystore
-        keystore_password: cassandra
-        truststore: conf/.truststore
-        truststore_password: cassandra
-        # More advanced defaults below:
-        # protocol: TLS
-        # algorithm: SunX509
-        # store_type: JKS
-        # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
-        # require_client_auth: false
-        # require_endpoint_verification: false
-
-``client_encryption_options``
------------------------------
-enable or disable client/server encryption.
-
-*Default Value (complex option)*::
-
-        enabled: false
-        # If enabled and optional is set to true encrypted and unencrypted connections are handled.
-        optional: false
-        keystore: conf/.keystore
-        keystore_password: cassandra
-        # require_client_auth: false
-        # Set trustore and truststore_password if require_client_auth is true
-        # truststore: conf/.truststore
-        # truststore_password: cassandra
-        # More advanced defaults below:
-        # protocol: TLS
-        # algorithm: SunX509
-        # store_type: JKS
-        # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
-
-``internode_compression``
--------------------------
-internode_compression controls whether traffic between nodes is
-compressed.
-Can be:
-
-all
-  all traffic is compressed
-
-dc
-  traffic between different datacenters is compressed
-
-none
-  nothing is compressed.
-
-*Default Value:* dc
-
-``inter_dc_tcp_nodelay``
-------------------------
-
-Enable or disable tcp_nodelay for inter-dc communication.
-Disabling it will result in larger (but fewer) network packets being sent,
-reducing overhead from the TCP protocol itself, at the cost of increasing
-latency if you block for cross-datacenter responses.
-
-*Default Value:* false
-
-``tracetype_query_ttl``
------------------------
-
-TTL for different trace types used during logging of the repair process.
-
-*Default Value:* 86400
-
-``tracetype_repair_ttl``
-------------------------
-
-*Default Value:* 604800
-
-``gc_log_threshold_in_ms``
---------------------------
-*This option is commented out by default.*
-
-By default, Cassandra logs GC Pauses greater than 200 ms at INFO level
-This threshold can be adjusted to minimize logging if necessary
-
-*Default Value:* 200
-
-``enable_user_defined_functions``
----------------------------------
-
-If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
-INFO level
-UDFs (user defined functions) are disabled by default.
-As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.
-
-*Default Value:* false
-
-``enable_scripted_user_defined_functions``
-------------------------------------------
-
-Enables scripted UDFs (JavaScript UDFs).
-Java UDFs are always enabled, if enable_user_defined_functions is true.
-Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider.
-This option has no effect, if enable_user_defined_functions is false.
-
-*Default Value:* false
-
-``windows_timer_interval``
---------------------------
-
-The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
-Lowering this value on Windows can provide much tighter latency and better throughput, however
-some virtualized environments may see a negative performance impact from changing this setting
-below their system default. The sysinternals 'clockres' tool can confirm your system's default
-setting.
-
-*Default Value:* 1
-
-``transparent_data_encryption_options``
----------------------------------------
-
-
-Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
-a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
-the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys
-can still (and should!) be in the keystore and will be used on decrypt operations
-(to handle the case of key rotation).
-
-It is strongly recommended to download and install Java Cryptography Extension (JCE)
-Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
-(current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)
-
-Currently, only the following file types are supported for transparent data encryption, although
-more are coming in future cassandra releases: commitlog, hints
-
-*Default Value (complex option)*::
-
-        enabled: false
-        chunk_length_kb: 64
-        cipher: AES/CBC/PKCS5Padding
-        key_alias: testing:1
-        # CBC IV length for AES needs to be 16 bytes (which is also the default size)
-        # iv_length: 16
-        key_provider: 
-          - class_name: org.apache.cassandra.security.JKSKeyProvider
-            parameters: 
-              - keystore: conf/.keystore
-                keystore_password: cassandra
-                store_type: JCEKS
-                key_password: cassandra
-
-``tombstone_warn_threshold``
-----------------------------
-
-####################
-SAFETY THRESHOLDS #
-####################
-
-When executing a scan, within or across a partition, we need to keep the
-tombstones seen in memory so we can return them to the coordinator, which
-will use them to make sure other replicas also know about the deleted rows.
-With workloads that generate a lot of tombstones, this can cause performance
-problems and even exaust the server heap.
-(http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets)
-Adjust the thresholds here if you understand the dangers and want to
-scan more tombstones anyway.  These thresholds may also be adjusted at runtime
-using the StorageService mbean.
-
-*Default Value:* 1000
-
-``tombstone_failure_threshold``
--------------------------------
-
-*Default Value:* 100000
-
-``batch_size_warn_threshold_in_kb``
------------------------------------
-
-Log WARN on any batch size exceeding this value. 5kb per batch by default.
-Caution should be taken on increasing the size of this threshold as it can lead to node instability.
-
-*Default Value:* 5
-
-``batch_size_fail_threshold_in_kb``
------------------------------------
-
-Fail any batch exceeding this value. 50kb (10x warn threshold) by default.
-
-*Default Value:* 50
-
-``unlogged_batch_across_partitions_warn_threshold``
----------------------------------------------------
-
-Log WARN on any batches not of type LOGGED than span across more partitions than this limit
-
-*Default Value:* 10
-
-``compaction_large_partition_warning_threshold_mb``
----------------------------------------------------
-
-Log a warning when compacting partitions larger than this value
-
-*Default Value:* 100
-
-``gc_warn_threshold_in_ms``
----------------------------
-
-GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
-Adjust the threshold based on your application throughput requirement
-By default, Cassandra logs GC Pauses greater than 200 ms at INFO level
-
-*Default Value:* 1000
-
-``max_value_size_in_mb``
-------------------------
-*This option is commented out by default.*
-
-Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
-early. Any value size larger than this threshold will result into marking an SSTable
-as corrupted.
-
-*Default Value:* 256
diff --git a/src/doc/3.10/_sources/configuration/index.txt b/src/doc/3.10/_sources/configuration/index.txt
deleted file mode 100644
index f774fda..0000000
--- a/src/doc/3.10/_sources/configuration/index.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Configuring Cassandra
-=====================
-
-This section describes how to configure Apache Cassandra.
-
-.. toctree::
-   :maxdepth: 1
-
-   cassandra_config_file
diff --git a/src/doc/3.10/_sources/contactus.txt b/src/doc/3.10/_sources/contactus.txt
deleted file mode 100644
index 8d0f5dd..0000000
--- a/src/doc/3.10/_sources/contactus.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Contact us
-==========
-
-You can get in touch with the Cassandra community either via the mailing lists or the freenode IRC channels.
-
-.. _mailing-lists:
-
-Mailing lists
--------------
-
-The following mailing lists are available:
-
-- `Users <http://www.mail-archive.com/user@cassandra.apache.org/>`__ – General discussion list for users - `Subscribe
-  <user-subscribe@cassandra.apache.org>`__
-- `Developers <http://www.mail-archive.com/dev@cassandra.apache.org/>`__ – Development related discussion - `Subscribe
-  <dev-subscribe@cassandra.apache.org>`__
-- `Commits <http://www.mail-archive.com/commits@cassandra.apache.org/>`__ – Commit notification source repository -
-  `Subscribe <commits-subscribe@cassandra.apache.org>`__
-- `Client Libraries <http://www.mail-archive.com/client-dev@cassandra.apache.org/>`__ – Discussion related to the
-  development of idiomatic client APIs - `Subscribe <client-dev-subscribe@cassandra.apache.org>`__
-
-Subscribe by sending an email to the email address in the Subscribe links above. Follow the instructions in the welcome
-email to confirm your subscription. Make sure to keep the welcome email as it contains instructions on how to
-unsubscribe.
-
-.. _irc-channels:
-
-IRC
----
-
-To chat with developers or users in real-time, join our channels on `IRC freenode <http://webchat.freenode.net/>`__. The
-following channels are available:
-
-- ``#cassandra`` - for user questions and general discussions.
-- ``#cassandra-dev`` - strictly for questions or discussions related to Cassandra development.
-- ``#cassandra-builds`` - results of automated test builds.
-
diff --git a/src/doc/3.10/_sources/cql/appendices.txt b/src/doc/3.10/_sources/cql/appendices.txt
deleted file mode 100644
index 8c63a32..0000000
--- a/src/doc/3.10/_sources/cql/appendices.txt
+++ /dev/null
@@ -1,308 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-Appendices
-----------
-
-.. _appendix-A:
-
-Appendix A: CQL Keywords
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-CQL distinguishes between *reserved* and *non-reserved* keywords.
-Reserved keywords cannot be used as identifier, they are truly reserved
-for the language (but one can enclose a reserved keyword by
-double-quotes to use it as an identifier). Non-reserved keywords however
-only have a specific meaning in certain context but can used as
-identifier otherwise. The only *raison d’être* of these non-reserved
-keywords is convenience: some keyword are non-reserved when it was
-always easy for the parser to decide whether they were used as keywords
-or not.
-
-+--------------------+-------------+
-| Keyword            | Reserved?   |
-+====================+=============+
-| ``ADD``            | yes         |
-+--------------------+-------------+
-| ``AGGREGATE``      | no          |
-+--------------------+-------------+
-| ``ALL``            | no          |
-+--------------------+-------------+
-| ``ALLOW``          | yes         |
-+--------------------+-------------+
-| ``ALTER``          | yes         |
-+--------------------+-------------+
-| ``AND``            | yes         |
-+--------------------+-------------+
-| ``APPLY``          | yes         |
-+--------------------+-------------+
-| ``AS``             | no          |
-+--------------------+-------------+
-| ``ASC``            | yes         |
-+--------------------+-------------+
-| ``ASCII``          | no          |
-+--------------------+-------------+
-| ``AUTHORIZE``      | yes         |
-+--------------------+-------------+
-| ``BATCH``          | yes         |
-+--------------------+-------------+
-| ``BEGIN``          | yes         |
-+--------------------+-------------+
-| ``BIGINT``         | no          |
-+--------------------+-------------+
-| ``BLOB``           | no          |
-+--------------------+-------------+
-| ``BOOLEAN``        | no          |
-+--------------------+-------------+
-| ``BY``             | yes         |
-+--------------------+-------------+
-| ``CALLED``         | no          |
-+--------------------+-------------+
-| ``CLUSTERING``     | no          |
-+--------------------+-------------+
-| ``COLUMNFAMILY``   | yes         |
-+--------------------+-------------+
-| ``COMPACT``        | no          |
-+--------------------+-------------+
-| ``CONTAINS``       | no          |
-+--------------------+-------------+
-| ``COUNT``          | no          |
-+--------------------+-------------+
-| ``COUNTER``        | no          |
-+--------------------+-------------+
-| ``CREATE``         | yes         |
-+--------------------+-------------+
-| ``CUSTOM``         | no          |
-+--------------------+-------------+
-| ``DATE``           | no          |
-+--------------------+-------------+
-| ``DECIMAL``        | no          |
-+--------------------+-------------+
-| ``DELETE``         | yes         |
-+--------------------+-------------+
-| ``DESC``           | yes         |
-+--------------------+-------------+
-| ``DESCRIBE``       | yes         |
-+--------------------+-------------+
-| ``DISTINCT``       | no          |
-+--------------------+-------------+
-| ``DOUBLE``         | no          |
-+--------------------+-------------+
-| ``DROP``           | yes         |
-+--------------------+-------------+
-| ``ENTRIES``        | yes         |
-+--------------------+-------------+
-| ``EXECUTE``        | yes         |
-+--------------------+-------------+
-| ``EXISTS``         | no          |
-+--------------------+-------------+
-| ``FILTERING``      | no          |
-+--------------------+-------------+
-| ``FINALFUNC``      | no          |
-+--------------------+-------------+
-| ``FLOAT``          | no          |
-+--------------------+-------------+
-| ``FROM``           | yes         |
-+--------------------+-------------+
-| ``FROZEN``         | no          |
-+--------------------+-------------+
-| ``FULL``           | yes         |
-+--------------------+-------------+
-| ``FUNCTION``       | no          |
-+--------------------+-------------+
-| ``FUNCTIONS``      | no          |
-+--------------------+-------------+
-| ``GRANT``          | yes         |
-+--------------------+-------------+
-| ``IF``             | yes         |
-+--------------------+-------------+
-| ``IN``             | yes         |
-+--------------------+-------------+
-| ``INDEX``          | yes         |
-+--------------------+-------------+
-| ``INET``           | no          |
-+--------------------+-------------+
-| ``INFINITY``       | yes         |
-+--------------------+-------------+
-| ``INITCOND``       | no          |
-+--------------------+-------------+
-| ``INPUT``          | no          |
-+--------------------+-------------+
-| ``INSERT``         | yes         |
-+--------------------+-------------+
-| ``INT``            | no          |
-+--------------------+-------------+
-| ``INTO``           | yes         |
-+--------------------+-------------+
-| ``JSON``           | no          |
-+--------------------+-------------+
-| ``KEY``            | no          |
-+--------------------+-------------+
-| ``KEYS``           | no          |
-+--------------------+-------------+
-| ``KEYSPACE``       | yes         |
-+--------------------+-------------+
-| ``KEYSPACES``      | no          |
-+--------------------+-------------+
-| ``LANGUAGE``       | no          |
-+--------------------+-------------+
-| ``LIMIT``          | yes         |
-+--------------------+-------------+
-| ``LIST``           | no          |
-+--------------------+-------------+
-| ``LOGIN``          | no          |
-+--------------------+-------------+
-| ``MAP``            | no          |
-+--------------------+-------------+
-| ``MODIFY``         | yes         |
-+--------------------+-------------+
-| ``NAN``            | yes         |
-+--------------------+-------------+
-| ``NOLOGIN``        | no          |
-+--------------------+-------------+
-| ``NORECURSIVE``    | yes         |
-+--------------------+-------------+
-| ``NOSUPERUSER``    | no          |
-+--------------------+-------------+
-| ``NOT``            | yes         |
-+--------------------+-------------+
-| ``NULL``           | yes         |
-+--------------------+-------------+
-| ``OF``             | yes         |
-+--------------------+-------------+
-| ``ON``             | yes         |
-+--------------------+-------------+
-| ``OPTIONS``        | no          |
-+--------------------+-------------+
-| ``OR``             | yes         |
-+--------------------+-------------+
-| ``ORDER``          | yes         |
-+--------------------+-------------+
-| ``PASSWORD``       | no          |
-+--------------------+-------------+
-| ``PERMISSION``     | no          |
-+--------------------+-------------+
-| ``PERMISSIONS``    | no          |
-+--------------------+-------------+
-| ``PRIMARY``        | yes         |
-+--------------------+-------------+
-| ``RENAME``         | yes         |
-+--------------------+-------------+
-| ``REPLACE``        | yes         |
-+--------------------+-------------+
-| ``RETURNS``        | no          |
-+--------------------+-------------+
-| ``REVOKE``         | yes         |
-+--------------------+-------------+
-| ``ROLE``           | no          |
-+--------------------+-------------+
-| ``ROLES``          | no          |
-+--------------------+-------------+
-| ``SCHEMA``         | yes         |
-+--------------------+-------------+
-| ``SELECT``         | yes         |
-+--------------------+-------------+
-| ``SET``            | yes         |
-+--------------------+-------------+
-| ``SFUNC``          | no          |
-+--------------------+-------------+
-| ``SMALLINT``       | no          |
-+--------------------+-------------+
-| ``STATIC``         | no          |
-+--------------------+-------------+
-| ``STORAGE``        | no          |
-+--------------------+-------------+
-| ``STYPE``          | no          |
-+--------------------+-------------+
-| ``SUPERUSER``      | no          |
-+--------------------+-------------+
-| ``TABLE``          | yes         |
-+--------------------+-------------+
-| ``TEXT``           | no          |
-+--------------------+-------------+
-| ``TIME``           | no          |
-+--------------------+-------------+
-| ``TIMESTAMP``      | no          |
-+--------------------+-------------+
-| ``TIMEUUID``       | no          |
-+--------------------+-------------+
-| ``TINYINT``        | no          |
-+--------------------+-------------+
-| ``TO``             | yes         |
-+--------------------+-------------+
-| ``TOKEN``          | yes         |
-+--------------------+-------------+
-| ``TRIGGER``        | no          |
-+--------------------+-------------+
-| ``TRUNCATE``       | yes         |
-+--------------------+-------------+
-| ``TTL``            | no          |
-+--------------------+-------------+
-| ``TUPLE``          | no          |
-+--------------------+-------------+
-| ``TYPE``           | no          |
-+--------------------+-------------+
-| ``UNLOGGED``       | yes         |
-+--------------------+-------------+
-| ``UPDATE``         | yes         |
-+--------------------+-------------+
-| ``USE``            | yes         |
-+--------------------+-------------+
-| ``USER``           | no          |
-+--------------------+-------------+
-| ``USERS``          | no          |
-+--------------------+-------------+
-| ``USING``          | yes         |
-+--------------------+-------------+
-| ``UUID``           | no          |
-+--------------------+-------------+
-| ``VALUES``         | no          |
-+--------------------+-------------+
-| ``VARCHAR``        | no          |
-+--------------------+-------------+
-| ``VARINT``         | no          |
-+--------------------+-------------+
-| ``WHERE``          | yes         |
-+--------------------+-------------+
-| ``WITH``           | yes         |
-+--------------------+-------------+
-| ``WRITETIME``      | no          |
-+--------------------+-------------+
-
-Appendix B: CQL Reserved Types
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following type names are not currently used by CQL, but are reserved
-for potential future use. User-defined types may not use reserved type
-names as their name.
-
-+-----------------+
-| type            |
-+=================+
-| ``bitstring``   |
-+-----------------+
-| ``byte``        |
-+-----------------+
-| ``complex``     |
-+-----------------+
-| ``enum``        |
-+-----------------+
-| ``interval``    |
-+-----------------+
-| ``macaddr``     |
-+-----------------+
diff --git a/src/doc/3.10/_sources/cql/changes.txt b/src/doc/3.10/_sources/cql/changes.txt
deleted file mode 100644
index 4f71748..0000000
--- a/src/doc/3.10/_sources/cql/changes.txt
+++ /dev/null
@@ -1,197 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-Changes
--------
-
-The following describes the changes in each version of CQL.
-
-3.4.3
-^^^^^
-
-- Support for ``GROUP BY`` (:jira:`10707`).
-- Adds a ``DEFAULT UNSET`` option for ``INSERT JSON`` to ignore omitted columns (:jira:`11424`).
-- Allows ``null`` as a legal value for TTL on insert and update. It will be treated as equivalent to
-inserting a 0 (:jira:`12216`).
-
-3.4.2
-^^^^^
-
-- If a table has a non zero ``default_time_to_live``, then explicitly specifying a TTL of 0 in an ``INSERT`` or
-  ``UPDATE`` statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels
-  the ``default_time_to_live``). This wasn't the case before and the ``default_time_to_live`` was applied even though a
-  TTL had been explicitly set.
-- ``ALTER TABLE`` ``ADD`` and ``DROP`` now allow multiple columns to be added/removed.
-- New ``PER PARTITION LIMIT`` option for ``SELECT`` statements (see `CASSANDRA-7017
-  <https://issues.apache.org/jira/browse/CASSANDRA-7017)>`__.
-- :ref:`User-defined functions <cql-functions>` can now instantiate ``UDTValue`` and ``TupleValue`` instances via the
-  new ``UDFContext`` interface (see `CASSANDRA-10818 <https://issues.apache.org/jira/browse/CASSANDRA-10818)>`__.
-- :ref:`User-defined types <udts>` may now be stored in a non-frozen form, allowing individual fields to be updated and
-  deleted in ``UPDATE`` statements and ``DELETE`` statements, respectively. (`CASSANDRA-7423
-  <https://issues.apache.org/jira/browse/CASSANDRA-7423)>`__).
-
-3.4.1
-^^^^^
-
-- Adds ``CAST`` functions.
-
-3.4.0
-^^^^^
-
-- Support for :ref:`materialized views <materialized-views>`.
-- ``DELETE`` support for inequality expressions and ``IN`` restrictions on any primary key columns.
-- ``UPDATE`` support for ``IN`` restrictions on any primary key columns.
-
-3.3.1
-^^^^^
-
-- The syntax ``TRUNCATE TABLE X`` is now accepted as an alias for ``TRUNCATE X``.
-
-3.3.0
-^^^^^
-
-- :ref:`User-defined functions and aggregates <cql-functions>` are now supported.
-- Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.
-- Introduces Roles to supersede user based authentication and access control
-- New ``date``, ``time``, ``tinyint`` and ``smallint`` :ref:`data types <data-types>` have been added.
-- :ref:`JSON support <cql-json>` has been added
-- Adds new time conversion functions and deprecate ``dateOf`` and ``unixTimestampOf``.
-
-3.2.0
-^^^^^
-
-- :ref:`User-defined types <udts>` supported.
-- ``CREATE INDEX`` now supports indexing collection columns, including indexing the keys of map collections through the
-  ``keys()`` function
-- Indexes on collections may be queried using the new ``CONTAINS`` and ``CONTAINS KEY`` operators
-- :ref:`Tuple types <tuples>` were added to hold fixed-length sets of typed positional fields.
-- ``DROP INDEX`` now supports optionally specifying a keyspace.
-
-3.1.7
-^^^^^
-
-- ``SELECT`` statements now support selecting multiple rows in a single partition using an ``IN`` clause on combinations
-  of clustering columns.
-- ``IF NOT EXISTS`` and ``IF EXISTS`` syntax is now supported by ``CREATE USER`` and ``DROP USER`` statements,
-  respectively.
-
-3.1.6
-^^^^^
-
-- A new ``uuid()`` method has been added.
-- Support for ``DELETE ... IF EXISTS`` syntax.
-
-3.1.5
-^^^^^
-
-- It is now possible to group clustering columns in a relation, see :ref:`WHERE <where-clause>` clauses.
-- Added support for :ref:`static columns <static-columns>`.
-
-3.1.4
-^^^^^
-
-- ``CREATE INDEX`` now allows specifying options when creating CUSTOM indexes.
-
-3.1.3
-^^^^^
-
-- Millisecond precision formats have been added to the :ref:`timestamp <timestamps>` parser.
-
-3.1.2
-^^^^^
-
-- ``NaN`` and ``Infinity`` has been added as valid float constants. They are now reserved keywords. In the unlikely case
-  you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.
-
-3.1.1
-^^^^^
-
-- ``SELECT`` statement now allows listing the partition keys (using the ``DISTINCT`` modifier). See `CASSANDRA-4536
-  <https://issues.apache.org/jira/browse/CASSANDRA-4536>`__.
-- The syntax ``c IN ?`` is now supported in ``WHERE`` clauses. In that case, the value expected for the bind variable
-  will be a list of whatever type ``c`` is.
-- It is now possible to use named bind variables (using ``:name`` instead of ``?``).
-
-3.1.0
-^^^^^
-
-- ``ALTER TABLE`` ``DROP`` option added.
-- ``SELECT`` statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.
-- ``CREATE`` statements for ``KEYSPACE``, ``TABLE`` and ``INDEX`` now supports an ``IF NOT EXISTS`` condition.
-  Similarly, ``DROP`` statements support a ``IF EXISTS`` condition.
-- ``INSERT`` statements optionally supports a ``IF NOT EXISTS`` condition and ``UPDATE`` supports ``IF`` conditions.
-
-3.0.5
-^^^^^
-
-- ``SELECT``, ``UPDATE``, and ``DELETE`` statements now allow empty ``IN`` relations (see `CASSANDRA-5626
-  <https://issues.apache.org/jira/browse/CASSANDRA-5626)>`__.
-
-3.0.4
-^^^^^
-
-- Updated the syntax for custom :ref:`secondary indexes <secondary-indexes>`.
-- Non-equal condition on the partition key are now never supported, even for ordering partitioner as this was not
-  correct (the order was **not** the one of the type of the partition key). Instead, the ``token`` method should always
-  be used for range queries on the partition key (see :ref:`WHERE clauses <where-clause>`).
-
-3.0.3
-^^^^^
-
-- Support for custom :ref:`secondary indexes <secondary-indexes>` has been added.
-
-3.0.2
-^^^^^
-
-- Type validation for the :ref:`constants <constants>` has been fixed. For instance, the implementation used to allow
-  ``'2'`` as a valid value for an ``int`` column (interpreting it has the equivalent of ``2``), or ``42`` as a valid
-  ``blob`` value (in which case ``42`` was interpreted as an hexadecimal representation of the blob). This is no longer
-  the case, type validation of constants is now more strict. See the :ref:`data types <data-types>` section for details
-  on which constant is allowed for which type.
-- The type validation fixed of the previous point has lead to the introduction of blobs constants to allow the input of
-  blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother
-  transition to blob constant), it is now deprecated and will be removed by a future version. If you were using strings
-  as blobs, you should thus update your client code ASAP to switch blob constants.
-- A number of functions to convert native types to blobs have also been introduced. Furthermore the token function is
-  now also allowed in select clauses. See the :ref:`section on functions <cql-functions>` for details.
-
-3.0.1
-^^^^^
-
-- Date strings (and timestamps) are no longer accepted as valid ``timeuuid`` values. Doing so was a bug in the sense
-  that date string are not valid ``timeuuid``, and it was thus resulting in `confusing behaviors
-  <https://issues.apache.org/jira/browse/CASSANDRA-4936>`__. However, the following new methods have been added to help
-  working with ``timeuuid``: ``now``, ``minTimeuuid``, ``maxTimeuuid`` ,
-  ``dateOf`` and ``unixTimestampOf``.
-- Float constants now support the exponent notation. In other words, ``4.2E10`` is now a valid floating point value.
-
-Versioning
-^^^^^^^^^^
-
-Versioning of the CQL language adheres to the `Semantic Versioning <http://semver.org>`__ guidelines. Versions take the
-form X.Y.Z where X, Y, and Z are integer values representing major, minor, and patch level respectively. There is no
-correlation between Cassandra release versions and the CQL language version.
-
-========= =============================================================================================================
- version   description
-========= =============================================================================================================
- Major     The major version *must* be bumped when backward incompatible changes are introduced. This should rarely
-           occur.
- Minor     Minor version increments occur when new, but backward compatible, functionality is introduced.
- Patch     The patch version is incremented when bugs are fixed.
-========= =============================================================================================================
diff --git a/src/doc/3.10/_sources/cql/ddl.txt b/src/doc/3.10/_sources/cql/ddl.txt
deleted file mode 100644
index 029c1cb..0000000
--- a/src/doc/3.10/_sources/cql/ddl.txt
+++ /dev/null
@@ -1,677 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _data-definition:
-
-Data Definition
----------------
-
-CQL stores data in *tables*, whose schema defines the layout of said data in the table, and those tables are grouped in
-*keyspaces*. A keyspace defines a number of options that applies to all the tables it contains, most prominently of
-which is the :ref:`replication strategy <replication-strategy>` used by the keyspace. It is generally encouraged to use
-one keyspace by *application*, and thus many cluster may define only one keyspace.
-
-This section describes the statements used to create, modify, and remove those keyspace and tables.
-
-Common definitions
-^^^^^^^^^^^^^^^^^^
-
-The names of the keyspaces and tables are defined by the following grammar:
-
-.. productionlist::
-   keyspace_name: `name`
-   table_name: [ `keyspace_name` '.' ] `name`
-   name: `unquoted_name` | `quoted_name`
-   unquoted_name: re('[a-zA-Z_0-9]{1, 48}')
-   quoted_name: '"' `unquoted_name` '"'
-
-Both keyspace and table name should be comprised of only alphanumeric characters, cannot be empty and are limited in
-size to 48 characters (that limit exists mostly to avoid filenames (which may include the keyspace and table name) to go
-over the limits of certain file systems). By default, keyspace and table names are case insensitive (``myTable`` is
-equivalent to ``mytable``) but case sensitivity can be forced by using double-quotes (``"myTable"`` is different from
-``mytable``).
-
-Further, a table is always part of a keyspace and a table name can be provided fully-qualified by the keyspace it is
-part of. If is is not fully-qualified, the table is assumed to be in the *current* keyspace (see :ref:`USE statement
-<use-statement>`).
-
-Further, the valid names for columns is simply defined as:
-
-.. productionlist::
-   column_name: `identifier`
-
-We also define the notion of statement options for use in the following section:
-
-.. productionlist::
-   options: `option` ( AND `option` )*
-   option: `identifier` '=' ( `identifier` | `constant` | `map_literal` )
-
-.. _create-keyspace-statement:
-
-CREATE KEYSPACE
-^^^^^^^^^^^^^^^
-
-A keyspace is created using a ``CREATE KEYSPACE`` statement:
-
-.. productionlist::
-   create_keyspace_statement: CREATE KEYSPACE [ IF NOT EXISTS ] `keyspace_name` WITH `options`
-
-For instance::
-
-    CREATE KEYSPACE Excelsior
-               WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
-
-    CREATE KEYSPACE Excalibur
-               WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 3}
-                AND durable_writes = false;
-
-
-The supported ``options`` are:
-
-=================== ========== =========== ========= ===================================================================
-name                 kind       mandatory   default   description
-=================== ========== =========== ========= ===================================================================
-``replication``      *map*      yes                   The replication strategy and options to use for the keyspace (see
-                                                      details below).
-``durable_writes``   *simple*   no          true      Whether to use the commit log for updates on this keyspace
-                                                      (disable this option at your own risk!).
-=================== ========== =========== ========= ===================================================================
-
-The ``replication`` property is mandatory and must at least contains the ``'class'`` sub-option which defines the
-:ref:`replication strategy <replication-strategy>` class to use. The rest of the sub-options depends on what replication
-strategy is used. By default, Cassandra support the following ``'class'``:
-
-- ``'SimpleStrategy'``: A simple strategy that defines a replication factor for the whole cluster. The only sub-options
-  supported is ``'replication_factor'`` to define that replication factor and is mandatory.
-- ``'NetworkTopologyStrategy'``: A replication strategy that allows to set the replication factor independently for
-  each data-center. The rest of the sub-options are key-value pairs where a key is a data-center name and its value is
-  the associated replication factor.
-
-Attempting to create a keyspace that already exists will return an error unless the ``IF NOT EXISTS`` option is used. If
-it is used, the statement will be a no-op if the keyspace already exists.
-
-.. _use-statement:
-
-USE
-^^^
-
-The ``USE`` statement allows to change the *current* keyspace (for the *connection* on which it is executed). A number
-of objects in CQL are bound to a keyspace (tables, user-defined types, functions, ...) and the current keyspace is the
-default keyspace used when those objects are referred without a fully-qualified name (that is, without being prefixed a
-keyspace name). A ``USE`` statement simply takes the keyspace to use as current as argument:
-
-.. productionlist::
-   use_statement: USE `keyspace_name`
-
-.. _alter-keyspace-statement:
-
-ALTER KEYSPACE
-^^^^^^^^^^^^^^
-
-An ``ALTER KEYSPACE`` statement allows to modify the options of a keyspace:
-
-.. productionlist::
-   alter_keyspace_statement: ALTER KEYSPACE `keyspace_name` WITH `options`
-
-For instance::
-
-    ALTER KEYSPACE Excelsior
-              WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4};
-
-The supported options are the same than for :ref:`creating a keyspace <create-keyspace-statement>`.
-
-.. _drop-keyspace-statement:
-
-DROP KEYSPACE
-^^^^^^^^^^^^^
-
-Dropping a keyspace can be done using the ``DROP KEYSPACE`` statement:
-
-.. productionlist::
-   drop_keyspace_statement: DROP KEYSPACE [ IF EXISTS ] `keyspace_name`
-
-For instance::
-
-    DROP KEYSPACE Excelsior;
-
-Dropping a keyspace results in the immediate, irreversible removal of that keyspace, including all the tables, UTD and
-functions in it, and all the data contained in those tables.
-
-If the keyspace does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case the
-operation is a no-op.
-
-.. _create-table-statement:
-
-CREATE TABLE
-^^^^^^^^^^^^
-
-Creating a new table uses the ``CREATE TABLE`` statement:
-
-.. productionlist::
-   create_table_statement: CREATE TABLE [ IF NOT EXISTS ] `table_name`
-                         : '('
-                         :     `column_definition`
-                         :     ( ',' `column_definition` )*
-                         :     [ ',' PRIMARY KEY '(' `primary_key` ')' ]
-                         : ')' [ WITH `table_options` ]
-   column_definition: `column_name` `cql_type` [ STATIC ] [ PRIMARY KEY]
-   primary_key: `partition_key` [ ',' `clustering_columns` ]
-   partition_key: `column_name`
-                : | '(' `column_name` ( ',' `column_name` )* ')'
-   clustering_columns: `column_name` ( ',' `column_name` )*
-   table_options: COMPACT STORAGE [ AND `table_options` ]
-                   : | CLUSTERING ORDER BY '(' `clustering_order` ')' [ AND `table_options` ]
-                   : | `options`
-   clustering_order: `column_name` (ASC | DESC) ( ',' `column_name` (ASC | DESC) )*
-
-For instance::
-
-    CREATE TABLE monkeySpecies (
-        species text PRIMARY KEY,
-        common_name text,
-        population varint,
-        average_size int
-    ) WITH comment='Important biological records'
-       AND read_repair_chance = 1.0;
-
-    CREATE TABLE timeline (
-        userid uuid,
-        posted_month int,
-        posted_time uuid,
-        body text,
-        posted_by text,
-        PRIMARY KEY (userid, posted_month, posted_time)
-    ) WITH compaction = { 'class' : 'LeveledCompactionStrategy' };
-
-    CREATE TABLE loads (
-        machine inet,
-        cpu int,
-        mtime timeuuid,
-        load float,
-        PRIMARY KEY ((machine, cpu), mtime)
-    ) WITH CLUSTERING ORDER BY (mtime DESC);
-
-A CQL table has a name and is composed of a set of *rows*. Creating a table amounts to defining which :ref:`columns
-<column-definition>` the rows will be composed, which of those columns compose the :ref:`primary key <primary-key>`, as
-well as optional :ref:`options <create-table-options>` for the table.
-
-Attempting to create an already existing table will return an error unless the ``IF NOT EXISTS`` directive is used. If
-it is used, the statement will be a no-op if the table already exists.
-
-
-.. _column-definition:
-
-Column definitions
-~~~~~~~~~~~~~~~~~~
-
-Every rows in a CQL table has a set of predefined columns defined at the time of the table creation (or added later
-using an :ref:`alter statement<alter-table-statement>`).
-
-A :token:`column_definition` is primarily comprised of the name of the column defined and it's :ref:`type <data-types>`,
-which restrict which values are accepted for that column. Additionally, a column definition can have the following
-modifiers:
-
-``STATIC``
-    it declares the column as being a :ref:`static column <static-columns>`.
-
-``PRIMARY KEY``
-    it declares the column as being the sole component of the :ref:`primary key <primary-key>` of the table.
-
-.. _static-columns:
-
-Static columns
-``````````````
-Some columns can be declared as ``STATIC`` in a table definition. A column that is static will be “shared” by all the
-rows belonging to the same partition (having the same :ref:`partition key <partition-key>`). For instance::
-
-    CREATE TABLE t (
-        pk int,
-        t int,
-        v text,
-        s text static,
-        PRIMARY KEY (pk, t)
-    );
-
-    INSERT INTO t (pk, t, v, s) VALUES (0, 0, 'val0', 'static0');
-    INSERT INTO t (pk, t, v, s) VALUES (0, 1, 'val1', 'static1');
-
-    SELECT * FROM t;
-       pk | t | v      | s
-      ----+---+--------+-----------
-       0  | 0 | 'val0' | 'static1'
-       0  | 1 | 'val1' | 'static1'
-
-As can be seen, the ``s`` value is the same (``static1``) for both of the row in the partition (the partition key in
-that example being ``pk``, both rows are in that same partition): the 2nd insertion has overridden the value for ``s``.
-
-The use of static columns as the following restrictions:
-
-- tables with the ``COMPACT STORAGE`` option (see below) cannot use them.
-- a table without clustering columns cannot have static columns (in a table without clustering columns, every partition
-  has only one row, and so every column is inherently static).
-- only non ``PRIMARY KEY`` columns can be static.
-
-.. _primary-key:
-
-The Primary key
-~~~~~~~~~~~~~~~
-
-Within a table, a row is uniquely identified by its ``PRIMARY KEY``, and hence all table **must** define a PRIMARY KEY
-(and only one). A ``PRIMARY KEY`` definition is composed of one or more of the columns defined in the table.
-Syntactically, the primary key is defined the keywords ``PRIMARY KEY`` followed by comma-separated list of the column
-names composing it within parenthesis, but if the primary key has only one column, one can alternatively follow that
-column definition by the ``PRIMARY KEY`` keywords. The order of the columns in the primary key definition matter.
-
-A CQL primary key is composed of 2 parts:
-
-- the :ref:`partition key <partition-key>` part. It is the first component of the primary key definition. It can be a
-  single column or, using additional parenthesis, can be multiple columns. A table always have at least a partition key,
-  the smallest possible table definition is::
-
-      CREATE TABLE t (k text PRIMARY KEY);
-
-- the :ref:`clustering columns <clustering-columns>`. Those are the columns after the first component of the primary key
-  definition, and the order of those columns define the *clustering order*.
-
-Some example of primary key definition are:
-
-- ``PRIMARY KEY (a)``: ``a`` is the partition key and there is no clustering columns.
-- ``PRIMARY KEY (a, b, c)`` : ``a`` is the partition key and ``b`` and ``c`` are the clustering columns.
-- ``PRIMARY KEY ((a, b), c)`` : ``a`` and ``b`` compose the partition key (this is often called a *composite* partition
-  key) and ``c`` is the clustering column.
-
-
-.. _partition-key:
-
-The partition key
-`````````````````
-
-Within a table, CQL defines the notion of a *partition*. A partition is simply the set of rows that share the same value
-for their partition key. Note that if the partition key is composed of multiple columns, then rows belong to the same
-partition only they have the same values for all those partition key column. So for instance, given the following table
-definition and content::
-
-    CREATE TABLE t (
-        a int,
-        b int,
-        c int,
-        d int,
-        PRIMARY KEY ((a, b), c, d)
-    );
-
-    SELECT * FROM t;
-       a | b | c | d
-      ---+---+---+---
-       0 | 0 | 0 | 0    // row 1
-       0 | 0 | 1 | 1    // row 2
-       0 | 1 | 2 | 2    // row 3
-       0 | 1 | 3 | 3    // row 4
-       1 | 1 | 4 | 4    // row 5
-
-``row 1`` and ``row 2`` are in the same partition, ``row 3`` and ``row 4`` are also in the same partition (but a
-different one) and ``row 5`` is in yet another partition.
-
-Note that a table always has a partition key, and that if the table has no :ref:`clustering columns
-<clustering-columns>`, then every partition of that table is only comprised of a single row (since the primary key
-uniquely identifies rows and the primary key is equal to the partition key if there is no clustering columns).
-
-The most important property of partition is that all the rows belonging to the same partition are guarantee to be stored
-on the same set of replica nodes. In other words, the partition key of a table defines which of the rows will be
-localized together in the Cluster, and it is thus important to choose your partition key wisely so that rows that needs
-to be fetch together are in the same partition (so that querying those rows together require contacting a minimum of
-nodes).
-
-Please note however that there is a flip-side to this guarantee: as all rows sharing a partition key are guaranteed to
-be stored on the same set of replica node, a partition key that groups too much data can create a hotspot.
-
-Another useful property of a partition is that when writing data, all the updates belonging to a single partition are
-done *atomically* and in *isolation*, which is not the case across partitions.
-
-The proper choice of the partition key and clustering columns for a table is probably one of the most important aspect
-of data modeling in Cassandra, and it largely impact which queries can be performed, and how efficiently they are.
-
-
-.. _clustering-columns:
-
-The clustering columns
-``````````````````````
-
-The clustering columns of a table defines the clustering order for the partition of that table. For a given
-:ref:`partition <partition-key>`, all the rows are physically ordered inside Cassandra by that clustering order. For
-instance, given::
-
-    CREATE TABLE t (
-        a int,
-        b int,
-        c int,
-        PRIMARY KEY (a, c, d)
-    );
-
-    SELECT * FROM t;
-       a | b | c
-      ---+---+---
-       0 | 0 | 4     // row 1
-       0 | 1 | 9     // row 2
-       0 | 2 | 2     // row 3
-       0 | 3 | 3     // row 4
-
-then the rows (which all belong to the same partition) are all stored internally in the order of the values of their
-``b`` column (the order they are displayed above). So where the partition key of the table allows to group rows on the
-same replica set, the clustering columns controls how those rows are stored on the replica. That sorting allows the
-retrieval of a range of rows within a partition (for instance, in the example above, ``SELECT * FROM t WHERE a = 0 AND b
-> 1 and b <= 3``) very efficient.
-
-
-.. _create-table-options:
-
-Table options
-~~~~~~~~~~~~~
-
-A CQL table has a number of options that can be set at creation (and, for most of them, :ref:`altered
-<alter-table-statement>` later). These options are specified after the ``WITH`` keyword.
-
-Amongst those options, two important ones cannot be changed after creation and influence which queries can be done
-against the table: the ``COMPACT STORAGE`` option and the ``CLUSTERING ORDER`` option. Those, as well as the other
-options of a table are described in the following sections.
-
-.. _compact-tables:
-
-Compact tables
-``````````````
-
-.. warning:: Since Cassandra 3.0, compact tables have the exact same layout internally than non compact ones (for the
-   same schema obviously), and declaring a table compact **only** creates artificial limitations on the table definition
-   and usage that are necessary to ensure backward compatibility with the deprecated Thrift API. And as ``COMPACT
-   STORAGE`` cannot, as of Cassandra |version|, be removed, it is strongly discouraged to create new table with the
-   ``COMPACT STORAGE`` option.
-
-A *compact* table is one defined with the ``COMPACT STORAGE`` option. This option is mainly targeted towards backward
-compatibility for definitions created before CQL version 3 (see `www.datastax.com/dev/blog/thrift-to-cql3
-<http://www.datastax.com/dev/blog/thrift-to-cql3>`__ for more details) and shouldn't be used for new tables. Declaring a
-table with this option creates limitations for the table which are largely arbitrary but necessary for backward
-compatibility with the (deprecated) Thrift API. Amongst those limitation:
-
-- a compact table cannot use collections nor static columns.
-- if a compact table has at least one clustering column, then it must have *exactly* one column outside of the primary
-  key ones. This imply you cannot add or remove columns after creation in particular.
-- a compact table is limited in the indexes it can create, and no materialized view can be created on it.
-
-.. _clustering-order:
-
-Reversing the clustering order
-``````````````````````````````
-
-The clustering order of a table is defined by the :ref:`clustering columns <clustering-columns>` of that table. By
-default, that ordering is based on natural order of those clustering order, but the ``CLUSTERING ORDER`` allows to
-change that clustering order to use the *reverse* natural order for some (potentially all) of the columns.
-
-The ``CLUSTERING ORDER`` option takes the comma-separated list of the clustering column, each with a ``ASC`` (for
-*ascendant*, e.g. the natural order) or ``DESC`` (for *descendant*, e.g. the reverse natural order). Note in particular
-that the default (if the ``CLUSTERING ORDER`` option is not used) is strictly equivalent to using the option with all
-clustering columns using the ``ASC`` modifier.
-
-Note that this option is basically a hint for the storage engine to change the order in which it stores the row but it
-has 3 visible consequences:
-
-# it limits which ``ORDER BY`` clause are allowed for :ref:`selects <select-statement>` on that table. You can only
-  order results by the clustering order or the reverse clustering order. Meaning that if a table has 2 clustering column
-  ``a`` and ``b`` and you defined ``WITH CLUSTERING ORDER (a DESC, b ASC)``, then in queries you will be allowed to use
-  ``ORDER BY (a DESC, b ASC)`` and (reverse clustering order) ``ORDER BY (a ASC, b DESC)`` but **not** ``ORDER BY (a
-  ASC, b ASC)`` (nor ``ORDER BY (a DESC, b DESC)``).
-# it also change the default order of results when queried (if no ``ORDER BY`` is provided). Results are always returned
-  in clustering order (within a partition).
-# it has a small performance impact on some queries as queries in reverse clustering order are slower than the one in
-  forward clustering order. In practice, this means that if you plan on querying mostly in the reverse natural order of
-  your columns (which is common with time series for instance where you often want data from the newest to the oldest),
-  it is an optimization to declare a descending clustering order.
-
-.. _create-table-general-options:
-
-Other table options
-```````````````````
-
-.. todo:: review (misses cdc if nothing else) and link to proper categories when appropriate (compaction for instance)
-
-A table supports the following options:
-
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| option                         | kind     | default     | description                                               |
-+================================+==========+=============+===========================================================+
-| ``comment``                    | *simple* | none        | A free-form, human-readable comment.                      |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``read_repair_chance``         | *simple* | 0.1         | The probability with which to query extra nodes (e.g.     |
-|                                |          |             | more nodes than required by the consistency level) for    |
-|                                |          |             | the purpose of read repairs.                              |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``dclocal_read_repair_chance`` | *simple* | 0           | The probability with which to query extra nodes (e.g.     |
-|                                |          |             | more nodes than required by the consistency level)        |
-|                                |          |             | belonging to the same data center than the read           |
-|                                |          |             | coordinator for the purpose of read repairs.              |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``gc_grace_seconds``           | *simple* | 864000      | Time to wait before garbage collecting tombstones         |
-|                                |          |             | (deletion markers).                                       |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``bloom_filter_fp_chance``     | *simple* | 0.00075     | The target probability of false positive of the sstable   |
-|                                |          |             | bloom filters. Said bloom filters will be sized to provide|
-|                                |          |             | the provided probability (thus lowering this value impact |
-|                                |          |             | the size of bloom filters in-memory and on-disk)          |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``default_time_to_live``       | *simple* | 0           | The default expiration time (“TTL”) in seconds for a      |
-|                                |          |             | table.                                                    |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``compaction``                 | *map*    | *see below* | :ref:`Compaction options <cql-compaction-options>`.       |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``compression``                | *map*    | *see below* | :ref:`Compression options <cql-compression-options>`.     |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-| ``caching``                    | *map*    | *see below* | :ref:`Caching options <cql-caching-options>`.             |
-+--------------------------------+----------+-------------+-----------------------------------------------------------+
-
-.. _cql-compaction-options:
-
-Compaction options
-##################
-
-The ``compaction`` options must at least define the ``'class'`` sub-option, that defines the compaction strategy class
-to use. The default supported class are ``'SizeTieredCompactionStrategy'`` (:ref:`STCS <STCS>`),
-``'LeveledCompactionStrategy'`` (:ref:`LCS <LCS>`) and ``'TimeWindowCompactionStrategy'`` (:ref:`TWCS <TWCS>`) (the
-``'DateTieredCompactionStrategy'`` is also supported but is deprecated and ``'TimeWindowCompactionStrategy'`` should be
-preferred instead). Custom strategy can be provided by specifying the full class name as a :ref:`string constant
-<constants>`.
-
-All default strategies support a number of :ref:`common options <compaction-options>`, as well as options specific to
-the strategy chosen (see the section corresponding to your strategy for details: :ref:`STCS <stcs-options>`, :ref:`LCS
-<lcs-options>` and :ref:`TWCS <TWCS>`).
-
-.. _cql-compression-options:
-
-Compression options
-###################
-
-The ``compression`` options define if and how the sstables of the table are compressed. The following sub-options are
-available:
-
-========================= =============== =============================================================================
- Option                    Default         Description
-========================= =============== =============================================================================
- ``class``                 LZ4Compressor   The compression algorithm to use. Default compressor are: LZ4Compressor,
-                                           SnappyCompressor and DeflateCompressor. Use ``'enabled' : false`` to disable
-                                           compression. Custom compressor can be provided by specifying the full class
-                                           name as a “string constant”:#constants.
- ``enabled``               true            Enable/disable sstable compression.
- ``chunk_length_in_kb``    64KB            On disk SSTables are compressed by block (to allow random reads). This
-                                           defines the size (in KB) of said block. Bigger values may improve the
-                                           compression rate, but increases the minimum size of data to be read from disk
-                                           for a read
- ``crc_check_chance``      1.0             When compression is enabled, each compressed block includes a checksum of
-                                           that block for the purpose of detecting disk bitrot and avoiding the
-                                           propagation of corruption to other replica. This option defines the
-                                           probability with which those checksums are checked during read. By default
-                                           they are always checked. Set to 0 to disable checksum checking and to 0.5 for
-                                           instance to check them every other read   |
-========================= =============== =============================================================================
-
-.. _cql-caching-options:
-
-Caching options
-###############
-
-The ``caching`` options allows to configure both the *key cache* and the *row cache* for the table. The following
-sub-options are available:
-
-======================== ========= ====================================================================================
- Option                   Default   Description
-======================== ========= ====================================================================================
- ``keys``                 ALL       Whether to cache keys (“key cache”) for this table. Valid values are: ``ALL`` and
-                                    ``NONE``.
- ``rows_per_partition``   NONE      The amount of rows to cache per partition (“row cache”). If an integer ``n`` is
-                                    specified, the first ``n`` queried rows of a partition will be cached. Other
-                                    possible options are ``ALL``, to cache all rows of a queried partition, or ``NONE``
-                                    to disable row caching.
-======================== ========= ====================================================================================
-
-Other considerations:
-#####################
-
-- Adding new columns (see ``ALTER TABLE`` below) is a constant time operation. There is thus no need to try to
-  anticipate future usage when creating a table.
-
-.. _alter-table-statement:
-
-ALTER TABLE
-^^^^^^^^^^^
-
-Altering an existing table uses the ``ALTER TABLE`` statement:
-
-.. productionlist::
-   alter_table_statement: ALTER TABLE `table_name` `alter_table_instruction`
-   alter_table_instruction: ALTER `column_name` TYPE `cql_type`
-                          : | ADD `column_name` `cql_type` ( ',' `column_name` `cql_type` )*
-                          : | DROP `column_name` ( `column_name` )*
-                          : | WITH `options`
-
-For instance::
-
-    ALTER TABLE addamsFamily ALTER lastKnownLocation TYPE uuid;
-
-    ALTER TABLE addamsFamily ADD gravesite varchar;
-
-    ALTER TABLE addamsFamily
-           WITH comment = 'A most excellent and useful table'
-           AND read_repair_chance = 0.2;
-
-The ``ALTER TABLE`` statement can:
-
-- Change the type of one of the column in the table (through the ``ALTER`` instruction). Note that the type of a column
-  cannot be changed arbitrarily. The change of type should be such that any value of the previous type should be a valid
-  value of the new type. Further, for :ref:`clustering columns <clustering-columns>` and columns on which a secondary
-  index is defined, the new type must sort values in the same way the previous type does. See the :ref:`type
-  compatibility table <alter-table-type-compatibility>` below for detail on which type changes are accepted.
-- Add new column(s) to the table (through the ``ADD`` instruction). Note that the primary key of a table cannot be
-  changed and thus newly added column will, by extension, never be part of the primary key. Also note that :ref:`compact
-  tables <compact-tables>` have restrictions regarding column addition. Note that this is constant (in the amount of
-  data the cluster contains) time operation.
-- Remove column(s) from the table. This drops both the column and all its content, but note that while the column
-  becomes immediately unavailable, its content is only removed lazily during compaction. Please also see the warnings
-  below. Due to lazy removal, the altering itself is a constant (in the amount of data removed or contained in the
-  cluster) time operation.
-- Change some of the table options (through the ``WITH`` instruction). The :ref:`supported options
-  <create-table-options>` are the same that when creating a table (outside of ``COMPACT STORAGE`` and ``CLUSTERING
-  ORDER`` that cannot be changed after creation). Note that setting any ``compaction`` sub-options has the effect of
-  erasing all previous ``compaction`` options, so you need to re-specify all the sub-options if you want to keep them.
-  The same note applies to the set of ``compression`` sub-options.
-
-.. warning:: Dropping a column assumes that the timestamps used for the value of this column are "real" timestamp in
-   microseconds. Using "real" timestamps in microseconds is the default is and is **strongly** recommended but as
-   Cassandra allows the client to provide any timestamp on any table it is theoretically possible to use another
-   convention. Please be aware that if you do so, dropping a column will not work correctly.
-
-.. warning:: Once a column is dropped, it is allowed to re-add a column with the same name than the dropped one
-   **unless** the type of the dropped column was a (non-frozen) column (due to an internal technical limitation).
-
-.. _alter-table-type-compatibility:
-
-CQL type compatibility:
-~~~~~~~~~~~~~~~~~~~~~~~
-
-CQL data types may be converted only as the following table.
-
-+-------------------------------------------------------+--------------------+
-| Existing type                                         | Can be altered to: |
-+=======================================================+====================+
-| timestamp                                             | bigint             |
-+-------------------------------------------------------+--------------------+
-| ascii, bigint, boolean, date, decimal, double, float, | blob               |
-| inet, int, smallint, text, time, timestamp, timeuuid, |                    |
-| tinyint, uuid, varchar, varint                        |                    |
-+-------------------------------------------------------+--------------------+
-| int                                                   | date               |
-+-------------------------------------------------------+--------------------+
-| ascii, varchar                                        | text               |
-+-------------------------------------------------------+--------------------+
-| bigint                                                | time               |
-+-------------------------------------------------------+--------------------+
-| bigint                                                | timestamp          |
-+-------------------------------------------------------+--------------------+
-| timeuuid                                              | uuid               |
-+-------------------------------------------------------+--------------------+
-| ascii, text                                           | varchar            |
-+-------------------------------------------------------+--------------------+
-| bigint, int, timestamp                                | varint             |
-+-------------------------------------------------------+--------------------+
-
-Clustering columns have stricter requirements, only the following conversions are allowed:
-
-+------------------------+----------------------+
-| Existing type          | Can be altered to    |
-+========================+======================+
-| ascii, text, varchar   | blob                 |
-+------------------------+----------------------+
-| ascii, varchar         | text                 |
-+------------------------+----------------------+
-| ascii, text            | varchar              |
-+------------------------+----------------------+
-
-.. _drop-table-statement:
-
-DROP TABLE
-^^^^^^^^^^
-
-Dropping a table uses the ``DROP TABLE`` statement:
-
-.. productionlist::
-   drop_table_statement: DROP TABLE [ IF EXISTS ] `table_name`
-
-Dropping a table results in the immediate, irreversible removal of the table, including all data it contains.
-
-If the table does not exist, the statement will return an error, unless ``IF EXISTS`` is used in which case the
-operation is a no-op.
-
-.. _truncate-statement:
-
-TRUNCATE
-^^^^^^^^
-
-A table can be truncated using the ``TRUNCATE`` statement:
-
-.. productionlist::
-   truncate_statement: TRUNCATE [ TABLE ] `table_name`
-
-Note that ``TRUNCATE TABLE foo`` is allowed for consistency with other DDL statements but tables are the only object
-that can be truncated currently and so the ``TABLE`` keyword can be omitted.
-
-Truncating a table permanently removes all existing data from the table, but without removing the table itself.
diff --git a/src/doc/3.10/_sources/cql/definitions.txt b/src/doc/3.10/_sources/cql/definitions.txt
deleted file mode 100644
index e54bcd7..0000000
--- a/src/doc/3.10/_sources/cql/definitions.txt
+++ /dev/null
@@ -1,232 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. _UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier
-
-.. highlight:: cql
-
-Definitions
------------
-
-.. _conventions:
-
-Conventions
-^^^^^^^^^^^
-
-To aid in specifying the CQL syntax, we will use the following conventions in this document:
-
-- Language rules will be given in an informal `BNF variant
-  <http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#Variants>`_ notation. In particular, we'll use square brakets
-  (``[ item ]``) for optional items, ``*`` and ``+`` for repeated items (where ``+`` imply at least one).
-- The grammar will also use the following convention for convenience: non-terminal term will be lowercase (and link to
-  their definition) while terminal keywords will be provided "all caps". Note however that keywords are
-  :ref:`identifiers` and are thus case insensitive in practice. We will also define some early construction using
-  regexp, which we'll indicate with ``re(<some regular expression>)``.
-- The grammar is provided for documentation purposes and leave some minor details out.  For instance, the comma on the
-  last column definition in a ``CREATE TABLE`` statement is optional but supported if present even though the grammar in
-  this document suggests otherwise. Also, not everything accepted by the grammar is necessarily valid CQL.
-- References to keywords or pieces of CQL code in running text will be shown in a ``fixed-width font``.
-
-
-.. _identifiers:
-
-Identifiers and keywords
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The CQL language uses *identifiers* (or *names*) to identify tables, columns and other objects. An identifier is a token
-matching the regular expression ``[a-zA-Z][a-zA-Z0-9_]*``.
-
-A number of such identifiers, like ``SELECT`` or ``WITH``, are *keywords*. They have a fixed meaning for the language
-and most are reserved. The list of those keywords can be found in :ref:`appendix-A`.
-
-Identifiers and (unquoted) keywords are case insensitive. Thus ``SELECT`` is the same than ``select`` or ``sElEcT``, and
-``myId`` is the same than ``myid`` or ``MYID``. A convention often used (in particular by the samples of this
-documentation) is to use upper case for keywords and lower case for other identifiers.
-
-There is a second kind of identifiers called *quoted identifiers* defined by enclosing an arbitrary sequence of
-characters (non empty) in double-quotes(``"``). Quoted identifiers are never keywords. Thus ``"select"`` is not a
-reserved keyword and can be used to refer to a column (note that using this is particularly advised), while ``select``
-would raise a parsing error. Also, contrarily to unquoted identifiers and keywords, quoted identifiers are case
-sensitive (``"My Quoted Id"`` is *different* from ``"my quoted id"``). A fully lowercase quoted identifier that matches
-``[a-zA-Z][a-zA-Z0-9_]*`` is however *equivalent* to the unquoted identifier obtained by removing the double-quote (so
-``"myid"`` is equivalent to ``myid`` and to ``myId`` but different from ``"myId"``).  Inside a quoted identifier, the
-double-quote character can be repeated to escape it, so ``"foo "" bar"`` is a valid identifier.
-
-.. note:: *quoted identifiers* allows to declare columns with arbitrary names, and those can sometime clash with
-   specific names used by the server. For instance, when using conditional update, the server will respond with a
-   result-set containing a special result named ``"[applied]"``. If you’ve declared a column with such a name, this
-   could potentially confuse some tools and should be avoided. In general, unquoted identifiers should be preferred but
-   if you use quoted identifiers, it is strongly advised to avoid any name enclosed by squared brackets (like
-   ``"[applied]"``) and any name that looks like a function call (like ``"f(x)"``).
-
-More formally, we have:
-
-.. productionlist::
-   identifier: `unquoted_identifier` | `quoted_identifier`
-   unquoted_identifier: re('[a-zA-Z][a-zA-Z0-9_]*')
-   quoted_identifier: '"' (any character where " can appear if doubled)+ '"'
-
-.. _constants:
-
-Constants
-^^^^^^^^^
-
-CQL defines the following kind of *constants*:
-
-.. productionlist::
-   constant: `string` | `integer` | `float` | `boolean` | `uuid` | `blob` | NULL
-   string: '\'' (any character where ' can appear if doubled)+ '\''
-         : '$$' (any character other than '$$') '$$'
-   integer: re('-?[0-9]+')
-   float: re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
-   boolean: TRUE | FALSE
-   uuid: `hex`{8}-`hex`{4}-`hex`{4}-`hex`{4}-`hex`{12}
-   hex: re("[0-9a-fA-F]")
-   blob: '0' ('x' | 'X') `hex`+
-
-In other words:
-
-- A string constant is an arbitrary sequence of characters enclosed by single-quote(``'``). A single-quote
-  can be included by repeating it, e.g. ``'It''s raining today'``. Those are not to be confused with quoted
-  :ref:`identifiers` that use double-quotes. Alternatively, a string can be defined by enclosing the arbitrary sequence
-  of characters by two dollar characters, in which case single-quote can be use without escaping (``$$It's raining
-  today$$``). That latter form is often used when defining :ref:`user-defined functions <udfs>` to avoid having to
-  escape single-quote characters in function body (as they are more likely to occur than ``$$``).
-- Integer, float and boolean constant are defined as expected. Note however than float allows the special ``NaN`` and
-  ``Infinity`` constants.
-- CQL supports UUID_ constants.
-- Blobs content are provided in hexadecimal and prefixed by ``0x``.
-- The special ``NULL`` constant denotes the absence of value.
-
-For how these constants are typed, see the :ref:`data-types` section.
-
-Terms
-^^^^^
-
-CQL has the notion of a *term*, which denotes the kind of values that CQL support. Terms are defined by:
-
-.. productionlist::
-   term: `constant` | `literal` | `function_call` | `type_hint` | `bind_marker`
-   literal: `collection_literal` | `udt_literal` | `tuple_literal`
-   function_call: `identifier` '(' [ `term` (',' `term`)* ] ')'
-   type_hint: '(' `cql_type` `)` term
-   bind_marker: '?' | ':' `identifier`
-
-A term is thus one of:
-
-- A :ref:`constant <constants>`.
-- A literal for either :ref:`a collection <collections>`, :ref:`a user-defined type <udts>` or :ref:`a tuple <tuples>`
-  (see the linked sections for details).
-- A function call: see :ref:`the section on functions <cql-functions>` for details on which :ref:`native function
-  <native-functions>` exists and how to define your own :ref:`user-defined ones <udfs>`.
-- A *type hint*: see the :ref:`related section <type-hints>` for details.
-- A bind marker, which denotes a variable to be bound at execution time. See the section on :ref:`prepared-statements`
-  for details. A bind marker can be either anonymous (``?``) or named (``:some_name``). The latter form provides a more
-  convenient way to refer to the variable for binding it and should generally be preferred.
-
-
-Comments
-^^^^^^^^
-
-A comment in CQL is a line beginning by either double dashes (``--``) or double slash (``//``).
-
-Multi-line comments are also supported through enclosure within ``/*`` and ``*/`` (but nesting is not supported).
-
-::
-
-    -- This is a comment
-    // This is a comment too
-    /* This is
-       a multi-line comment */
-
-Statements
-^^^^^^^^^^
-
-CQL consists of statements that can be divided in the following categories:
-
-- :ref:`data-definition` statements, to define and change how the data is stored (keyspaces and tables).
-- :ref:`data-manipulation` statements, for selecting, inserting and deleting data.
-- :ref:`secondary-indexes` statements.
-- :ref:`materialized-views` statements.
-- :ref:`cql-roles` statements.
-- :ref:`cql-permissions` statements.
-- :ref:`User-Defined Functions <udfs>` statements.
-- :ref:`udts` statements.
-- :ref:`cql-triggers` statements.
-
-All the statements are listed below and are described in the rest of this documentation (see links above):
-
-.. productionlist::
-   cql_statement: `statement` [ ';' ]
-   statement: `ddl_statement`
-            : | `dml_statement`
-            : | `secondary_index_statement`
-            : | `materialized_view_statement`
-            : | `role_or_permission_statement`
-            : | `udf_statement`
-            : | `udt_statement`
-            : | `trigger_statement`
-   ddl_statement: `use_statement`
-                : | `create_keyspace_statement`
-                : | `alter_keyspace_statement`
-                : | `drop_keyspace_statement`
-                : | `create_table_statement`
-                : | `alter_table_statement`
-                : | `drop_table_statement`
-                : | `truncate_statement`
-    dml_statement: `select_statement`
-                 : | `insert_statement`
-                 : | `update_statement`
-                 : | `delete_statement`
-                 : | `batch_statement`
-    secondary_index_statement: `create_index_statement`
-                             : | `drop_index_statement`
-    materialized_view_statement: `create_materialized_view_statement`
-                               : | `drop_materialized_view_statement`
-    role_or_permission_statement: `create_role_statement`
-                                : | `alter_role_statement`
-                                : | `drop_role_statement`
-                                : | `grant_role_statement`
-                                : | `revoke_role_statement`
-                                : | `list_roles_statement`
-                                : | `grant_permission_statement`
-                                : | `revoke_permission_statement`
-                                : | `list_permissions_statement`
-                                : | `create_user_statement`
-                                : | `alter_user_statement`
-                                : | `drop_user_statement`
-                                : | `list_users_statement`
-    udf_statement: `create_function_statement`
-                 : | `drop_function_statement`
-                 : | `create_aggregate_statement`
-                 : | `drop_aggregate_statement`
-    udt_statement: `create_type_statement`
-                 : | `alter_type_statement`
-                 : | `drop_type_statement`
-    trigger_statement: `create_trigger_statement`
-                     : | `drop_trigger_statement`
-
-.. _prepared-statements:
-
-Prepared Statements
-^^^^^^^^^^^^^^^^^^^
-
-CQL supports *prepared statements*. Prepared statements are an optimization that allows to parse a query only once but
-execute it multiple times with different concrete values.
-
-Any statement that uses at least one bind marker (see :token:`bind_marker`) will need to be *prepared*. After which the statement
-can be *executed* by provided concrete values for each of its marker. The exact details of how a statement is prepared
-and then executed depends on the CQL driver used and you should refer to your driver documentation.
diff --git a/src/doc/3.10/_sources/cql/dml.txt b/src/doc/3.10/_sources/cql/dml.txt
deleted file mode 100644
index 1b0f80b..0000000
--- a/src/doc/3.10/_sources/cql/dml.txt
+++ /dev/null
@@ -1,521 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _data-manipulation:
-
-Data Manipulation
------------------
-
-This section describes the statements supported by CQL to insert, update, delete and query data.
-
-.. _select-statement:
-
-SELECT
-^^^^^^
-
-Querying data from data is done using a ``SELECT`` statement:
-
-.. productionlist::
-   select_statement: SELECT [ JSON | DISTINCT ] ( `select_clause` | '*' )
-                   : FROM `table_name`
-                   : [ WHERE `where_clause` ]
-                   : [ GROUP BY `group_by_clause` ]
-                   : [ ORDER BY `ordering_clause` ]
-                   : [ PER PARTITION LIMIT (`integer` | `bind_marker`) ]
-                   : [ LIMIT (`integer` | `bind_marker`) ]
-                   : [ ALLOW FILTERING ]
-   select_clause: `selector` [ AS `identifier` ] ( ',' `selector` [ AS `identifier` ] )
-   selector: `column_name`
-           : | `term`
-           : | CAST '(' `selector` AS `cql_type` ')'
-           : | `function_name` '(' [ `selector` ( ',' `selector` )* ] ')'
-           : | COUNT '(' '*' ')'
-   where_clause: `relation` ( AND `relation` )*
-   relation: `column_name` `operator` `term`
-           : '(' `column_name` ( ',' `column_name` )* ')' `operator` `tuple_literal`
-           : TOKEN '(' `column_name` ( ',' `column_name` )* ')' `operator` `term`
-   operator: '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY
-   group_by_clause: `column_name` ( ',' `column_name` )*
-   ordering_clause: `column_name` [ ASC | DESC ] ( ',' `column_name` [ ASC | DESC ] )*
-
-For instance::
-
-    SELECT name, occupation FROM users WHERE userid IN (199, 200, 207);
-    SELECT JSON name, occupation FROM users WHERE userid = 199;
-    SELECT name AS user_name, occupation AS user_occupation FROM users;
-
-    SELECT time, value
-    FROM events
-    WHERE event_type = 'myEvent'
-      AND time > '2011-02-03'
-      AND time <= '2012-01-01'
-
-    SELECT COUNT (*) AS user_count FROM users;
-
-The ``SELECT`` statements reads one or more columns for one or more rows in a table. It returns a result-set of the rows
-matching the request, where each row contains the values for the selection corresponding to the query. Additionally,
-:ref:`functions <cql-functions>` including :ref:`aggregation <aggregate-functions>` ones can be applied to the result.
-
-A ``SELECT`` statement contains at least a :ref:`selection clause <selection-clause>` and the name of the table on which
-the selection is on (note that CQL does **not** joins or sub-queries and thus a select statement only apply to a single
-table). In most case, a select will also have a :ref:`where clause <where-clause>` and it can optionally have additional
-clauses to :ref:`order <ordering-clause>` or :ref:`limit <limit-clause>` the results. Lastly, :ref:`queries that require
-filtering <allow-filtering>` can be allowed if the ``ALLOW FILTERING`` flag is provided.
-
-.. _selection-clause:
-
-Selection clause
-~~~~~~~~~~~~~~~~
-
-The :token:`select_clause` determines which columns needs to be queried and returned in the result-set, as well as any
-transformation to apply to this result before returning. It consists of a comma-separated list of *selectors* or,
-alternatively, of the wildcard character (``*``) to select all the columns defined in the table.
-
-Selectors
-`````````
-
-A :token:`selector` can be one of:
-
-- A column name of the table selected, to retrieve the values for that column.
-- A term, which is usually used nested inside other selectors like functions (if a term is selected directly, then the
-  corresponding column of the result-set will simply have the value of this term for every row returned).
-- A casting, which allows to convert a nested selector to a (compatible) type.
-- A function call, where the arguments are selector themselves. See the section on :ref:`functions <cql-functions>` for
-  more details.
-- The special call ``COUNT(*)`` to the :ref:`COUNT function <count-function>`, which counts all non-null results.
-
-Aliases
-```````
-
-Every *top-level* selector can also be aliased (using `AS`). If so, the name of the corresponding column in the result
-set will be that of the alias. For instance::
-
-    // Without alias
-    SELECT intAsBlob(4) FROM t;
-
-    //  intAsBlob(4)
-    // --------------
-    //  0x00000004
-
-    // With alias
-    SELECT intAsBlob(4) AS four FROM t;
-
-    //  four
-    // ------------
-    //  0x00000004
-
-.. note:: Currently, aliases aren't recognized anywhere else in the statement where they are used (not in the ``WHERE``
-   clause, not in the ``ORDER BY`` clause, ...). You must use the orignal column name instead.
-
-
-``WRITETIME`` and ``TTL`` function
-```````````````````````````````````
-
-Selection supports two special functions (that aren't allowed anywhere else): ``WRITETIME`` and ``TTL``. Both function
-take only one argument and that argument *must* be a column name (so for instance ``TTL(3)`` is invalid).
-
-Those functions allow to retrieve meta-information that are stored internally for each column, namely:
-
-- the timestamp of the value of the column for ``WRITETIME``.
-- the remaining time to live (in seconds) for the value of the column if it set to expire (and ``null`` otherwise).
-
-.. _where-clause:
-
-The ``WHERE`` clause
-~~~~~~~~~~~~~~~~~~~~
-
-The ``WHERE`` clause specifies which rows must be queried. It is composed of relations on the columns that are part of
-the ``PRIMARY KEY`` and/or have a `secondary index <#createIndexStmt>`__ defined on them.
-
-Not all relations are allowed in a query. For instance, non-equal relations (where ``IN`` is considered as an equal
-relation) on a partition key are not supported (but see the use of the ``TOKEN`` method below to do non-equal queries on
-the partition key). Moreover, for a given partition key, the clustering columns induce an ordering of rows and relations
-on them is restricted to the relations that allow to select a **contiguous** (for the ordering) set of rows. For
-instance, given::
-
-    CREATE TABLE posts (
-        userid text,
-        blog_title text,
-        posted_at timestamp,
-        entry_title text,
-        content text,
-        category int,
-        PRIMARY KEY (userid, blog_title, posted_at)
-    )
-
-The following query is allowed::
-
-    SELECT entry_title, content FROM posts
-     WHERE userid = 'john doe'
-       AND blog_title='John''s Blog'
-       AND posted_at >= '2012-01-01' AND posted_at < '2012-01-31'
-
-But the following one is not, as it does not select a contiguous set of rows (and we suppose no secondary indexes are
-set)::
-
-    // Needs a blog_title to be set to select ranges of posted_at
-    SELECT entry_title, content FROM posts
-     WHERE userid = 'john doe'
-       AND posted_at >= '2012-01-01' AND posted_at < '2012-01-31'
-
-When specifying relations, the ``TOKEN`` function can be used on the ``PARTITION KEY`` column to query. In that case,
-rows will be selected based on the token of their ``PARTITION_KEY`` rather than on the value. Note that the token of a
-key depends on the partitioner in use, and that in particular the RandomPartitioner won't yield a meaningful order. Also
-note that ordering partitioners always order token values by bytes (so even if the partition key is of type int,
-``token(-1) > token(0)`` in particular). Example::
-
-    SELECT * FROM posts
-     WHERE token(userid) > token('tom') AND token(userid) < token('bob')
-
-Moreover, the ``IN`` relation is only allowed on the last column of the partition key and on the last column of the full
-primary key.
-
-It is also possible to “group” ``CLUSTERING COLUMNS`` together in a relation using the tuple notation. For instance::
-
-    SELECT * FROM posts
-     WHERE userid = 'john doe'
-       AND (blog_title, posted_at) > ('John''s Blog', '2012-01-01')
-
-will request all rows that sorts after the one having “John's Blog” as ``blog_tile`` and '2012-01-01' for ``posted_at``
-in the clustering order. In particular, rows having a ``post_at <= '2012-01-01'`` will be returned as long as their
-``blog_title > 'John''s Blog'``, which would not be the case for::
-
-    SELECT * FROM posts
-     WHERE userid = 'john doe'
-       AND blog_title > 'John''s Blog'
-       AND posted_at > '2012-01-01'
-
-The tuple notation may also be used for ``IN`` clauses on clustering columns::
-
-    SELECT * FROM posts
-     WHERE userid = 'john doe'
-       AND (blog_title, posted_at) IN (('John''s Blog', '2012-01-01'), ('Extreme Chess', '2014-06-01'))
-
-The ``CONTAINS`` operator may only be used on collection columns (lists, sets, and maps). In the case of maps,
-``CONTAINS`` applies to the map values. The ``CONTAINS KEY`` operator may only be used on map columns and applies to the
-map keys.
-
-.. _group-by-clause:
-
-Grouping results
-~~~~~~~~~~~~~~~~
-
-The ``GROUP BY`` option allows to condense into a single row all selected rows that share the same values for a set
-of columns.
-
-Using the ``GROUP BY`` option, it is only possible to group rows at the partition key level or at a clustering column
-level. By consequence, the ``GROUP BY`` option only accept as arguments primary key column names in the primary key
-order. If a primary key column is restricted by an equality restriction it is not required to be present in the
-``GROUP BY`` clause.
-
-Aggregate functions will produce a separate value for each group. If no ``GROUP BY`` clause is specified,
-aggregates functions will produce a single value for all the rows.
-
-If a column is selected without an aggregate function, in a statement with a ``GROUP BY``, the first value encounter
-in each group will be returned.
-
-.. _ordering-clause:
-
-Ordering results
-~~~~~~~~~~~~~~~~
-
-The ``ORDER BY`` clause allows to select the order of the returned results. It takes as argument a list of column names
-along with the order for the column (``ASC`` for ascendant and ``DESC`` for descendant, omitting the order being
-equivalent to ``ASC``). Currently the possible orderings are limited by the :ref:`clustering order <clustering-order>`
-defined on the table:
-
-- if the table has been defined without any specific ``CLUSTERING ORDER``, then then allowed orderings are the order
-  induced by the clustering columns and the reverse of that one.
-- otherwise, the orderings allowed are the order of the ``CLUSTERING ORDER`` option and the reversed one.
-
-.. _limit-clause:
-
-Limiting results
-~~~~~~~~~~~~~~~~
-
-The ``LIMIT`` option to a ``SELECT`` statement limits the number of rows returned by a query, while the ``PER PARTITION
-LIMIT`` option limits the number of rows returned for a given partition by the query. Note that both type of limit can
-used in the same statement.
-
-.. _allow-filtering:
-
-Allowing filtering
-~~~~~~~~~~~~~~~~~~
-
-By default, CQL only allows select queries that don't involve “filtering” server side, i.e. queries where we know that
-all (live) record read will be returned (maybe partly) in the result set. The reasoning is that those “non filtering”
-queries have predictable performance in the sense that they will execute in a time that is proportional to the amount of
-data **returned** by the query (which can be controlled through ``LIMIT``).
-
-The ``ALLOW FILTERING`` option allows to explicitly allow (some) queries that require filtering. Please note that a
-query using ``ALLOW FILTERING`` may thus have unpredictable performance (for the definition above), i.e. even a query
-that selects a handful of records **may** exhibit performance that depends on the total amount of data stored in the
-cluster.
-
-For instance, considering the following table holding user profiles with their year of birth (with a secondary index on
-it) and country of residence::
-
-    CREATE TABLE users (
-        username text PRIMARY KEY,
-        firstname text,
-        lastname text,
-        birth_year int,
-        country text
-    )
-
-    CREATE INDEX ON users(birth_year);
-
-Then the following queries are valid::
-
-    SELECT * FROM users;
-    SELECT * FROM users WHERE birth_year = 1981;
-
-because in both case, Cassandra guarantees that these queries performance will be proportional to the amount of data
-returned. In particular, if no users are born in 1981, then the second query performance will not depend of the number
-of user profile stored in the database (not directly at least: due to secondary index implementation consideration, this
-query may still depend on the number of node in the cluster, which indirectly depends on the amount of data stored.
-Nevertheless, the number of nodes will always be multiple number of magnitude lower than the number of user profile
-stored). Of course, both query may return very large result set in practice, but the amount of data returned can always
-be controlled by adding a ``LIMIT``.
-
-However, the following query will be rejected::
-
-    SELECT * FROM users WHERE birth_year = 1981 AND country = 'FR';
-
-because Cassandra cannot guarantee that it won't have to scan large amount of data even if the result to those query is
-small. Typically, it will scan all the index entries for users born in 1981 even if only a handful are actually from
-France. However, if you “know what you are doing”, you can force the execution of this query by using ``ALLOW
-FILTERING`` and so the following query is valid::
-
-    SELECT * FROM users WHERE birth_year = 1981 AND country = 'FR' ALLOW FILTERING;
-
-.. _insert-statement:
-
-INSERT
-^^^^^^
-
-Inserting data for a row is done using an ``INSERT`` statement:
-
-.. productionlist::
-   insert_statement: INSERT INTO `table_name` ( `names_values` | `json_clause` )
-                   : [ IF NOT EXISTS ]
-                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
-   names_values: `names` VALUES `tuple_literal`
-   json_clause: JSON `string` [ DEFAULT ( NULL | UNSET ) ]
-   names: '(' `column_name` ( ',' `column_name` )* ')'
-
-For instance::
-
-    INSERT INTO NerdMovies (movie, director, main_actor, year)
-                    VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005)
-          USING TTL 86400;
-
-    INSERT INTO NerdMovies JSON '{"movie": "Serenity",
-                                  "director": "Joss Whedon",
-                                  "year": 2005}';
-
-The ``INSERT`` statement writes one or more columns for a given row in a table. Note that since a row is identified by
-its ``PRIMARY KEY``, at least the columns composing it must be specified. The list of columns to insert to must be
-supplied when using the ``VALUES`` syntax. When using the ``JSON`` syntax, they are optional. See the
-section on :ref:`JSON support <cql-json>` for more detail.
-
-Note that unlike in SQL, ``INSERT`` does not check the prior existence of the row by default: the row is created if none
-existed before, and updated otherwise. Furthermore, there is no mean to know which of creation or update happened.
-
-It is however possible to use the ``IF NOT EXISTS`` condition to only insert if the row does not exist prior to the
-insertion. But please note that using ``IF NOT EXISTS`` will incur a non negligible performance cost (internally, Paxos
-will be used) so this should be used sparingly.
-
-All updates for an ``INSERT`` are applied atomically and in isolation.
-
-Please refer to the :ref:`UPDATE <update-parameters>` section for informations on the :token:`update_parameter`.
-
-Also note that ``INSERT`` does not support counters, while ``UPDATE`` does.
-
-.. _update-statement:
-
-UPDATE
-^^^^^^
-
-Updating a row is done using an ``UPDATE`` statement:
-
-.. productionlist::
-   update_statement: UPDATE `table_name`
-                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
-                   : SET `assignment` ( ',' `assignment` )*
-                   : WHERE `where_clause`
-                   : [ IF ( EXISTS | `condition` ( AND `condition` )*) ]
-   update_parameter: ( TIMESTAMP | TTL ) ( `integer` | `bind_marker` )
-   assignment: `simple_selection` '=' `term`
-             :| `column_name` '=' `column_name` ( '+' | '-' ) `term`
-             :| `column_name` '=' `list_literal` '+' `column_name`
-   simple_selection: `column_name`
-                   :| `column_name` '[' `term` ']'
-                   :| `column_name` '.' `field_name
-   condition: `simple_selection` `operator` `term`
-
-For instance::
-
-    UPDATE NerdMovies USING TTL 400
-       SET director   = 'Joss Whedon',
-           main_actor = 'Nathan Fillion',
-           year       = 2005
-     WHERE movie = 'Serenity';
-
-    UPDATE UserActions
-       SET total = total + 2
-       WHERE user = B70DE1D0-9908-4AE3-BE34-5573E5B09F14
-         AND action = 'click';
-
-The ``UPDATE`` statement writes one or more columns for a given row in a table. The :token:`where_clause` is used to
-select the row to update and must include all columns composing the ``PRIMARY KEY``. Non primary key columns are then
-set using the ``SET`` keyword.
-
-Note that unlike in SQL, ``UPDATE`` does not check the prior existence of the row by default (except through ``IF``, see
-below): the row is created if none existed before, and updated otherwise. Furthermore, there are no means to know
-whether a creation or update occurred.
-
-It is however possible to use the conditions on some columns through ``IF``, in which case the row will not be updated
-unless the conditions are met. But, please note that using ``IF`` conditions will incur a non-negligible performance
-cost (internally, Paxos will be used) so this should be used sparingly.
-
-In an ``UPDATE`` statement, all updates within the same partition key are applied atomically and in isolation.
-
-Regarding the :token:`assignment`:
-
-- ``c = c + 3`` is used to increment/decrement counters. The column name after the '=' sign **must** be the same than
-  the one before the '=' sign. Note that increment/decrement is only allowed on counters, and are the *only* update
-  operations allowed on counters. See the section on :ref:`counters <counters>` for details.
-- ``id = id + <some-collection>`` and ``id[value1] = value2`` are for collections, see the :ref:`relevant section
-  <collections>` for details.
-- ``id.field = 3`` is for setting the value of a field on a non-frozen user-defined types. see the :ref:`relevant section
-  <udts>` for details.
-
-.. _update-parameters:
-
-Update parameters
-~~~~~~~~~~~~~~~~~
-
-The ``UPDATE``, ``INSERT`` (and ``DELETE`` and ``BATCH`` for the ``TIMESTAMP``) statements support the following
-parameters:
-
-- ``TIMESTAMP``: sets the timestamp for the operation. If not specified, the coordinator will use the current time (in
-  microseconds) at the start of statement execution as the timestamp. This is usually a suitable default.
-- ``TTL``: specifies an optional Time To Live (in seconds) for the inserted values. If set, the inserted values are
-  automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
-  the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
-  is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
-  default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of ``null`` is equivalent
-  to inserting with a TTL of 0.
-
-.. _delete_statement:
-
-DELETE
-^^^^^^
-
-Deleting rows or parts of rows uses the ``DELETE`` statement:
-
-.. productionlist::
-   delete_statement: DELETE [ `simple_selection` ( ',' `simple_selection` ) ]
-                   : FROM `table_name`
-                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
-                   : WHERE `where_clause`
-                   : [ IF ( EXISTS | `condition` ( AND `condition` )*) ]
-
-For instance::
-
-    DELETE FROM NerdMovies USING TIMESTAMP 1240003134
-     WHERE movie = 'Serenity';
-
-    DELETE phone FROM Users
-     WHERE userid IN (C73DE1D3-AF08-40F3-B124-3FF3E5109F22, B70DE1D0-9908-4AE3-BE34-5573E5B09F14);
-
-The ``DELETE`` statement deletes columns and rows. If column names are provided directly after the ``DELETE`` keyword,
-only those columns are deleted from the row indicated by the ``WHERE`` clause. Otherwise, whole rows are removed.
-
-The ``WHERE`` clause specifies which rows are to be deleted. Multiple rows may be deleted with one statement by using an
-``IN`` operator. A range of rows may be deleted using an inequality operator (such as ``>=``).
-
-``DELETE`` supports the ``TIMESTAMP`` option with the same semantics as in :ref:`updates <update-parameters>`.
-
-In a ``DELETE`` statement, all deletions within the same partition key are applied atomically and in isolation.
-
-A ``DELETE`` operation can be conditional through the use of an ``IF`` clause, similar to ``UPDATE`` and ``INSERT``
-statements. However, as with ``INSERT`` and ``UPDATE`` statements, this will incur a non-negligible performance cost
-(internally, Paxos will be used) and so should be used sparingly.
-
-.. _batch_statement:
-
-BATCH
-^^^^^
-
-Multiple ``INSERT``, ``UPDATE`` and ``DELETE`` can be executed in a single statement by grouping them through a
-``BATCH`` statement:
-
-.. productionlist::
-   batch_statement: BEGIN [ UNLOGGED | COUNTER ] BATCH
-                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
-                   : `modification_statement` ( ';' `modification_statement` )*
-                   : APPLY BATCH
-   modification_statement: `insert_statement` | `update_statement` | `delete_statement`
-
-For instance::
-
-    BEGIN BATCH
-       INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user');
-       UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
-       INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
-       DELETE name FROM users WHERE userid = 'user1';
-    APPLY BATCH;
-
-The ``BATCH`` statement group multiple modification statements (insertions/updates and deletions) into a single
-statement. It serves several purposes:
-
-- It saves network round-trips between the client and the server (and sometimes between the server coordinator and the
-  replicas) when batching multiple updates.
-- All updates in a ``BATCH`` belonging to a given partition key are performed in isolation.
-- By default, all operations in the batch are performed as *logged*, to ensure all mutations eventually complete (or
-  none will). See the notes on :ref:`UNLOGGED batches <unlogged-batches>` for more details.
-
-Note that:
-
-- ``BATCH`` statements may only contain ``UPDATE``, ``INSERT`` and ``DELETE`` statements (not other batches for instance).
-- Batches are *not* a full analogue for SQL transactions.
-- If a timestamp is not specified for each operation, then all operations will be applied with the same timestamp
-  (either one generated automatically, or the timestamp provided at the batch level). Due to Cassandra's conflict
-  resolution procedure in the case of `timestamp ties <http://wiki.apache.org/cassandra/FAQ#clocktie>`__, operations may
-  be applied in an order that is different from the order they are listed in the ``BATCH`` statement. To force a
-  particular operation ordering, you must specify per-operation timestamps.
-
-.. _unlogged-batches:
-
-``UNLOGGED`` batches
-~~~~~~~~~~~~~~~~~~~~
-
-By default, Cassandra uses a batch log to ensure all operations in a batch eventually complete or none will (note
-however that operations are only isolated within a single partition).
-
-There is a performance penalty for batch atomicity when a batch spans multiple partitions. If you do not want to incur
-this penalty, you can tell Cassandra to skip the batchlog with the ``UNLOGGED`` option. If the ``UNLOGGED`` option is
-used, a failed batch might leave the patch only partly applied.
-
-``COUNTER`` batches
-~~~~~~~~~~~~~~~~~~~
-
-Use the ``COUNTER`` option for batched counter updates. Unlike other
-updates in Cassandra, counter updates are not idempotent.
diff --git a/src/doc/3.10/_sources/cql/functions.txt b/src/doc/3.10/_sources/cql/functions.txt
deleted file mode 100644
index 47026cd..0000000
--- a/src/doc/3.10/_sources/cql/functions.txt
+++ /dev/null
@@ -1,558 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _cql-functions:
-
-.. Need some intro for UDF and native functions in general and point those to it.
-.. _udfs:
-.. _native-functions:
-
-Functions
----------
-
-CQL supports 2 main categories of functions:
-
-- the :ref:`scalar functions <scalar-functions>`, which simply take a number of values and produce an output with it.
-- the :ref:`aggregate functions <aggregate-functions>`, which are used to aggregate multiple rows results from a
-  ``SELECT`` statement.
-
-In both cases, CQL provides a number of native "hard-coded" functions as well as the ability to create new user-defined
-functions.
-
-.. note:: By default, the use of user-defined functions is disabled by default for security concerns (even when
-   enabled, the execution of user-defined functions is sandboxed and a "rogue" function should not be allowed to do
-   evil, but no sandbox is perfect so using user-defined functions is opt-in). See the ``enable_user_defined_functions``
-   in ``cassandra.yaml`` to enable them.
-
-A function is identifier by its name:
-
-.. productionlist::
-   function_name: [ `keyspace_name` '.' ] `name`
-
-.. _scalar-functions:
-
-Scalar functions
-^^^^^^^^^^^^^^^^
-
-.. _scalar-native-functions:
-
-Native functions
-~~~~~~~~~~~~~~~~
-
-Cast
-````
-
-The ``cast`` function can be used to converts one native datatype to another.
-
-The following table describes the conversions supported by the ``cast`` function. Cassandra will silently ignore any
-cast converting a datatype into its own datatype.
-
-=============== =======================================================================================================
- From            To
-=============== =======================================================================================================
- ``ascii``       ``text``, ``varchar``
- ``bigint``      ``tinyint``, ``smallint``, ``int``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
-                 ``varchar``
- ``boolean``     ``text``, ``varchar``
- ``counter``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``,
-                 ``text``, ``varchar``
- ``date``        ``timestamp``
- ``decimal``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``varint``, ``text``,
-                 ``varchar``
- ``double``      ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``decimal``, ``varint``, ``text``,
-                 ``varchar``
- ``float``       ``tinyint``, ``smallint``, ``int``, ``bigint``, ``double``, ``decimal``, ``varint``, ``text``,
-                 ``varchar``
- ``inet``        ``text``, ``varchar``
- ``int``         ``tinyint``, ``smallint``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
-                 ``varchar``
- ``smallint``    ``tinyint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
-                 ``varchar``
- ``time``        ``text``, ``varchar``
- ``timestamp``   ``date``, ``text``, ``varchar``
- ``timeuuid``    ``timestamp``, ``date``, ``text``, ``varchar``
- ``tinyint``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``,
-                 ``text``, ``varchar``
- ``uuid``        ``text``, ``varchar``
- ``varint``      ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``text``,
-                 ``varchar``
-=============== =======================================================================================================
-
-The conversions rely strictly on Java's semantics. For example, the double value 1 will be converted to the text value
-'1.0'. For instance::
-
-    SELECT avg(cast(count as double)) FROM myTable
-
-Token
-`````
-
-The ``token`` function allows to compute the token for a given partition key. The exact signature of the token function
-depends on the table concerned and of the partitioner used by the cluster.
-
-The type of the arguments of the ``token`` depend on the type of the partition key columns. The return type depend on
-the partitioner in use:
-
-- For Murmur3Partitioner, the return type is ``bigint``.
-- For RandomPartitioner, the return type is ``varint``.
-- For ByteOrderedPartitioner, the return type is ``blob``.
-
-For instance, in a cluster using the default Murmur3Partitioner, if a table is defined by::
-
-    CREATE TABLE users (
-        userid text PRIMARY KEY,
-        username text,
-    )
-
-then the ``token`` function will take a single argument of type ``text`` (in that case, the partition key is ``userid``
-(there is no clustering columns so the partition key is the same than the primary key)), and the return type will be
-``bigint``.
-
-Uuid
-````
-The ``uuid`` function takes no parameters and generates a random type 4 uuid suitable for use in ``INSERT`` or
-``UPDATE`` statements.
-
-.. _timeuuid-functions:
-
-Timeuuid functions
-``````````````````
-
-``now``
-#######
-
-The ``now`` function takes no arguments and generates, on the coordinator node, a new unique timeuuid (at the time where
-the statement using it is executed). Note that this method is useful for insertion but is largely non-sensical in
-``WHERE`` clauses. For instance, a query of the form::
-
-    SELECT * FROM myTable WHERE t = now()
-
-will never return any result by design, since the value returned by ``now()`` is guaranteed to be unique.
-
-``minTimeuuid`` and ``maxTimeuuid``
-###################################
-
-The ``minTimeuuid`` (resp. ``maxTimeuuid``) function takes a ``timestamp`` value ``t`` (which can be `either a timestamp
-or a date string <timestamps>`) and return a *fake* ``timeuuid`` corresponding to the *smallest* (resp. *biggest*)
-possible ``timeuuid`` having for timestamp ``t``. So for instance::
-
-    SELECT * FROM myTable
-     WHERE t > maxTimeuuid('2013-01-01 00:05+0000')
-       AND t < minTimeuuid('2013-02-02 10:00+0000')
-
-will select all rows where the ``timeuuid`` column ``t`` is strictly older than ``'2013-01-01 00:05+0000'`` but strictly
-younger than ``'2013-02-02 10:00+0000'``. Please note that ``t >= maxTimeuuid('2013-01-01 00:05+0000')`` would still
-*not* select a ``timeuuid`` generated exactly at '2013-01-01 00:05+0000' and is essentially equivalent to ``t >
-maxTimeuuid('2013-01-01 00:05+0000')``.
-
-.. note:: We called the values generated by ``minTimeuuid`` and ``maxTimeuuid`` *fake* UUID because they do no respect
-   the Time-Based UUID generation process specified by the `RFC 4122 <http://www.ietf.org/rfc/rfc4122.txt>`__. In
-   particular, the value returned by these 2 methods will not be unique. This means you should only use those methods
-   for querying (as in the example above). Inserting the result of those methods is almost certainly *a bad idea*.
-
-Time conversion functions
-`````````````````````````
-
-A number of functions are provided to “convert” a ``timeuuid``, a ``timestamp`` or a ``date`` into another ``native``
-type.
-
-===================== =============== ===================================================================
- Function name         Input type      Description
-===================== =============== ===================================================================
- ``toDate``            ``timeuuid``    Converts the ``timeuuid`` argument into a ``date`` type
- ``toDate``            ``timestamp``   Converts the ``timestamp`` argument into a ``date`` type
- ``toTimestamp``       ``timeuuid``    Converts the ``timeuuid`` argument into a ``timestamp`` type
- ``toTimestamp``       ``date``        Converts the ``date`` argument into a ``timestamp`` type
- ``toUnixTimestamp``   ``timeuuid``    Converts the ``timeuuid`` argument into a ``bigInt`` raw value
- ``toUnixTimestamp``   ``timestamp``   Converts the ``timestamp`` argument into a ``bigInt`` raw value
- ``toUnixTimestamp``   ``date``        Converts the ``date`` argument into a ``bigInt`` raw value
- ``dateOf``            ``timeuuid``    Similar to ``toTimestamp(timeuuid)`` (DEPRECATED)
- ``unixTimestampOf``   ``timeuuid``    Similar to ``toUnixTimestamp(timeuuid)`` (DEPRECATED)
-===================== =============== ===================================================================
-
-Blob conversion functions
-`````````````````````````
-A number of functions are provided to “convert” the native types into binary data (``blob``). For every
-``<native-type>`` ``type`` supported by CQL (a notable exceptions is ``blob``, for obvious reasons), the function
-``typeAsBlob`` takes a argument of type ``type`` and return it as a ``blob``. Conversely, the function ``blobAsType``
-takes a 64-bit ``blob`` argument and convert it to a ``bigint`` value. And so for instance, ``bigintAsBlob(3)`` is
-``0x0000000000000003`` and ``blobAsBigint(0x0000000000000003)`` is ``3``.
-
-.. _user-defined-scalar-functions:
-
-User-defined functions
-~~~~~~~~~~~~~~~~~~~~~~
-
-User-defined functions allow execution of user-provided code in Cassandra. By default, Cassandra supports defining
-functions in *Java* and *JavaScript*. Support for other JSR 223 compliant scripting languages (such as Python, Ruby, and
-Scala) can be added by adding a JAR to the classpath.
-
-UDFs are part of the Cassandra schema. As such, they are automatically propagated to all nodes in the cluster.
-
-UDFs can be *overloaded* - i.e. multiple UDFs with different argument types but the same function name. Example::
-
-    CREATE FUNCTION sample ( arg int ) ...;
-    CREATE FUNCTION sample ( arg text ) ...;
-
-User-defined functions are susceptible to all of the normal problems with the chosen programming language. Accordingly,
-implementations should be safe against null pointer exceptions, illegal arguments, or any other potential source of
-exceptions. An exception during function execution will result in the entire statement failing.
-
-It is valid to use *complex* types like collections, tuple types and user-defined types as argument and return types.
-Tuple types and user-defined types are handled by the conversion functions of the DataStax Java Driver. Please see the
-documentation of the Java Driver for details on handling tuple types and user-defined types.
-
-Arguments for functions can be literals or terms. Prepared statement placeholders can be used, too.
-
-Note that you can use the double-quoted string syntax to enclose the UDF source code. For example::
-
-    CREATE FUNCTION some_function ( arg int )
-        RETURNS NULL ON NULL INPUT
-        RETURNS int
-        LANGUAGE java
-        AS $$ return arg; $$;
-
-    SELECT some_function(column) FROM atable ...;
-    UPDATE atable SET col = some_function(?) ...;
-
-    CREATE TYPE custom_type (txt text, i int);
-    CREATE FUNCTION fct_using_udt ( udtarg frozen )
-        RETURNS NULL ON NULL INPUT
-        RETURNS text
-        LANGUAGE java
-        AS $$ return udtarg.getString("txt"); $$;
-
-User-defined functions can be used in ``SELECT``, ``INSERT`` and ``UPDATE`` statements.
-
-The implicitly available ``udfContext`` field (or binding for script UDFs) provides the necessary functionality to
-create new UDT and tuple values::
-
-    CREATE TYPE custom_type (txt text, i int);
-    CREATE FUNCTION fct\_using\_udt ( somearg int )
-        RETURNS NULL ON NULL INPUT
-        RETURNS custom_type
-        LANGUAGE java
-        AS $$
-            UDTValue udt = udfContext.newReturnUDTValue();
-            udt.setString("txt", "some string");
-            udt.setInt("i", 42);
-            return udt;
-        $$;
-
-The definition of the ``UDFContext`` interface can be found in the Apache Cassandra source code for
-``org.apache.cassandra.cql3.functions.UDFContext``.
-
-.. code-block:: java
-
-    public interface UDFContext
-    {
-        UDTValue newArgUDTValue(String argName);
-        UDTValue newArgUDTValue(int argNum);
-        UDTValue newReturnUDTValue();
-        UDTValue newUDTValue(String udtName);
-        TupleValue newArgTupleValue(String argName);
-        TupleValue newArgTupleValue(int argNum);
-        TupleValue newReturnTupleValue();
-        TupleValue newTupleValue(String cqlDefinition);
-    }
-
-Java UDFs already have some imports for common interfaces and classes defined. These imports are:
-
-.. code-block:: java
-
-    import java.nio.ByteBuffer;
-    import java.util.List;
-    import java.util.Map;
-    import java.util.Set;
-    import org.apache.cassandra.cql3.functions.UDFContext;
-    import com.datastax.driver.core.TypeCodec;
-    import com.datastax.driver.core.TupleValue;
-    import com.datastax.driver.core.UDTValue;
-
-Please note, that these convenience imports are not available for script UDFs.
-
-.. _create-function-statement:
-
-CREATE FUNCTION
-```````````````
-
-Creating a new user-defined function uses the ``CREATE FUNCTION`` statement:
-
-.. productionlist::
-   create_function_statement: CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS]
-                            :     `function_name` '(' `arguments_declaration` ')'
-                            :     [ CALLED | RETURNS NULL ] ON NULL INPUT
-                            :     RETURNS `cql_type`
-                            :     LANGUAGE `identifier`
-                            :     AS `string`
-   arguments_declaration: `identifier` `cql_type` ( ',' `identifier` `cql_type` )*
-
-For instance::
-
-    CREATE OR REPLACE FUNCTION somefunction(somearg int, anotherarg text, complexarg frozen<someUDT>, listarg list)
-        RETURNS NULL ON NULL INPUT
-        RETURNS text
-        LANGUAGE java
-        AS $$
-            // some Java code
-        $$;
-
-    CREATE FUNCTION IF NOT EXISTS akeyspace.fname(someArg int)
-        CALLED ON NULL INPUT
-        RETURNS text
-        LANGUAGE java
-        AS $$
-            // some Java code
-        $$;
-
-``CREATE FUNCTION`` with the optional ``OR REPLACE`` keywords either creates a function or replaces an existing one with
-the same signature. A ``CREATE FUNCTION`` without ``OR REPLACE`` fails if a function with the same signature already
-exists.
-
-If the optional ``IF NOT EXISTS`` keywords are used, the function will
-only be created if another function with the same signature does not
-exist.
-
-``OR REPLACE`` and ``IF NOT EXISTS`` cannot be used together.
-
-Behavior on invocation with ``null`` values must be defined for each
-function. There are two options:
-
-#. ``RETURNS NULL ON NULL INPUT`` declares that the function will always
-   return ``null`` if any of the input arguments is ``null``.
-#. ``CALLED ON NULL INPUT`` declares that the function will always be
-   executed.
-
-Function Signature
-##################
-
-Signatures are used to distinguish individual functions. The signature consists of:
-
-#. The fully qualified function name - i.e *keyspace* plus *function-name*
-#. The concatenated list of all argument types
-
-Note that keyspace names, function names and argument types are subject to the default naming conventions and
-case-sensitivity rules.
-
-Functions belong to a keyspace. If no keyspace is specified in ``<function-name>``, the current keyspace is used (i.e.
-the keyspace specified using the ``USE`` statement). It is not possible to create a user-defined function in one of the
-system keyspaces.
-
-.. _drop-function-statement:
-
-DROP FUNCTION
-`````````````
-
-Dropping a function uses the ``DROP FUNCTION`` statement:
-
-.. productionlist::
-   drop_function_statement: DROP FUNCTION [ IF EXISTS ] `function_name` [ '(' `arguments_signature` ')' ]
-   arguments_signature: `cql_type` ( ',' `cql_type` )*
-
-For instance::
-
-    DROP FUNCTION myfunction;
-    DROP FUNCTION mykeyspace.afunction;
-    DROP FUNCTION afunction ( int );
-    DROP FUNCTION afunction ( text );
-
-You must specify the argument types (:token:`arguments_signature`) of the function to drop if there are multiple
-functions with the same name but a different signature (overloaded functions).
-
-``DROP FUNCTION`` with the optional ``IF EXISTS`` keywords drops a function if it exists, but does not throw an error if
-it doesn't
-
-.. _aggregate-functions:
-
-Aggregate functions
-^^^^^^^^^^^^^^^^^^^
-
-Aggregate functions work on a set of rows. They receive values for each row and returns one value for the whole set.
-
-If ``normal`` columns, ``scalar functions``, ``UDT`` fields, ``writetime`` or ``ttl`` are selected together with
-aggregate functions, the values returned for them will be the ones of the first row matching the query.
-
-Native aggregates
-~~~~~~~~~~~~~~~~~
-
-.. _count-function:
-
-Count
-`````
-
-The ``count`` function can be used to count the rows returned by a query. Example::
-
-    SELECT COUNT (*) FROM plays;
-    SELECT COUNT (1) FROM plays;
-
-It also can be used to count the non null value of a given column::
-
-    SELECT COUNT (scores) FROM plays;
-
-Max and Min
-```````````
-
-The ``max`` and ``min`` functions can be used to compute the maximum and the minimum value returned by a query for a
-given column. For instance::
-
-    SELECT MIN (players), MAX (players) FROM plays WHERE game = 'quake';
-
-Sum
-```
-
-The ``sum`` function can be used to sum up all the values returned by a query for a given column. For instance::
-
-    SELECT SUM (players) FROM plays;
-
-Avg
-```
-
-The ``avg`` function can be used to compute the average of all the values returned by a query for a given column. For
-instance::
-
-    SELECT AVG (players) FROM plays;
-
-.. _user-defined-aggregates-functions:
-
-User-Defined Aggregates
-~~~~~~~~~~~~~~~~~~~~~~~
-
-User-defined aggregates allow the creation of custom aggregate functions. Common examples of aggregate functions are
-*count*, *min*, and *max*.
-
-Each aggregate requires an *initial state* (``INITCOND``, which defaults to ``null``) of type ``STYPE``. The first
-argument of the state function must have type ``STYPE``. The remaining arguments of the state function must match the
-types of the user-defined aggregate arguments. The state function is called once for each row, and the value returned by
-the state function becomes the new state. After all rows are processed, the optional ``FINALFUNC`` is executed with last
-state value as its argument.
-
-``STYPE`` is mandatory in order to be able to distinguish possibly overloaded versions of the state and/or final
-function (since the overload can appear after creation of the aggregate).
-
-User-defined aggregates can be used in ``SELECT`` statement.
-
-A complete working example for user-defined aggregates (assuming that a keyspace has been selected using the ``USE``
-statement)::
-
-    CREATE OR REPLACE FUNCTION averageState(state tuple<int,bigint>, val int)
-        CALLED ON NULL INPUT
-        RETURNS tuple
-        LANGUAGE java
-        AS $$
-            if (val != null) {
-                state.setInt(0, state.getInt(0)+1);
-                state.setLong(1, state.getLong(1)+val.intValue());
-            }
-            return state;
-        $$;
-
-    CREATE OR REPLACE FUNCTION averageFinal (state tuple<int,bigint>)
-        CALLED ON NULL INPUT
-        RETURNS double
-        LANGUAGE java
-        AS $$
-            double r = 0;
-            if (state.getInt(0) == 0) return null;
-            r = state.getLong(1);
-            r /= state.getInt(0);
-            return Double.valueOf(r);
-        $$;
-
-    CREATE OR REPLACE AGGREGATE average(int)
-        SFUNC averageState
-        STYPE tuple
-        FINALFUNC averageFinal
-        INITCOND (0, 0);
-
-    CREATE TABLE atable (
-        pk int PRIMARY KEY,
-        val int
-    );
-
-    INSERT INTO atable (pk, val) VALUES (1,1);
-    INSERT INTO atable (pk, val) VALUES (2,2);
-    INSERT INTO atable (pk, val) VALUES (3,3);
-    INSERT INTO atable (pk, val) VALUES (4,4);
-
-    SELECT average(val) FROM atable;
-
-.. _create-aggregate-statement:
-
-CREATE AGGREGATE
-````````````````
-
-Creating (or replacing) a user-defined aggregate function uses the ``CREATE AGGREGATE`` statement:
-
-.. productionlist::
-   create_aggregate_statement: CREATE [ OR REPLACE ] AGGREGATE [ IF NOT EXISTS ]
-                             :     `function_name` '(' `arguments_signature` ')'
-                             :     SFUNC `function_name`
-                             :     STYPE `cql_type`
-                             :     [ FINALFUNC `function_name` ]
-                             :     [ INITCOND `term` ]
-
-See above for a complete example.
-
-``CREATE AGGREGATE`` with the optional ``OR REPLACE`` keywords either creates an aggregate or replaces an existing one
-with the same signature. A ``CREATE AGGREGATE`` without ``OR REPLACE`` fails if an aggregate with the same signature
-already exists.
-
-``CREATE AGGREGATE`` with the optional ``IF NOT EXISTS`` keywords either creates an aggregate if it does not already
-exist.
-
-``OR REPLACE`` and ``IF NOT EXISTS`` cannot be used together.
-
-``STYPE`` defines the type of the state value and must be specified.
-
-The optional ``INITCOND`` defines the initial state value for the aggregate. It defaults to ``null``. A non-\ ``null``
-``INITCOND`` must be specified for state functions that are declared with ``RETURNS NULL ON NULL INPUT``.
-
-``SFUNC`` references an existing function to be used as the state modifying function. The type of first argument of the
-state function must match ``STYPE``. The remaining argument types of the state function must match the argument types of
-the aggregate function. State is not updated for state functions declared with ``RETURNS NULL ON NULL INPUT`` and called
-with ``null``.
-
-The optional ``FINALFUNC`` is called just before the aggregate result is returned. It must take only one argument with
-type ``STYPE``. The return type of the ``FINALFUNC`` may be a different type. A final function declared with ``RETURNS
-NULL ON NULL INPUT`` means that the aggregate's return value will be ``null``, if the last state is ``null``.
-
-If no ``FINALFUNC`` is defined, the overall return type of the aggregate function is ``STYPE``. If a ``FINALFUNC`` is
-defined, it is the return type of that function.
-
-.. _drop-aggregate-statement:
-
-DROP AGGREGATE
-``````````````
-
-Dropping an user-defined aggregate function uses the ``DROP AGGREGATE`` statement:
-
-.. productionlist::
-   drop_aggregate_statement: DROP AGGREGATE [ IF EXISTS ] `function_name` [ '(' `arguments_signature` ')' ]
-
-For instance::
-
-    DROP AGGREGATE myAggregate;
-    DROP AGGREGATE myKeyspace.anAggregate;
-    DROP AGGREGATE someAggregate ( int );
-    DROP AGGREGATE someAggregate ( text );
-
-The ``DROP AGGREGATE`` statement removes an aggregate created using ``CREATE AGGREGATE``. You must specify the argument
-types of the aggregate to drop if there are multiple aggregates with the same name but a different signature (overloaded
-aggregates).
-
-``DROP AGGREGATE`` with the optional ``IF EXISTS`` keywords drops an aggregate if it exists, and does nothing if a
-function with the signature does not exist.
diff --git a/src/doc/3.10/_sources/cql/index.txt b/src/doc/3.10/_sources/cql/index.txt
deleted file mode 100644
index 00d90e4..0000000
--- a/src/doc/3.10/_sources/cql/index.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. _cql:
-
-The Cassandra Query Language (CQL)
-==================================
-
-This document describes the Cassandra Query Language (CQL) [#]_. Note that this document describes the last version of
-the languages. However, the `changes <#changes>`_ section provides the diff between the different versions of CQL.
-
-CQL offers a model close to SQL in the sense that data is put in *tables* containing *rows* of *columns*. For
-that reason, when used in this document, these terms (tables, rows and columns) have the same definition than they have
-in SQL. But please note that as such, they do **not** refer to the concept of rows and columns found in the deprecated
-thrift API (and earlier version 1 and 2 of CQL).
-
-.. toctree::
-   :maxdepth: 2
-
-   definitions
-   types
-   ddl
-   dml
-   indexes
-   mvs
-   security
-   functions
-   json
-   triggers
-   appendices
-   changes
-
-.. [#] Technically, this document CQL version 3, which is not backward compatible with CQL version 1 and 2 (which have
-   been deprecated and remove) and differs from it in numerous ways.
diff --git a/src/doc/3.10/_sources/cql/indexes.txt b/src/doc/3.10/_sources/cql/indexes.txt
deleted file mode 100644
index 81fe429..0000000
--- a/src/doc/3.10/_sources/cql/indexes.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _secondary-indexes:
-
-Secondary Indexes
------------------
-
-CQL supports creating secondary indexes on tables, allowing queries on the table to use those indexes. A secondary index
-is identified by a name defined by:
-
-.. productionlist::
-   index_name: re('[a-zA-Z_0-9]+')
-
-
-
-.. _create-index-statement:
-
-CREATE INDEX
-^^^^^^^^^^^^
-
-Creating a secondary index on a table uses the ``CREATE INDEX`` statement:
-
-.. productionlist::
-   create_index_statement: CREATE [ CUSTOM ] INDEX [ IF NOT EXISTS ] [ `index_name` ]
-                         :     ON `table_name` '(' `index_identifier` ')'
-                         :     [ USING `string` [ WITH OPTIONS = `map_literal` ] ]
-   index_identifier: `column_name`
-                   :| ( KEYS | VALUES | ENTRIES | FULL ) '(' `column_name` ')'
-
-For instance::
-
-    CREATE INDEX userIndex ON NerdMovies (user);
-    CREATE INDEX ON Mutants (abilityId);
-    CREATE INDEX ON users (keys(favs));
-    CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass';
-    CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass' WITH OPTIONS = {'storage': '/mnt/ssd/indexes/'};
-
-The ``CREATE INDEX`` statement is used to create a new (automatic) secondary index for a given (existing) column in a
-given table. A name for the index itself can be specified before the ``ON`` keyword, if desired. If data already exists
-for the column, it will be indexed asynchronously. After the index is created, new data for the column is indexed
-automatically at insertion time.
-
-Attempting to create an already existing index will return an error unless the ``IF NOT EXISTS`` option is used. If it
-is used, the statement will be a no-op if the index already exists.
-
-Indexes on Map Keys
-~~~~~~~~~~~~~~~~~~~
-
-When creating an index on a :ref:`maps <maps>`, you may index either the keys or the values. If the column identifier is
-placed within the ``keys()`` function, the index will be on the map keys, allowing you to use ``CONTAINS KEY`` in
-``WHERE`` clauses. Otherwise, the index will be on the map values.
-
-.. _drop-index-statement:
-
-DROP INDEX
-^^^^^^^^^^
-
-Dropping a secondary index uses the ``DROP INDEX`` statement:
-
-.. productionlist::
-   drop_index_statement: DROP INDEX [ IF EXISTS ] `index_name`
-
-The ``DROP INDEX`` statement is used to drop an existing secondary index. The argument of the statement is the index
-name, which may optionally specify the keyspace of the index.
-
-If the index does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case the
-operation is a no-op.
diff --git a/src/doc/3.10/_sources/cql/json.txt b/src/doc/3.10/_sources/cql/json.txt
deleted file mode 100644
index 539180a..0000000
--- a/src/doc/3.10/_sources/cql/json.txt
+++ /dev/null
@@ -1,115 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _cql-json:
-
-JSON Support
-------------
-
-Cassandra 2.2 introduces JSON support to :ref:`SELECT <select-statement>` and :ref:`INSERT <insert-statement>`
-statements. This support does not fundamentally alter the CQL API (for example, the schema is still enforced), it simply
-provides a convenient way to work with JSON documents.
-
-SELECT JSON
-^^^^^^^^^^^
-
-With ``SELECT`` statements, the ``JSON`` keyword can be used to return each row as a single ``JSON`` encoded map. The
-remainder of the ``SELECT`` statement behavior is the same.
-
-The result map keys are the same as the column names in a normal result set. For example, a statement like ``SELECT JSON
-a, ttl(b) FROM ...`` would result in a map with keys ``"a"`` and ``"ttl(b)"``. However, this is one notable exception:
-for symmetry with ``INSERT JSON`` behavior, case-sensitive column names with upper-case letters will be surrounded with
-double quotes. For example, ``SELECT JSON myColumn FROM ...`` would result in a map key ``"\"myColumn\""`` (note the
-escaped quotes).
-
-The map values will ``JSON``-encoded representations (as described below) of the result set values.
-
-INSERT JSON
-^^^^^^^^^^^
-
-With ``INSERT`` statements, the new ``JSON`` keyword can be used to enable inserting a ``JSON`` encoded map as a single
-row. The format of the ``JSON`` map should generally match that returned by a ``SELECT JSON`` statement on the same
-table. In particular, case-sensitive column names should be surrounded with double quotes. For example, to insert into a
-table with two columns named "myKey" and "value", you would do the following::
-
-    INSERT INTO mytable JSON '{ "\"myKey\"": 0, "value": 0}'
-
-By default (or if ``DEFAULT NULL`` is explicitly used), a column omitted from the ``JSON`` map will be set to ``NULL``,
-meaning that any pre-existing value for that column will be removed (resulting in a tombstone being created).
-Alternatively, if the ``DEFAULT UNSET`` directive is used after the value, omitted column values will be left unset,
-meaning that pre-existing values for those column will be preserved.
-
-
-JSON Encoding of Cassandra Data Types
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Where possible, Cassandra will represent and accept data types in their native ``JSON`` representation. Cassandra will
-also accept string representations matching the CQL literal format for all single-field types. For example, floats,
-ints, UUIDs, and dates can be represented by CQL literal strings. However, compound types, such as collections, tuples,
-and user-defined types must be represented by native ``JSON`` collections (maps and lists) or a JSON-encoded string
-representation of the collection.
-
-The following table describes the encodings that Cassandra will accept in ``INSERT JSON`` values (and ``fromJson()``
-arguments) as well as the format Cassandra will use when returning data for ``SELECT JSON`` statements (and
-``fromJson()``):
-
-=============== ======================== =============== ==============================================================
- Type            Formats accepted         Return format   Notes
-=============== ======================== =============== ==============================================================
- ``ascii``       string                   string          Uses JSON's ``\u`` character escape
- ``bigint``      integer, string          integer         String must be valid 64 bit integer
- ``blob``        string                   string          String should be 0x followed by an even number of hex digits
- ``boolean``     boolean, string          boolean         String must be "true" or "false"
- ``date``        string                   string          Date in format ``YYYY-MM-DD``, timezone UTC
- ``decimal``     integer, float, string   float           May exceed 32 or 64-bit IEEE-754 floating point precision in
-                                                          client-side decoder
- ``double``      integer, float, string   float           String must be valid integer or float
- ``float``       integer, float, string   float           String must be valid integer or float
- ``inet``        string                   string          IPv4 or IPv6 address
- ``int``         integer, string          integer         String must be valid 32 bit integer
- ``list``        list, string             list            Uses JSON's native list representation
- ``map``         map, string              map             Uses JSON's native map representation
- ``smallint``    integer, string          integer         String must be valid 16 bit integer
- ``set``         list, string             list            Uses JSON's native list representation
- ``text``        string                   string          Uses JSON's ``\u`` character escape
- ``time``        string                   string          Time of day in format ``HH-MM-SS[.fffffffff]``
- ``timestamp``   integer, string          string          A timestamp. Strings constant allows to input :ref:`timestamps
-                                                          as dates <timestamps>`. Datestamps with format ``YYYY-MM-DD
-                                                          HH:MM:SS.SSS`` are returned.
- ``timeuuid``    string                   string          Type 1 UUID. See :token:`constant` for the UUID format
- ``tinyint``     integer, string          integer         String must be valid 8 bit integer
- ``tuple``       list, string             list            Uses JSON's native list representation
- ``UDT``         map, string              map             Uses JSON's native map representation with field names as keys
- ``uuid``        string                   string          See :token:`constant` for the UUID format
- ``varchar``     string                   string          Uses JSON's ``\u`` character escape
- ``varint``      integer, string          integer         Variable length; may overflow 32 or 64 bit integers in
-                                                          client-side decoder
-=============== ======================== =============== ==============================================================
-
-The fromJson() Function
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The ``fromJson()`` function may be used similarly to ``INSERT JSON``, but for a single column value. It may only be used
-in the ``VALUES`` clause of an ``INSERT`` statement or as one of the column values in an ``UPDATE``, ``DELETE``, or
-``SELECT`` statement. For example, it cannot be used in the selection clause of a ``SELECT`` statement.
-
-The toJson() Function
-^^^^^^^^^^^^^^^^^^^^^
-
-The ``toJson()`` function may be used similarly to ``SELECT JSON``, but for a single column value. It may only be used
-in the selection clause of a ``SELECT`` statement.
diff --git a/src/doc/3.10/_sources/cql/mvs.txt b/src/doc/3.10/_sources/cql/mvs.txt
deleted file mode 100644
index aabea10..0000000
--- a/src/doc/3.10/_sources/cql/mvs.txt
+++ /dev/null
@@ -1,166 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _materialized-views:
-
-Materialized Views
-------------------
-
-Materialized views names are defined by:
-
-.. productionlist::
-   view_name: re('[a-zA-Z_0-9]+')
-
-
-.. _create-materialized-view-statement:
-
-CREATE MATERIALIZED VIEW
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can create a materialized view on a table using a ``CREATE MATERIALIZED VIEW`` statement:
-
-.. productionlist::
-   create_materialized_view_statement: CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] `view_name` AS
-                                     :     `select_statement`
-                                     :     PRIMARY KEY '(' `primary_key` ')'
-                                     :     WITH `table_options`
-
-For instance::
-
-    CREATE MATERIALIZED VIEW monkeySpecies_by_population AS
-        SELECT * FROM monkeySpecies
-        WHERE population IS NOT NULL AND species IS NOT NULL
-        PRIMARY KEY (population, species)
-        WITH comment='Allow query by population instead of species';
-
-The ``CREATE MATERIALIZED VIEW`` statement creates a new materialized view. Each such view is a set of *rows* which
-corresponds to rows which are present in the underlying, or base, table specified in the ``SELECT`` statement. A
-materialized view cannot be directly updated, but updates to the base table will cause corresponding updates in the
-view.
-
-Creating a materialized view has 3 main parts:
-
-- The :ref:`select statement <mv-select>` that restrict the data included in the view.
-- The :ref:`primary key <mv-primary-key>` definition for the view.
-- The :ref:`options <mv-options>` for the view.
-
-Attempting to create an already existing materialized view will return an error unless the ``IF NOT EXISTS`` option is
-used. If it is used, the statement will be a no-op if the materialized view already exists.
-
-.. _mv-select:
-
-MV select statement
-```````````````````
-
-The select statement of a materialized view creation defines which of the base table is included in the view. That
-statement is limited in a number of ways:
-
-- the :ref:`selection <selection-clause>` is limited to those that only select columns of the base table. In other
-  words, you can't use any function (aggregate or not), casting, term, etc. Aliases are also not supported. You can
-  however use `*` as a shortcut of selecting all columns. Further, :ref:`static columns <static-columns>` cannot be
-  included in a materialized view (which means ``SELECT *`` isn't allowed if the base table has static columns).
-- the ``WHERE`` clause have the following restrictions:
-
-  - it cannot include any :token:`bind_marker`.
-  - the columns that are not part of the *base table* primary key can only be restricted by an ``IS NOT NULL``
-    restriction. No other restriction is allowed.
-  - as the columns that are part of the *view* primary key cannot be null, they must always be at least restricted by a
-    ``IS NOT NULL`` restriction (or any other restriction, but they must have one).
-
-- it cannot have neither an :ref:`ordering clause <ordering-clause>`, nor a :ref:`limit <limit-clause>`, nor :ref:`ALLOW
-  FILTERING <allow-filtering>`.
-
-.. _mv-primary-key:
-
-MV primary key
-``````````````
-
-A view must have a primary key and that primary key must conform to the following restrictions:
-
-- it must contain all the primary key columns of the base table. This ensures that every row of the view correspond to
-  exactly one row of the base table.
-- it can only contain a single column that is not a primary key column in the base table.
-
-So for instance, give the following base table definition::
-
-    CREATE TABLE t (
-        k int,
-        c1 int,
-        c2 int,
-        v1 int,
-        v2 int,
-        PRIMARY KEY (k, c1, c2)
-    )
-
-then the following view definitions are allowed::
-
-    CREATE MATERIALIZED VIEW mv1 AS
-        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL
-        PRIMARY KEY (c1, k, c2)
-
-    CREATE MATERIALIZED VIEW mv1 AS
-        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL
-        PRIMARY KEY (v1, k, c1, c2)
-
-but the following ones are **not** allowed::
-
-    // Error: cannot include both v1 and v2 in the primary key as both are not in the base table primary key
-    CREATE MATERIALIZED VIEW mv1 AS
-        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL AND v1 IS NOT NULL
-        PRIMARY KEY (v1, v2, k, c1, c2)
-
-    // Error: must include k in the primary as it's a base table primary key column
-    CREATE MATERIALIZED VIEW mv1 AS
-        SELECT * FROM t WHERE c1 IS NOT NULL AND c2 IS NOT NULL
-        PRIMARY KEY (c1, c2)
-
-
-.. _mv-options:
-
-MV options
-``````````
-
-A materialized view is internally implemented by a table and as such, creating a MV allows the :ref:`same options than
-creating a table <create-table-options>`.
-
-
-.. _alter-materialized-view-statement:
-
-ALTER MATERIALIZED VIEW
-^^^^^^^^^^^^^^^^^^^^^^^
-
-After creation, you can alter the options of a materialized view using the ``ALTER MATERIALIZED VIEW`` statement:
-
-.. productionlist::
-   alter_materialized_view_statement: ALTER MATERIALIZED VIEW `view_name` WITH `table_options`
-
-The options that can be updated are the same than at creation time and thus the :ref:`same than for tables
-<create-table-options>`.
-
-.. _drop-materialized-view-statement:
-
-DROP MATERIALIZED VIEW
-^^^^^^^^^^^^^^^^^^^^^^
-
-Dropping a materialized view users the ``DROP MATERIALIZED VIEW`` statement:
-
-.. productionlist::
-   drop_materialized_view_statement: DROP MATERIALIZED VIEW [ IF EXISTS ] `view_name`;
-
-If the materialized view does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case
-the operation is a no-op.
diff --git a/src/doc/3.10/_sources/cql/security.txt b/src/doc/3.10/_sources/cql/security.txt
deleted file mode 100644
index 9efe27f..0000000
--- a/src/doc/3.10/_sources/cql/security.txt
+++ /dev/null
@@ -1,502 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _cql-security:
-
-Security
---------
-
-.. _cql-roles:
-
-Database Roles
-^^^^^^^^^^^^^^
-
-CQL uses database roles to represent users and group of users. Syntactically, a role is defined by:
-
-.. productionlist::
-   role_name: `identifier` | `string`
-
-.. _create-role-statement:
-
-CREATE ROLE
-~~~~~~~~~~~
-
-Creating a role uses the ``CREATE ROLE`` statement:
-
-.. productionlist::
-   create_role_statement: CREATE ROLE [ IF NOT EXISTS ] `role_name`
-                        :     [ WITH `role_options` ]
-   role_options: `role_option` ( AND `role_option` )*
-   role_option: PASSWORD '=' `string`
-              :| LOGIN '=' `boolean`
-              :| SUPERUSER '=' `boolean`
-              :| OPTIONS '=' `map_literal`
-
-For instance::
-
-    CREATE ROLE new_role;
-    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true;
-    CREATE ROLE bob WITH PASSWORD = 'password_b' AND LOGIN = true AND SUPERUSER = true;
-    CREATE ROLE carlos WITH OPTIONS = { 'custom_option1' : 'option1_value', 'custom_option2' : 99 };
-
-By default roles do not possess ``LOGIN`` privileges or ``SUPERUSER`` status.
-
-:ref:`Permissions <cql-permissions>` on database resources are granted to roles; types of resources include keyspaces,
-tables, functions and roles themselves. Roles may be granted to other roles to create hierarchical permissions
-structures; in these hierarchies, permissions and ``SUPERUSER`` status are inherited, but the ``LOGIN`` privilege is
-not.
-
-If a role has the ``LOGIN`` privilege, clients may identify as that role when connecting. For the duration of that
-connection, the client will acquire any roles and privileges granted to that role.
-
-Only a client with with the ``CREATE`` permission on the database roles resource may issue ``CREATE ROLE`` requests (see
-the :ref:`relevant section <cql-permissions>` below), unless the client is a ``SUPERUSER``. Role management in Cassandra
-is pluggable and custom implementations may support only a subset of the listed options.
-
-Role names should be quoted if they contain non-alphanumeric characters.
-
-.. _setting-credentials-for-internal-authentication:
-
-Setting credentials for internal authentication
-```````````````````````````````````````````````
-
-Use the ``WITH PASSWORD`` clause to set a password for internal authentication, enclosing the password in single
-quotation marks.
-
-If internal authentication has not been set up or the role does not have ``LOGIN`` privileges, the ``WITH PASSWORD``
-clause is not necessary.
-
-Creating a role conditionally
-`````````````````````````````
-
-Attempting to create an existing role results in an invalid query condition unless the ``IF NOT EXISTS`` option is used.
-If the option is used and the role exists, the statement is a no-op::
-
-    CREATE ROLE other_role;
-    CREATE ROLE IF NOT EXISTS other_role;
-
-
-.. _alter-role-statement:
-
-ALTER ROLE
-~~~~~~~~~~
-
-Altering a role options uses the ``ALTER ROLE`` statement:
-
-.. productionlist::
-   alter_role_statement: ALTER ROLE `role_name` WITH `role_options`
-
-For instance::
-
-    ALTER ROLE bob WITH PASSWORD = 'PASSWORD_B' AND SUPERUSER = false;
-
-Conditions on executing ``ALTER ROLE`` statements:
-
--  A client must have ``SUPERUSER`` status to alter the ``SUPERUSER`` status of another role
--  A client cannot alter the ``SUPERUSER`` status of any role it currently holds
--  A client can only modify certain properties of the role with which it identified at login (e.g. ``PASSWORD``)
--  To modify properties of a role, the client must be granted ``ALTER`` :ref:`permission <cql-permissions>` on that role
-
-.. _drop-role-statement:
-
-DROP ROLE
-~~~~~~~~~
-
-Dropping a role uses the ``DROP ROLE`` statement:
-
-.. productionlist::
-   drop_role_statement: DROP ROLE [ IF EXISTS ] `role_name`
-
-``DROP ROLE`` requires the client to have ``DROP`` :ref:`permission <cql-permissions>` on the role in question. In
-addition, client may not ``DROP`` the role with which it identified at login. Finally, only a client with ``SUPERUSER``
-status may ``DROP`` another ``SUPERUSER`` role.
-
-Attempting to drop a role which does not exist results in an invalid query condition unless the ``IF EXISTS`` option is
-used. If the option is used and the role does not exist the statement is a no-op.
-
-.. _grant-role-statement:
-
-GRANT ROLE
-~~~~~~~~~~
-
-Granting a role to another uses the ``GRANT ROLE`` statement:
-
-.. productionlist::
-   grant_role_statement: GRANT `role_name` TO `role_name`
-
-For instance::
-
-    GRANT report_writer TO alice;
-
-This statement grants the ``report_writer`` role to ``alice``. Any permissions granted to ``report_writer`` are also
-acquired by ``alice``.
-
-Roles are modelled as a directed acyclic graph, so circular grants are not permitted. The following examples result in
-error conditions::
-
-    GRANT role_a TO role_b;
-    GRANT role_b TO role_a;
-
-    GRANT role_a TO role_b;
-    GRANT role_b TO role_c;
-    GRANT role_c TO role_a;
-
-.. _revoke-role-statement:
-
-REVOKE ROLE
-~~~~~~~~~~~
-
-Revoking a role uses the ``REVOKE ROLE`` statement:
-
-.. productionlist::
-   revoke_role_statement: REVOKE `role_name` FROM `role_name`
-
-For instance::
-
-    REVOKE report_writer FROM alice;
-
-This statement revokes the ``report_writer`` role from ``alice``. Any permissions that ``alice`` has acquired via the
-``report_writer`` role are also revoked.
-
-.. _list-roles-statement:
-
-LIST ROLES
-~~~~~~~~~~
-
-All the known roles (in the system or granted to specific role) can be listed using the ``LIST ROLES`` statement:
-
-.. productionlist::
-   list_roles_statement: LIST ROLES [ OF `role_name` ] [ NORECURSIVE ]
-
-For instance::
-
-    LIST ROLES;
-
-returns all known roles in the system, this requires ``DESCRIBE`` permission on the database roles resource. And::
-
-    LIST ROLES OF alice;
-
-enumerates all roles granted to ``alice``, including those transitively acquired. But::
-
-    LIST ROLES OF bob NORECURSIVE
-
-lists all roles directly granted to ``bob`` without including any of the transitively acquired ones.
-
-Users
-^^^^^
-
-Prior to the introduction of roles in Cassandra 2.2, authentication and authorization were based around the concept of a
-``USER``. For backward compatibility, the legacy syntax has been preserved with ``USER`` centric statements becoming
-synonyms for the ``ROLE`` based equivalents. In other words, creating/updating a user is just a different syntax for
-creating/updating a role.
-
-.. _create-user-statement:
-
-CREATE USER
-~~~~~~~~~~~
-
-Creating a user uses the ``CREATE USER`` statement:
-
-.. productionlist::
-   create_user_statement: CREATE USER [ IF NOT EXISTS ] `role_name` [ WITH PASSWORD `string` ] [ `user_option` ]
-   user_option: SUPERUSER | NOSUPERUSER
-
-For instance::
-
-    CREATE USER alice WITH PASSWORD 'password_a' SUPERUSER;
-    CREATE USER bob WITH PASSWORD 'password_b' NOSUPERUSER;
-
-``CREATE USER`` is equivalent to ``CREATE ROLE`` where the ``LOGIN`` option is ``true``. So, the following pairs of
-statements are equivalent::
-
-    CREATE USER alice WITH PASSWORD 'password_a' SUPERUSER;
-    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = true;
-
-    CREATE USER IF EXISTS alice WITH PASSWORD 'password_a' SUPERUSER;
-    CREATE ROLE IF EXISTS alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = true;
-
-    CREATE USER alice WITH PASSWORD 'password_a' NOSUPERUSER;
-    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = false;
-
-    CREATE USER alice WITH PASSWORD 'password_a' NOSUPERUSER;
-    CREATE ROLE alice WITH PASSWORD = 'password_a' WITH LOGIN = true;
-
-    CREATE USER alice WITH PASSWORD 'password_a';
-    CREATE ROLE alice WITH PASSWORD = 'password_a' WITH LOGIN = true;
-
-.. _alter-user-statement:
-
-ALTER USER
-~~~~~~~~~~
-
-Altering the options of a user uses the ``ALTER USER`` statement:
-
-.. productionlist::
-   alter_user_statement: ALTER USER `role_name` [ WITH PASSWORD `string` ] [ `user_option` ]
-
-For instance::
-
-    ALTER USER alice WITH PASSWORD 'PASSWORD_A';
-    ALTER USER bob SUPERUSER;
-
-.. _drop-user-statement:
-
-DROP USER
-~~~~~~~~~
-
-Dropping a user uses the ``DROP USER`` statement:
-
-.. productionlist::
-   drop_user_statement: DROP USER [ IF EXISTS ] `role_name`
-
-.. _list-users-statement:
-
-LIST USERS
-~~~~~~~~~~
-
-Existing users can be listed using the ``LIST USERS`` statement:
-
-.. productionlist::
-   list_users_statement: LIST USERS
-
-Note that this statement is equivalent to::
-
-    LIST ROLES;
-
-but only roles with the ``LOGIN`` privilege are included in the output.
-
-Data Control
-^^^^^^^^^^^^
-
-.. _cql-permissions:
-
-Permissions
-~~~~~~~~~~~
-
-Permissions on resources are granted to roles; there are several different types of resources in Cassandra and each type
-is modelled hierarchically:
-
-- The hierarchy of Data resources, Keyspaces and Tables has the structure ``ALL KEYSPACES`` -> ``KEYSPACE`` ->
-  ``TABLE``.
-- Function resources have the structure ``ALL FUNCTIONS`` -> ``KEYSPACE`` -> ``FUNCTION``
-- Resources representing roles have the structure ``ALL ROLES`` -> ``ROLE``
-- Resources representing JMX ObjectNames, which map to sets of MBeans/MXBeans, have the structure ``ALL MBEANS`` ->
-  ``MBEAN``
-
-Permissions can be granted at any level of these hierarchies and they flow downwards. So granting a permission on a
-resource higher up the chain automatically grants that same permission on all resources lower down. For example,
-granting ``SELECT`` on a ``KEYSPACE`` automatically grants it on all ``TABLES`` in that ``KEYSPACE``. Likewise, granting
-a permission on ``ALL FUNCTIONS`` grants it on every defined function, regardless of which keyspace it is scoped in. It
-is also possible to grant permissions on all functions scoped to a particular keyspace.
-
-Modifications to permissions are visible to existing client sessions; that is, connections need not be re-established
-following permissions changes.
-
-The full set of available permissions is:
-
-- ``CREATE``
-- ``ALTER``
-- ``DROP``
-- ``SELECT``
-- ``MODIFY``
-- ``AUTHORIZE``
-- ``DESCRIBE``
-- ``EXECUTE``
-
-Not all permissions are applicable to every type of resource. For instance, ``EXECUTE`` is only relevant in the context
-of functions or mbeans; granting ``EXECUTE`` on a resource representing a table is nonsensical. Attempting to ``GRANT``
-a permission on resource to which it cannot be applied results in an error response. The following illustrates which
-permissions can be granted on which types of resource, and which statements are enabled by that permission.
-
-=============== =============================== =======================================================================
- Permission      Resource                        Operations
-=============== =============================== =======================================================================
- ``CREATE``      ``ALL KEYSPACES``               ``CREATE KEYSPACE`` and ``CREATE TABLE`` in any keyspace
- ``CREATE``      ``KEYSPACE``                    ``CREATE TABLE`` in specified keyspace
- ``CREATE``      ``ALL FUNCTIONS``               ``CREATE FUNCTION`` in any keyspace and ``CREATE AGGREGATE`` in any
-                                                 keyspace
- ``CREATE``      ``ALL FUNCTIONS IN KEYSPACE``   ``CREATE FUNCTION`` and ``CREATE AGGREGATE`` in specified keyspace
- ``CREATE``      ``ALL ROLES``                   ``CREATE ROLE``
- ``ALTER``       ``ALL KEYSPACES``               ``ALTER KEYSPACE`` and ``ALTER TABLE`` in any keyspace
- ``ALTER``       ``KEYSPACE``                    ``ALTER KEYSPACE`` and ``ALTER TABLE`` in specified keyspace
- ``ALTER``       ``TABLE``                       ``ALTER TABLE``
- ``ALTER``       ``ALL FUNCTIONS``               ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing any existing
- ``ALTER``       ``ALL FUNCTIONS IN KEYSPACE``   ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing existing in
-                                                 specified keyspace
- ``ALTER``       ``FUNCTION``                    ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing existing
- ``ALTER``       ``ALL ROLES``                   ``ALTER ROLE`` on any role
- ``ALTER``       ``ROLE``                        ``ALTER ROLE``
- ``DROP``        ``ALL KEYSPACES``               ``DROP KEYSPACE`` and ``DROP TABLE`` in any keyspace
- ``DROP``        ``KEYSPACE``                    ``DROP TABLE`` in specified keyspace
- ``DROP``        ``TABLE``                       ``DROP TABLE``
- ``DROP``        ``ALL FUNCTIONS``               ``DROP FUNCTION`` and ``DROP AGGREGATE`` in any keyspace
- ``DROP``        ``ALL FUNCTIONS IN KEYSPACE``   ``DROP FUNCTION`` and ``DROP AGGREGATE`` in specified keyspace
- ``DROP``        ``FUNCTION``                    ``DROP FUNCTION``
- ``DROP``        ``ALL ROLES``                   ``DROP ROLE`` on any role
- ``DROP``        ``ROLE``                        ``DROP ROLE``
- ``SELECT``      ``ALL KEYSPACES``               ``SELECT`` on any table
- ``SELECT``      ``KEYSPACE``                    ``SELECT`` on any table in specified keyspace
- ``SELECT``      ``TABLE``                       ``SELECT`` on specified table
- ``SELECT``      ``ALL MBEANS``                  Call getter methods on any mbean
- ``SELECT``      ``MBEANS``                      Call getter methods on any mbean matching a wildcard pattern
- ``SELECT``      ``MBEAN``                       Call getter methods on named mbean
- ``MODIFY``      ``ALL KEYSPACES``               ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on any table
- ``MODIFY``      ``KEYSPACE``                    ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on any table in
-                                                 specified keyspace
- ``MODIFY``      ``TABLE``                       ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on specified table
- ``MODIFY``      ``ALL MBEANS``                  Call setter methods on any mbean
- ``MODIFY``      ``MBEANS``                      Call setter methods on any mbean matching a wildcard pattern
- ``MODIFY``      ``MBEAN``                       Call setter methods on named mbean
- ``AUTHORIZE``   ``ALL KEYSPACES``               ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any table
- ``AUTHORIZE``   ``KEYSPACE``                    ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any table in
-                                                 specified keyspace
- ``AUTHORIZE``   ``TABLE``                       ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on specified table
- ``AUTHORIZE``   ``ALL FUNCTIONS``               ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any function
- ``AUTHORIZE``   ``ALL FUNCTIONS IN KEYSPACE``   ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` in specified keyspace
- ``AUTHORIZE``   ``FUNCTION``                    ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on specified function
- ``AUTHORIZE``   ``ALL MBEANS``                  ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any mbean
- ``AUTHORIZE``   ``MBEANS``                      ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any mbean matching
-                                                 a wildcard pattern
- ``AUTHORIZE``   ``MBEAN``                       ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on named mbean
- ``AUTHORIZE``   ``ALL ROLES``                   ``GRANT ROLE`` and ``REVOKE ROLE`` on any role
- ``AUTHORIZE``   ``ROLES``                       ``GRANT ROLE`` and ``REVOKE ROLE`` on specified roles
- ``DESCRIBE``    ``ALL ROLES``                   ``LIST ROLES`` on all roles or only roles granted to another,
-                                                 specified role
- ``DESCRIBE``    ``ALL MBEANS``                  Retrieve metadata about any mbean from the platform's MBeanServer
- ``DESCRIBE``    ``MBEANS``                      Retrieve metadata about any mbean matching a wildcard patter from the
-                                                 platform's MBeanServer
- ``DESCRIBE``    ``MBEAN``                       Retrieve metadata about a named mbean from the platform's MBeanServer
- ``EXECUTE``     ``ALL FUNCTIONS``               ``SELECT``, ``INSERT`` and ``UPDATE`` using any function, and use of
-                                                 any function in ``CREATE AGGREGATE``
- ``EXECUTE``     ``ALL FUNCTIONS IN KEYSPACE``   ``SELECT``, ``INSERT`` and ``UPDATE`` using any function in specified
-                                                 keyspace and use of any function in keyspace in ``CREATE AGGREGATE``
- ``EXECUTE``     ``FUNCTION``                    ``SELECT``, ``INSERT`` and ``UPDATE`` using specified function and use
-                                                 of the function in ``CREATE AGGREGATE``
- ``EXECUTE``     ``ALL MBEANS``                  Execute operations on any mbean
- ``EXECUTE``     ``MBEANS``                      Execute operations on any mbean matching a wildcard pattern
- ``EXECUTE``     ``MBEAN``                       Execute operations on named mbean
-=============== =============================== =======================================================================
-
-.. _grant-permission-statement:
-
-GRANT PERMISSION
-~~~~~~~~~~~~~~~~
-
-Granting a permission uses the ``GRANT PERMISSION`` statement:
-
-.. productionlist::
-   grant_permission_statement: GRANT `permissions` ON `resource` TO `role_name`
-   permissions: ALL [ PERMISSIONS ] | `permission` [ PERMISSION ]
-   permission: CREATE | ALTER | DROP | SELECT | MODIFY | AUTHORIZE | DESCRIBE | EXECUTE
-   resource: ALL KEYSPACES
-           :| KEYSPACE `keyspace_name`
-           :| [ TABLE ] `table_name`
-           :| ALL ROLES
-           :| ROLE `role_name`
-           :| ALL FUNCTIONS [ IN KEYSPACE `keyspace_name` ]
-           :| FUNCTION `function_name` '(' [ `cql_type` ( ',' `cql_type` )* ] ')'
-           :| ALL MBEANS
-           :| ( MBEAN | MBEANS ) `string`
-
-For instance::
-
-    GRANT SELECT ON ALL KEYSPACES TO data_reader;
-
-This gives any user with the role ``data_reader`` permission to execute ``SELECT`` statements on any table across all
-keyspaces::
-
-    GRANT MODIFY ON KEYSPACE keyspace1 TO data_writer;
-
-This give any user with the role ``data_writer`` permission to perform ``UPDATE``, ``INSERT``, ``UPDATE``, ``DELETE``
-and ``TRUNCATE`` queries on all tables in the ``keyspace1`` keyspace::
-
-    GRANT DROP ON keyspace1.table1 TO schema_owner;
-
-This gives any user with the ``schema_owner`` role permissions to ``DROP`` ``keyspace1.table1``::
-
-    GRANT EXECUTE ON FUNCTION keyspace1.user_function( int ) TO report_writer;
-
-This grants any user with the ``report_writer`` role permission to execute ``SELECT``, ``INSERT`` and ``UPDATE`` queries
-which use the function ``keyspace1.user_function( int )``::
-
-    GRANT DESCRIBE ON ALL ROLES TO role_admin;
-
-This grants any user with the ``role_admin`` role permission to view any and all roles in the system with a ``LIST
-ROLES`` statement
-
-.. _grant-all:
-
-GRANT ALL
-`````````
-
-When the ``GRANT ALL`` form is used, the appropriate set of permissions is determined automatically based on the target
-resource.
-
-Automatic Granting
-``````````````````
-
-When a resource is created, via a ``CREATE KEYSPACE``, ``CREATE TABLE``, ``CREATE FUNCTION``, ``CREATE AGGREGATE`` or
-``CREATE ROLE`` statement, the creator (the role the database user who issues the statement is identified as), is
-automatically granted all applicable permissions on the new resource.
-
-.. _revoke-permission-statement:
-
-REVOKE PERMISSION
-~~~~~~~~~~~~~~~~~
-
-Revoking a permission from a role uses the ``REVOKE PERMISSION`` statement:
-
-.. productionlist::
-   revoke_permission_statement: REVOKE `permissions` ON `resource` FROM `role_name`
-
-For instance::
-
-    REVOKE SELECT ON ALL KEYSPACES FROM data_reader;
-    REVOKE MODIFY ON KEYSPACE keyspace1 FROM data_writer;
-    REVOKE DROP ON keyspace1.table1 FROM schema_owner;
-    REVOKE EXECUTE ON FUNCTION keyspace1.user_function( int ) FROM report_writer;
-    REVOKE DESCRIBE ON ALL ROLES FROM role_admin;
-
-.. _list-permissions-statement:
-
-LIST PERMISSIONS
-~~~~~~~~~~~~~~~~
-
-Listing granted permissions uses the ``LIST PERMISSIONS`` statement:
-
-.. productionlist::
-   list_permissions_statement: LIST `permissions` [ ON `resource` ] [ OF `role_name` [ NORECURSIVE ] ]
-
-For instance::
-
-    LIST ALL PERMISSIONS OF alice;
-
-Show all permissions granted to ``alice``, including those acquired transitively from any other roles::
-
-    LIST ALL PERMISSIONS ON keyspace1.table1 OF bob;
-
-Show all permissions on ``keyspace1.table1`` granted to ``bob``, including those acquired transitively from any other
-roles. This also includes any permissions higher up the resource hierarchy which can be applied to ``keyspace1.table1``.
-For example, should ``bob`` have ``ALTER`` permission on ``keyspace1``, that would be included in the results of this
-query. Adding the ``NORECURSIVE`` switch restricts the results to only those permissions which were directly granted to
-``bob`` or one of ``bob``'s roles::
-
-    LIST SELECT PERMISSIONS OF carlos;
-
-Show any permissions granted to ``carlos`` or any of ``carlos``'s roles, limited to ``SELECT`` permissions on any
-resource.
diff --git a/src/doc/3.10/_sources/cql/triggers.txt b/src/doc/3.10/_sources/cql/triggers.txt
deleted file mode 100644
index db3f53e..0000000
--- a/src/doc/3.10/_sources/cql/triggers.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _cql-triggers:
-
-Triggers
---------
-
-Triggers are identified by a name defined by:
-
-.. productionlist::
-   trigger_name: `identifier`
-
-
-.. _create-trigger-statement:
-
-CREATE TRIGGER
-^^^^^^^^^^^^^^
-
-Creating a new trigger uses the ``CREATE TRIGGER`` statement:
-
-.. productionlist::
-   create_trigger_statement: CREATE TRIGGER [ IF NOT EXISTS ] `trigger_name`
-                           :     ON `table_name`
-                           :     USING `string`
-
-For instance::
-
-    CREATE TRIGGER myTrigger ON myTable USING 'org.apache.cassandra.triggers.InvertedIndex';
-
-The actual logic that makes up the trigger can be written in any Java (JVM) language and exists outside the database.
-You place the trigger code in a ``lib/triggers`` subdirectory of the Cassandra installation directory, it loads during
-cluster startup, and exists on every node that participates in a cluster. The trigger defined on a table fires before a
-requested DML statement occurs, which ensures the atomicity of the transaction.
-
-.. _drop-trigger-statement:
-
-DROP TRIGGER
-^^^^^^^^^^^^
-
-Dropping a trigger uses the ``DROP TRIGGER`` statement:
-
-.. productionlist::
-   drop_trigger_statement: DROP TRIGGER [ IF EXISTS ] `trigger_name` ON `table_name`
-
-For instance::
-
-    DROP TRIGGER myTrigger ON myTable;
diff --git a/src/doc/3.10/_sources/cql/types.txt b/src/doc/3.10/_sources/cql/types.txt
deleted file mode 100644
index e452f35..0000000
--- a/src/doc/3.10/_sources/cql/types.txt
+++ /dev/null
@@ -1,518 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: cql
-
-.. _UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier
-
-.. _data-types:
-
-Data Types
-----------
-
-CQL is a typed language and supports a rich set of data types, including :ref:`native types <native-types>`,
-:ref:`collection types <collections>`, :ref:`user-defined types <udts>`, :ref:`tuple types <tuples>` and :ref:`custom
-types <custom-types>`:
-
-.. productionlist::
-   cql_type: `native_type` | `collection_type` | `user_defined_type` | `tuple_type` | `custom_type`
-
-
-.. _native-types:
-
-Native Types
-^^^^^^^^^^^^
-
-The native types supported by CQL are:
-
-.. productionlist::
-   native_type: ASCII
-              : | BIGINT
-              : | BLOB
-              : | BOOLEAN
-              : | COUNTER
-              : | DATE
-              : | DECIMAL
-              : | DOUBLE
-              : | FLOAT
-              : | INET
-              : | INT
-              : | SMALLINT
-              : | TEXT
-              : | TIME
-              : | TIMESTAMP
-              : | TIMEUUID
-              : | TINYINT
-              : | UUID
-              : | VARCHAR
-              : | VARINT
-
-The following table gives additional informations on the native data types, and on which kind of :ref:`constants
-<constants>` each type supports:
-
-=============== ===================== ==================================================================================
- type            constants supported   description
-=============== ===================== ==================================================================================
- ``ascii``       :token:`string`       ASCII character string
- ``bigint``      :token:`integer`      64-bit signed long
- ``blob``        :token:`blob`         Arbitrary bytes (no validation)
- ``boolean``     :token:`boolean`      Either ``true`` or ``false``
- ``counter``     :token:`integer`      Counter column (64-bit signed value). See :ref:`counters` for details
- ``date``        :token:`integer`,     A date (with no corresponding time value). See :ref:`dates` below for details
-                 :token:`string`
- ``decimal``     :token:`integer`,     Variable-precision decimal
-                 :token:`float`
- ``double``      :token:`integer`      64-bit IEEE-754 floating point
-                 :token:`float`
- ``float``       :token:`integer`,     32-bit IEEE-754 floating point
-                 :token:`float`
- ``inet``        :token:`string`       An IP address, either IPv4 (4 bytes long) or IPv6 (16 bytes long). Note that
-                                       there is no ``inet`` constant, IP address should be input as strings
- ``int``         :token:`integer`      32-bit signed int
- ``smallint``    :token:`integer`      16-bit signed int
- ``text``        :token:`string`       UTF8 encoded string
- ``time``        :token:`integer`,     A time (with no corresponding date value) with nanosecond precision. See
-                 :token:`string`       :ref:`times` below for details
- ``timestamp``   :token:`integer`,     A timestamp (date and time) with millisecond precision. See :ref:`timestamps`
-                 :token:`string`       below for details
- ``timeuuid``    :token:`uuid`         Version 1 UUID_, generally used as a “conflict-free” timestamp. Also see
-                                       :ref:`timeuuid-functions`
- ``tinyint``     :token:`integer`      8-bit signed int
- ``uuid``        :token:`uuid`         A UUID_ (of any version)
- ``varchar``     :token:`string`       UTF8 encoded string
- ``varint``      :token:`integer`      Arbitrary-precision integer
-=============== ===================== ==================================================================================
-
-.. _counters:
-
-Counters
-~~~~~~~~
-
-The ``counter`` type is used to define *counter columns*. A counter column is a column whose value is a 64-bit signed
-integer and on which 2 operations are supported: incrementing and decrementing (see the :ref:`UPDATE statement
-<update-statement>` for syntax). Note that the value of a counter cannot be set: a counter does not exist until first
-incremented/decremented, and that first increment/decrement is made as if the prior value was 0.
-
-.. _counter-limitations:
-
-Counters have a number of important limitations:
-
-- They cannot be used for columns part of the ``PRIMARY KEY`` of a table.
-- A table that contains a counter can only contain counters. In other words, either all the columns of a table outside
-  the ``PRIMARY KEY`` have the ``counter`` type, or none of them have it.
-- Counters do not support :ref:`expiration <ttls>`.
-- The deletion of counters is supported, but is only guaranteed to work the first time you delete a counter. In other
-  words, you should not re-update a counter that you have deleted (if you do, proper behavior is not guaranteed).
-- Counter updates are, by nature, not `idemptotent <https://en.wikipedia.org/wiki/Idempotence>`__. An important
-  consequence is that if a counter update fails unexpectedly (timeout or loss of connection to the coordinator node),
-  the client has no way to know if the update has been applied or not. In particular, replaying the update may or may
-  not lead to an over count.
-
-.. _timestamps:
-
-Working with timestamps
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Values of the ``timestamp`` type are encoded as 64-bit signed integers representing a number of milliseconds since the
-standard base time known as `the epoch <https://en.wikipedia.org/wiki/Unix_time>`__: January 1 1970 at 00:00:00 GMT.
-
-Timestamps can be input in CQL either using their value as an :token:`integer`, or using a :token:`string` that
-represents an `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`__ date. For instance, all of the values below are
-valid ``timestamp`` values for  Mar 2, 2011, at 04:05:00 AM, GMT:
-
-- ``1299038700000``
-- ``'2011-02-03 04:05+0000'``
-- ``'2011-02-03 04:05:00+0000'``
-- ``'2011-02-03 04:05:00.000+0000'``
-- ``'2011-02-03T04:05+0000'``
-- ``'2011-02-03T04:05:00+0000'``
-- ``'2011-02-03T04:05:00.000+0000'``
-
-The ``+0000`` above is an RFC 822 4-digit time zone specification; ``+0000`` refers to GMT. US Pacific Standard Time is
-``-0800``. The time zone may be omitted if desired (``'2011-02-03 04:05:00'``), and if so, the date will be interpreted
-as being in the time zone under which the coordinating Cassandra node is configured. There are however difficulties
-inherent in relying on the time zone configuration being as expected, so it is recommended that the time zone always be
-specified for timestamps when feasible.
-
-The time of day may also be omitted (``'2011-02-03'`` or ``'2011-02-03+0000'``), in which case the time of day will
-default to 00:00:00 in the specified or default time zone. However, if only the date part is relevant, consider using
-the :ref:`date <dates>` type.
-
-.. _dates:
-
-Working with dates
-^^^^^^^^^^^^^^^^^^
-
-Values of the ``date`` type are encoded as 32-bit unsigned integers representing a number of days with “the epoch” at
-the center of the range (2^31). Epoch is January 1st, 1970
-
-As for :ref:`timestamp <timestamps>`, a date can be input either as an :token:`integer` or using a date
-:token:`string`. In the later case, the format should be ``yyyy-mm-dd`` (so ``'2011-02-03'`` for instance).
-
-.. _times:
-
-Working with times
-^^^^^^^^^^^^^^^^^^
-
-Values of the ``time`` type are encoded as 64-bit signed integers representing the number of nanoseconds since midnight.
-
-As for :ref:`timestamp <timestamps>`, a time can be input either as an :token:`integer` or using a :token:`string`
-representing the time. In the later case, the format should be ``hh:mm:ss[.fffffffff]`` (where the sub-second precision
-is optional and if provided, can be less than the nanosecond). So for instance, the following are valid inputs for a
-time:
-
--  ``'08:12:54'``
--  ``'08:12:54.123'``
--  ``'08:12:54.123456'``
--  ``'08:12:54.123456789'``
-
-
-.. _collections:
-
-Collections
-^^^^^^^^^^^
-
-CQL supports 3 kind of collections: :ref:`maps`, :ref:`sets` and :ref:`lists`. The types of those collections is defined
-by:
-
-.. productionlist::
-   collection_type: MAP '<' `cql_type` ',' `cql_type` '>'
-                  : | SET '<' `cql_type` '>'
-                  : | LIST '<' `cql_type` '>'
-
-and their values can be inputd using collection literals:
-
-.. productionlist::
-   collection_literal: `map_literal` | `set_literal` | `list_literal`
-   map_literal: '{' [ `term` ':' `term` (',' `term` : `term`)* ] '}'
-   set_literal: '{' [ `term` (',' `term`)* ] '}'
-   list_literal: '[' [ `term` (',' `term`)* ] ']'
-
-Note however that neither :token:`bind_marker` nor ``NULL`` are supported inside collection literals.
-
-Noteworthy characteristics
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Collections are meant for storing/denormalizing relatively small amount of data. They work well for things like “the
-phone numbers of a given user”, “labels applied to an email”, etc. But when items are expected to grow unbounded (“all
-messages sent by a user”, “events registered by a sensor”...), then collections are not appropriate and a specific table
-(with clustering columns) should be used. Concretely, (non-frozen) collections have the following noteworthy
-characteristics and limitations:
-
-- Individual collections are not indexed internally. Which means that even to access a single element of a collection,
-  the while collection has to be read (and reading one is not paged internally).
-- While insertion operations on sets and maps never incur a read-before-write internally, some operations on lists do.
-  Further, some lists operations are not idempotent by nature (see the section on :ref:`lists <lists>` below for
-  details), making their retry in case of timeout problematic. It is thus advised to prefer sets over lists when
-  possible.
-
-Please note that while some of those limitations may or may not be removed/improved upon in the future, it is a
-anti-pattern to use a (single) collection to store large amounts of data.
-
-.. _maps:
-
-Maps
-~~~~
-
-A ``map`` is a (sorted) set of key-value pairs, where keys are unique and the map is sorted by its keys. You can define
-and insert a map with::
-
-    CREATE TABLE users (
-        id text PRIMARY KEY,
-        name text,
-        favs map<text, text> // A map of text keys, and text values
-    );
-
-    INSERT INTO users (id, name, favs)
-               VALUES ('jsmith', 'John Smith', { 'fruit' : 'Apple', 'band' : 'Beatles' });
-
-    // Replace the existing map entirely.
-    UPDATE users SET favs = { 'fruit' : 'Banana' } WHERE id = 'jsmith';
-
-Further, maps support:
-
-- Updating or inserting one or more elements::
-
-    UPDATE users SET favs['author'] = 'Ed Poe' WHERE id = 'jsmith';
-    UPDATE users SET favs = favs + { 'movie' : 'Cassablanca', 'band' : 'ZZ Top' } WHERE id = 'jsmith';
-
-- Removing one or more element (if an element doesn't exist, removing it is a no-op but no error is thrown)::
-
-    DELETE favs['author'] FROM users WHERE id = 'jsmith';
-    UPDATE users SET favs = favs - { 'movie', 'band'} WHERE id = 'jsmith';
-
-  Note that for removing multiple elements in a ``map``, you remove from it a ``set`` of keys.
-
-Lastly, TTLs are allowed for both ``INSERT`` and ``UPDATE``, but in both case the TTL set only apply to the newly
-inserted/updated elements. In other words::
-
-    UPDATE users USING TTL 10 SET favs['color'] = 'green' WHERE id = 'jsmith';
-
-will only apply the TTL to the ``{ 'color' : 'green' }`` record, the rest of the map remaining unaffected.
-
-
-.. _sets:
-
-Sets
-~~~~
-
-A ``set`` is a (sorted) collection of unique values. You can define and insert a map with::
-
-    CREATE TABLE images (
-        name text PRIMARY KEY,
-        owner text,
-        tags set<text> // A set of text values
-    );
-
-    INSERT INTO images (name, owner, tags)
-                VALUES ('cat.jpg', 'jsmith', { 'pet', 'cute' });
-
-    // Replace the existing set entirely
-    UPDATE images SET tags = { 'kitten', 'cat', 'lol' } WHERE id = 'jsmith';
-
-Further, sets support:
-
-- Adding one or multiple elements (as this is a set, inserting an already existing element is a no-op)::
-
-    UPDATE images SET tags = tags + { 'gray', 'cuddly' } WHERE name = 'cat.jpg';
-
-- Removing one or multiple elements (if an element doesn't exist, removing it is a no-op but no error is thrown)::
-
-    UPDATE images SET tags = tags - { 'cat' } WHERE name = 'cat.jpg';
-
-Lastly, as for :ref:`maps <maps>`, TTLs if used only apply to the newly inserted values.
-
-.. _lists:
-
-Lists
-~~~~~
-
-.. note:: As mentioned above and further discussed at the end of this section, lists have limitations and specific
-   performance considerations that you should take into account before using them. In general, if you can use a
-   :ref:`set <sets>` instead of list, always prefer a set.
-
-A ``list`` is a (sorted) collection of non-unique values where elements are ordered by there position in the list. You
-can define and insert a list with::
-
-    CREATE TABLE plays (
-        id text PRIMARY KEY,
-        game text,
-        players int,
-        scores list<int> // A list of integers
-    )
-
-    INSERT INTO plays (id, game, players, scores)
-               VALUES ('123-afde', 'quake', 3, [17, 4, 2]);
-
-    // Replace the existing list entirely
-    UPDATE plays SET scores = [ 3, 9, 4] WHERE id = '123-afde';
-
-Further, lists support:
-
-- Appending and prepending values to a list::
-
-    UPDATE plays SET players = 5, scores = scores + [ 14, 21 ] WHERE id = '123-afde';
-    UPDATE plays SET players = 6, scores = [ 3 ] + scores WHERE id = '123-afde';
-
-- Setting the value at a particular position in the list. This imply that the list has a pre-existing element for that
-  position or an error will be thrown that the list is too small::
-
-    UPDATE plays SET scores[1] = 7 WHERE id = '123-afde';
-
-- Removing an element by its position in the list. This imply that the list has a pre-existing element for that position
-  or an error will be thrown that the list is too small. Further, as the operation removes an element from the list, the
-  list size will be diminished by 1, shifting the position of all the elements following the one deleted::
-
-    DELETE scores[1] FROM plays WHERE id = '123-afde';
-
-- Deleting *all* the occurrences of particular values in the list (if a particular element doesn't occur at all in the
-  list, it is simply ignored and no error is thrown)::
-
-    UPDATE plays SET scores = scores - [ 12, 21 ] WHERE id = '123-afde';
-
-.. warning:: The append and prepend operations are not idempotent by nature. So in particular, if one of these operation
-   timeout, then retrying the operation is not safe and it may (or may not) lead to appending/prepending the value
-   twice.
-
-.. warning:: Setting and removing an element by position and removing occurences of particular values incur an internal
-   *read-before-write*. They will thus run more slowly and take more ressources than usual updates (with the exclusion
-   of conditional write that have their own cost).
-
-Lastly, as for :ref:`maps <maps>`, TTLs when used only apply to the newly inserted values.
-
-.. _udts:
-
-User-Defined Types
-^^^^^^^^^^^^^^^^^^
-
-CQL support the definition of user-defined types (UDT for short). Such a type can be created, modified and removed using
-the :token:`create_type_statement`, :token:`alter_type_statement` and :token:`drop_type_statement` described below. But
-once created, a UDT is simply referred to by its name:
-
-.. productionlist::
-   user_defined_type: `udt_name`
-   udt_name: [ `keyspace_name` '.' ] `identifier`
-
-
-Creating a UDT
-~~~~~~~~~~~~~~
-
-Creating a new user-defined type is done using a ``CREATE TYPE`` statement defined by:
-
-.. productionlist::
-   create_type_statement: CREATE TYPE [ IF NOT EXISTS ] `udt_name`
-                        :     '(' `field_definition` ( ',' `field_definition` )* ')'
-   field_definition: `identifier` `cql_type`
-
-A UDT has a name (used to declared columns of that type) and is a set of named and typed fields. Fields name can be any
-type, including collections or other UDT. For instance::
-
-    CREATE TYPE phone (
-        country_code int,
-        number text,
-    )
-
-    CREATE TYPE address (
-        street text,
-        city text,
-        zip int,
-        phones map<text, phone>
-    )
-
-    CREATE TABLE user (
-        name text PRIMARY KEY,
-        addresses map<text, frozen<address>>
-    )
-
-Note that:
-
-- Attempting to create an already existing type will result in an error unless the ``IF NOT EXISTS`` option is used. If
-  it is used, the statement will be a no-op if the type already exists.
-- A type is intrinsically bound to the keyspace in which it is created, and can only be used in that keyspace. At
-  creation, if the type name is prefixed by a keyspace name, it is created in that keyspace. Otherwise, it is created in
-  the current keyspace.
-- As of Cassandra |version|, UDT have to be frozen in most cases, hence the ``frozen<address>`` in the table definition
-  above. Please see the section on :ref:`frozen <frozen>` for more details.
-
-UDT literals
-~~~~~~~~~~~~
-
-Once a used-defined type has been created, value can be input using a UDT literal:
-
-.. productionlist::
-   udt_literal: '{' `identifier` ':' `term` ( ',' `identifier` ':' `term` )* '}'
-
-In other words, a UDT literal is like a :ref:`map <maps>` literal but its keys are the names of the fields of the type.
-For instance, one could insert into the table define in the previous section using::
-
-    INSERT INTO user (name, addresses)
-              VALUES ('z3 Pr3z1den7', {
-                  'home' : {
-                      street: '1600 Pennsylvania Ave NW',
-                      city: 'Washington',
-                      zip: '20500',
-                      phones: { 'cell' : { country_code: 1, number: '202 456-1111' },
-                                'landline' : { country_code: 1, number: '...' } }
-                  }
-                  'work' : {
-                      street: '1600 Pennsylvania Ave NW',
-                      city: 'Washington',
-                      zip: '20500',
-                      phones: { 'fax' : { country_code: 1, number: '...' } }
-                  }
-              })
-
-To be valid, a UDT literal should only include fields defined by the type it is a literal of, but it can omit some field
-(in which case those will be ``null``).
-
-Altering a UDT
-~~~~~~~~~~~~~~
-
-An existing user-defined type can be modified using an ``ALTER TYPE`` statement:
-
-.. productionlist::
-   alter_type_statement: ALTER TYPE `udt_name` `alter_type_modification`
-   alter_type_modification: ALTER `identifier` TYPE `cql_type`
-                          : | ADD `field_definition`
-                          : | RENAME `identifier` TO `identifier` ( `identifier` TO `identifier` )*
-
-You can:
-
-- modify the type of particular field (``ALTER TYPE address ALTER zip TYPE bigint``). The restrictions for such change
-  are the same than when :ref:`altering the type of column <alter-table-statement>`.
-- add a new field to the type (``ALTER TYPE address ADD country text``). That new field will be ``null`` for any values
-  of the type created before the addition.
-- rename the fields of the type (``ALTER TYPE address RENAME zip TO zipcode``).
-
-Dropping a UDT
-~~~~~~~~~~~~~~
-
-You can drop an existing user-defined type using a ``DROP TYPE`` statement:
-
-.. productionlist::
-   drop_type_statement: DROP TYPE [ IF EXISTS ] `udt_name`
-
-Dropping a type results in the immediate, irreversible removal of that type. However, attempting to drop a type that is
-still in use by another type, table or function will result in an error.
-
-If the type dropped does not exist, an error will be returned unless ``IF EXISTS`` is used, in which case the operation
-is a no-op.
-
-.. _tuples:
-
-Tuples
-^^^^^^
-
-CQL also support tuples and tuple types (where the elements can be of different types). Functionally, tuples can be
-though as anonymous UDT with anonymous fields. Tuple types and tuple literals are defined by:
-
-.. productionlist::
-   tuple_type: TUPLE '<' `cql_type` ( ',' `cql_type` )* '>'
-   tuple_literal: '(' `term` ( ',' `term` )* ')'
-
-and can be used thusly::
-
-    CREATE TABLE durations (
-        event text,
-        duration tuple<int, text>,
-    )
-
-    INSERT INTO durations (event, duration) VALUES ('ev1', (3, 'hours'));
-
-Unlike other "composed" types (collections and UDT), a tuple is always :ref:`frozen <frozen>` (without the need of the
-`frozen` keyword) and it is not possible to update only some elements of a tuple (without updating the whole tuple).
-Also, a tuple literal should always have the same number of value than declared in the type it is a tuple of (some of
-those values can be null but they need to be explicitly declared as so).
-
-.. _custom-types:
-
-Custom Types
-^^^^^^^^^^^^
-
-.. note:: Custom types exists mostly for backward compatiliby purposes and their usage is discouraged. Their usage is
-   complex, not user friendly and the other provided types, particularly :ref:`user-defined types <udts>`, should almost
-   always be enough.
-
-A custom type is defined by:
-
-.. productionlist::
-   custom_type: `string`
-
-A custom type is a :token:`string` that contains the name of Java class that extends the server side ``AbstractType``
-class and that can be loaded by Cassandra (it should thus be in the ``CLASSPATH`` of every node running Cassandra). That
-class will define what values are valid for the type and how the time sorts when used for a clustering column. For any
-other purpose, a value of a custom type is the same than that of a ``blob``, and can in particular be input using the
-:token:`blob` literal syntax.
diff --git a/src/doc/3.10/_sources/data_modeling/index.txt b/src/doc/3.10/_sources/data_modeling/index.txt
deleted file mode 100644
index dde031a..0000000
--- a/src/doc/3.10/_sources/data_modeling/index.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Data Modeling
-=============
-
-.. todo:: TODO
diff --git a/src/doc/3.10/_sources/faq/index.txt b/src/doc/3.10/_sources/faq/index.txt
deleted file mode 100644
index d985e37..0000000
--- a/src/doc/3.10/_sources/faq/index.txt
+++ /dev/null
@@ -1,298 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Frequently Asked Questions
-==========================
-
-- :ref:`why-cant-list-all`
-- :ref:`what-ports`
-- :ref:`what-happens-on-joins`
-- :ref:`asynch-deletes`
-- :ref:`one-entry-ring`
-- :ref:`can-large-blob`
-- :ref:`nodetool-connection-refused`
-- :ref:`to-batch-or-not-to-batch`
-- :ref:`selinux`
-- :ref:`how-to-unsubscribe`
-- :ref:`cassandra-eats-all-my-memory`
-- :ref:`what-are-seeds`
-- :ref:`are-seeds-SPOF`
-- :ref:`why-message-dropped`
-- :ref:`oom-map-failed`
-- :ref:`what-on-same-timestamp-update`
-- :ref:`why-bootstrapping-stream-error`
-
-.. _why-cant-list-all:
-
-Why can't I set ``listen_address`` to listen on 0.0.0.0 (all my addresses)?
----------------------------------------------------------------------------
-
-Cassandra is a gossip-based distributed system and ``listen_address`` is the address a node tells other nodes to reach
-it at. Telling other nodes "contact me on any of my addresses" is a bad idea; if different nodes in the cluster pick
-different addresses for you, Bad Things happen.
-
-If you don't want to manually specify an IP to ``listen_address`` for each node in your cluster (understandable!), leave
-it blank and Cassandra will use ``InetAddress.getLocalHost()`` to pick an address. Then it's up to you or your ops team
-to make things resolve correctly (``/etc/hosts/``, dns, etc).
-
-One exception to this process is JMX, which by default binds to 0.0.0.0 (Java bug 6425769).
-
-See :jira:`256` and :jira:`43` for more gory details.
-
-.. _what-ports:
-
-What ports does Cassandra use?
-------------------------------
-
-By default, Cassandra uses 7000 for cluster communication (7001 if SSL is enabled),  9042 for native protocol clients,
-and 7199 for JMX (and 9160 for the deprecated Thrift interface). The internode communication and native protocol ports
-are configurable in the :ref:`cassandra-yaml`. The JMX port is configurable in ``cassandra-env.sh`` (through JVM
-options). All ports are TCP.
-
-.. _what-happens-on-joins:
-
-What happens to existing data in my cluster when I add new nodes?
------------------------------------------------------------------
-
-When a new nodes joins a cluster, it will automatically contact the other nodes in the cluster and copy the right data
-to itself. See :ref:`topology-changes`.
-
-.. _asynch-deletes:
-
-I delete data from Cassandra, but disk usage stays the same. What gives?
-------------------------------------------------------------------------
-
-Data you write to Cassandra gets persisted to SSTables. Since SSTables are immutable, the data can't actually be removed
-when you perform a delete, instead, a marker (also called a "tombstone") is written to indicate the value's new status.
-Never fear though, on the first compaction that occurs between the data and the tombstone, the data will be expunged
-completely and the corresponding disk space recovered. See :ref:`compaction` for more detail.
-
-.. _one-entry-ring:
-
-Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?
-------------------------------------------------------------------------------------------------------------------
-
-This happens when you have the same token assigned to each node. Don't do that.
-
-Most often this bites people who deploy by installing Cassandra on a VM (especially when using the Debian package, which
-auto-starts Cassandra after installation, thus generating and saving a token), then cloning that VM to other nodes.
-
-The easiest fix is to wipe the data and commitlog directories, thus making sure that each node will generate a random
-token on the next restart.
-
-.. _change-replication-factor:
-
-Can I change the replication factor (a a keyspace) on a live cluster?
----------------------------------------------------------------------
-
-Yes, but it will require running repair (or cleanup) to change the replica count of existing data:
-
-- :ref:`Alter <alter-keyspace-statement>` the replication factor for desired keyspace (using cqlsh for instance).
-- If you're reducing the replication factor, run ``nodetool cleanup`` on the cluster to remove surplus replicated data.
-  Cleanup runs on a per-node basis.
-- If you're increasing the replication factor, run ``nodetool repair`` to ensure data is replicated according to the new
-  configuration. Repair runs on a per-replica set basis. This is an intensive process that may result in adverse cluster
-  performance. It's highly recommended to do rolling repairs, as an attempt to repair the entire cluster at once will
-  most likely swamp it.
-
-.. _can-large-blob:
-
-Can I Store (large) BLOBs in Cassandra?
----------------------------------------
-
-Cassandra isn't optimized for large file or BLOB storage and a single ``blob`` value is always read and send to the
-client entirely. As such, storing small blobs (less than single digit MB) should not be a problem, but it is advised to
-manually split large blobs into smaller chunks.
-
-Please note in particular that by default, any value greater than 16MB will be rejected by Cassandra due the
-``max_mutation_size_in_kb`` configuration of the :ref:`cassandra-yaml` file (which default to half of
-``commitlog_segment_size_in_mb``, which itself default to 32MB).
-
-.. _nodetool-connection-refused:
-
-Nodetool says "Connection refused to host: 127.0.1.1" for any remote host. What gives?
---------------------------------------------------------------------------------------
-
-Nodetool relies on JMX, which in turn relies on RMI, which in turn sets up its own listeners and connectors as needed on
-each end of the exchange. Normally all of this happens behind the scenes transparently, but incorrect name resolution
-for either the host connecting, or the one being connected to, can result in crossed wires and confusing exceptions.
-
-If you are not using DNS, then make sure that your ``/etc/hosts`` files are accurate on both ends. If that fails, try
-setting the ``-Djava.rmi.server.hostname=<public name>`` JVM option near the bottom of ``cassandra-env.sh`` to an
-interface that you can reach from the remote machine.
-
-.. _to-batch-or-not-to-batch:
-
-Will batching my operations speed up my bulk load?
---------------------------------------------------
-
-No. Using batches to load data will generally just add "spikes" of latency. Use asynchronous INSERTs instead, or use
-true :ref:`bulk-loading`.
-
-An exception is batching updates to a single partition, which can be a Good Thing (as long as the size of a single batch
-stay reasonable). But never ever blindly batch everything!
-
-.. _selinux:
-
-On RHEL nodes are unable to join the ring
------------------------------------------
-
-Check if `SELinux <https://en.wikipedia.org/wiki/Security-Enhanced_Linux>`__ is on; if it is, turn it off.
-
-.. _how-to-unsubscribe:
-
-How do I unsubscribe from the email list?
------------------------------------------
-
-Send an email to ``user-unsubscribe@cassandra.apache.org``.
-
-.. _cassandra-eats-all-my-memory:
-
-Why does top report that Cassandra is using a lot more memory than the Java heap max?
--------------------------------------------------------------------------------------
-
-Cassandra uses `Memory Mapped Files <https://en.wikipedia.org/wiki/Memory-mapped_file>`__ (mmap) internally. That is, we
-use the operating system's virtual memory system to map a number of on-disk files into the Cassandra process' address
-space. This will "use" virtual memory; i.e. address space, and will be reported by tools like top accordingly, but on 64
-bit systems virtual address space is effectively unlimited so you should not worry about that.
-
-What matters from the perspective of "memory use" in the sense as it is normally meant, is the amount of data allocated
-on brk() or mmap'd /dev/zero, which represent real memory used. The key issue is that for a mmap'd file, there is never
-a need to retain the data resident in physical memory. Thus, whatever you do keep resident in physical memory is
-essentially just there as a cache, in the same way as normal I/O will cause the kernel page cache to retain data that
-you read/write.
-
-The difference between normal I/O and mmap() is that in the mmap() case the memory is actually mapped to the process,
-thus affecting the virtual size as reported by top. The main argument for using mmap() instead of standard I/O is the
-fact that reading entails just touching memory - in the case of the memory being resident, you just read it - you don't
-even take a page fault (so no overhead in entering the kernel and doing a semi-context switch). This is covered in more
-detail `here <http://www.varnish-cache.org/trac/wiki/ArchitectNotes>`__.
-
-.. _what-are-seeds:
-
-What are seeds?
----------------
-
-Seeds are used during startup to discover the cluster.
-
-If you configure your nodes to refer some node as seed, nodes in your ring tend to send Gossip message to seeds more
-often (also see the :ref:`section on gossip <gossip>`) than to non-seeds. In other words, seeds are worked as hubs of
-Gossip network. With seeds, each node can detect status changes of other nodes quickly.
-
-Seeds are also referred by new nodes on bootstrap to learn other nodes in ring. When you add a new node to ring, you
-need to specify at least one live seed to contact. Once a node join the ring, it learns about the other nodes, so it
-doesn't need seed on subsequent boot.
-
-You can make a seed a node at any time. There is nothing special about seed nodes. If you list the node in seed list it
-is a seed
-
-Seeds do not auto bootstrap (i.e. if a node has itself in its seed list it will not automatically transfer data to itself)
-If you want a node to do that, bootstrap it first and then add it to seeds later. If you have no data (new install) you
-do not have to worry about bootstrap at all.
-
-Recommended usage of seeds:
-
-- pick two (or more) nodes per data center as seed nodes.
-- sync the seed list to all your nodes
-
-.. _are-seeds-SPOF:
-
-Does single seed mean single point of failure?
-----------------------------------------------
-
-The ring can operate or boot without a seed; however, you will not be able to add new nodes to the cluster. It is
-recommended to configure multiple seeds in production system.
-
-.. _cant-call-jmx-method:
-
-Why can't I call jmx method X on jconsole?
-------------------------------------------
-
-Some of JMX operations use array argument and as jconsole doesn't support array argument, those operations can't be
-called with jconsole (the buttons are inactive for them). You need to write a JMX client to call such operations or need
-array-capable JMX monitoring tool.
-
-.. _why-message-dropped:
-
-Why do I see "... messages dropped ..." in the logs?
-----------------------------------------------------
-
-This is a symptom of load shedding -- Cassandra defending itself against more requests than it can handle.
-
-Internode messages which are received by a node, but do not get not to be processed within their proper timeout (see
-``read_request_timeout``, ``write_request_timeout``, ... in the :ref:`cassandra-yaml`), are dropped rather than
-processed (since the as the coordinator node will no longer be waiting for a response).
-
-For writes, this means that the mutation was not applied to all replicas it was sent to. The inconsistency will be
-repaired by read repair, hints or a manual repair. The write operation may also have timeouted as a result.
-
-For reads, this means a read request may not have completed.
-
-Load shedding is part of the Cassandra architecture, if this is a persistent issue it is generally a sign of an
-overloaded node or cluster.
-
-.. _oom-map-failed:
-
-Cassandra dies with ``java.lang.OutOfMemoryError: Map failed``
---------------------------------------------------------------
-
-If Cassandra is dying **specifically** with the "Map failed" message, it means the OS is denying java the ability to
-lock more memory. In linux, this typically means memlock is limited. Check ``/proc/<pid of cassandra>/limits`` to verify
-this and raise it (eg, via ulimit in bash). You may also need to increase ``vm.max_map_count.`` Note that the debian
-package handles this for you automatically.
-
-
-.. _what-on-same-timestamp-update:
-
-What happens if two updates are made with the same timestamp?
--------------------------------------------------------------
-
-Updates must be commutative, since they may arrive in different orders on different replicas. As long as Cassandra has a
-deterministic way to pick the winner (in a timestamp tie), the one selected is as valid as any other, and the specifics
-should be treated as an implementation detail. That said, in the case of a timestamp tie, Cassandra follows two rules:
-first, deletes take precedence over inserts/updates. Second, if there are two updates, the one with the lexically larger
-value is selected.
-
-.. _why-bootstrapping-stream-error:
-
-Why bootstrapping a new node fails with a "Stream failed" error?
-----------------------------------------------------------------
-
-Two main possibilities:
-
-#. the GC may be creating long pauses disrupting the streaming process
-#. compactions happening in the background hold streaming long enough that the TCP connection fails
-
-In the first case, regular GC tuning advices apply. In the second case, you need to set TCP keepalive to a lower value
-(default is very high on Linux). Try to just run the following::
-
-    $ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
-
-To make those settings permanent, add them to your ``/etc/sysctl.conf`` file.
-
-Note: `GCE <https://cloud.google.com/compute/>`__'s firewall will always interrupt TCP connections that are inactive for
-more than 10 min. Running the above command is highly recommended in that environment.
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/doc/3.10/_sources/getting_started/configuring.txt b/src/doc/3.10/_sources/getting_started/configuring.txt
deleted file mode 100644
index 27fac78..0000000
--- a/src/doc/3.10/_sources/getting_started/configuring.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Configuring Cassandra
----------------------
-
-For running Cassandra on a single node, the steps above are enough, you don't really need to change any configuration.
-However, when you deploy a cluster of nodes, or use clients that are not on the same host, then there are some
-parameters that must be changed.
-
-The Cassandra configuration files can be found in the ``conf`` directory of tarballs. For packages, the configuration
-files will be located in ``/etc/cassandra``.
-
-Main runtime properties
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Most of configuration in Cassandra is done via yaml properties that can be set in ``cassandra.yaml``. At a minimum you
-should consider setting the following properties:
-
-- ``cluster_name``: the name of your cluster.
-- ``seeds``: a comma separated list of the IP addresses of your cluster seeds.
-- ``storage_port``: you don't necessarily need to change this but make sure that there are no firewalls blocking this
-  port.
-- ``listen_address``: the IP address of your node, this is what allows other nodes to communicate with this node so it
-  is important that you change it. Alternatively, you can set ``listen_interface`` to tell Cassandra which interface to
-  use, and consecutively which address to use. Set only one, not both.
-- ``native_transport_port``: as for storage\_port, make sure this port is not blocked by firewalls as clients will
-  communicate with Cassandra on this port.
-
-Changing the location of directories
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following yaml properties control the location of directories:
-
-- ``data_file_directories``: one or more directories where data files are located.
-- ``commitlog_directory``: the directory where commitlog files are located.
-- ``saved_caches_directory``: the directory where saved caches are located.
-- ``hints_directory``: the directory where hints are located.
-
-For performance reasons, if you have multiple disks, consider putting commitlog and data files on different disks.
-
-Environment variables
-^^^^^^^^^^^^^^^^^^^^^
-
-JVM-level settings such as heap size can be set in ``cassandra-env.sh``.  You can add any additional JVM command line
-argument to the ``JVM_OPTS`` environment variable; when Cassandra starts these arguments will be passed to the JVM.
-
-Logging
-^^^^^^^
-
-The logger in use is logback. You can change logging properties by editing ``logback.xml``. By default it will log at
-INFO level into a file called ``system.log`` and at debug level into a file called ``debug.log``. When running in the
-foreground, it will also log at INFO level to the console.
-
diff --git a/src/doc/3.10/_sources/getting_started/drivers.txt b/src/doc/3.10/_sources/getting_started/drivers.txt
deleted file mode 100644
index baec823..0000000
--- a/src/doc/3.10/_sources/getting_started/drivers.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. _client-drivers:
-
-Client drivers
---------------
-
-Here are known Cassandra client drivers organized by language. Before choosing a driver, you should verify the Cassandra
-version and functionality supported by a specific driver.
-
-Java
-^^^^
-
-- `Achilles <http://achilles.archinnov.info/>`__
-- `Astyanax <https://github.com/Netflix/astyanax/wiki/Getting-Started>`__
-- `Casser <https://github.com/noorq/casser>`__
-- `Datastax Java driver <https://github.com/datastax/java-driver>`__
-- `Kundera <https://github.com/impetus-opensource/Kundera>`__
-- `PlayORM <https://github.com/deanhiller/playorm>`__
-
-Python
-^^^^^^
-
-- `Datastax Python driver <https://github.com/datastax/python-driver>`__
-
-Ruby
-^^^^
-
-- `Datastax Ruby driver <https://github.com/datastax/ruby-driver>`__
-
-C# / .NET
-^^^^^^^^^
-
-- `Cassandra Sharp <https://github.com/pchalamet/cassandra-sharp>`__
-- `Datastax C# driver <https://github.com/datastax/csharp-driver>`__
-- `Fluent Cassandra <https://github.com/managedfusion/fluentcassandra>`__
-
-Nodejs
-^^^^^^
-
-- `Datastax Nodejs driver <https://github.com/datastax/nodejs-driver>`__
-- `Node-Cassandra-CQL <https://github.com/jorgebay/node-cassandra-cql>`__
-
-PHP
-^^^
-
-- `CQL \| PHP <http://code.google.com/a/apache-extras.org/p/cassandra-pdo>`__
-- `Datastax PHP driver <https://github.com/datastax/php-driver/>`__
-- `PHP-Cassandra <https://github.com/aparkhomenko/php-cassandra>`__
-- `PHP Library for Cassandra <http://evseevnn.github.io/php-cassandra-binary/>`__
-
-C++
-^^^
-
-- `Datastax C++ driver <https://github.com/datastax/cpp-driver>`__
-- `libQTCassandra <http://sourceforge.net/projects/libqtcassandra>`__
-
-Scala
-^^^^^
-
-- `Datastax Spark connector <https://github.com/datastax/spark-cassandra-connector>`__
-- `Phantom <https://github.com/newzly/phantom>`__
-- `Quill <https://github.com/getquill/quill>`__
-
-Clojure
-^^^^^^^
-
-- `Alia <https://github.com/mpenet/alia>`__
-- `Cassaforte <https://github.com/clojurewerkz/cassaforte>`__
-- `Hayt <https://github.com/mpenet/hayt>`__
-
-Erlang
-^^^^^^
-
-- `CQerl <https://github.com/matehat/cqerl>`__
-- `Erlcass <https://github.com/silviucpp/erlcass>`__
-
-Go
-^^
-
-- `CQLc <http://relops.com/cqlc/>`__
-- `Gocassa <https://github.com/hailocab/gocassa>`__
-- `GoCQL <https://github.com/gocql/gocql>`__
-
-Haskell
-^^^^^^^
-
-- `Cassy <https://github.com/ozataman/cassy>`__
-
-Rust
-^^^^
-
-- `Rust CQL <https://github.com/neich/rust-cql>`__
diff --git a/src/doc/3.10/_sources/getting_started/index.txt b/src/doc/3.10/_sources/getting_started/index.txt
deleted file mode 100644
index 4ca9c4d..0000000
--- a/src/doc/3.10/_sources/getting_started/index.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Getting Started
-===============
-
-This section covers how to get started using Apache Cassandra and should be the first thing to read if you are new to
-Cassandra.
-
-.. toctree::
-   :maxdepth: 2
-
-   installing
-   configuring
-   querying
-   drivers
-
-
diff --git a/src/doc/3.10/_sources/getting_started/installing.txt b/src/doc/3.10/_sources/getting_started/installing.txt
deleted file mode 100644
index e96edd7..0000000
--- a/src/doc/3.10/_sources/getting_started/installing.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Installing Cassandra
---------------------
-
-Prerequisites
-^^^^^^^^^^^^^
-
-- The latest version of Java 8, either the `Oracle Java Standard Edition 8
-  <http://www.oracle.com/technetwork/java/javase/downloads/index.html>`__ or `OpenJDK 8 <http://openjdk.java.net/>`__. To
-  verify that you have the correct version of java installed, type ``java -version``.
-
-- For using cqlsh, the latest version of `Python 2.7 <https://www.python.org/downloads/>`__. To verify that you have
-  the correct version of Python installed, type ``python --version``.
-
-Installation from binary tarball files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- Download the latest stable release from the `Apache Cassandra downloads website <http://cassandra.apache.org/download/>`__.
-
-- Untar the file somewhere, for example:
-
-::
-
-    tar -xvf apache-cassandra-3.6-bin.tar.gz cassandra
-
-The files will be extracted into ``apache-cassandra-3.6``, you need to substitute 3.6 with the release number that you
-have downloaded.
-
-- Optionally add ``apache-cassandra-3.6\bin`` to your path.
-- Start Cassandra in the foreground by invoking ``bin/cassandra -f`` from the command line. Press "Control-C" to stop
-  Cassandra. Start Cassandra in the background by invoking ``bin/cassandra`` from the command line. Invoke ``kill pid``
-  or ``pkill -f CassandraDaemon`` to stop Cassandra, where pid is the Cassandra process id, which you can find for
-  example by invoking ``pgrep -f CassandraDaemon``.
-- Verify that Cassandra is running by invoking ``bin/nodetool status`` from the command line.
-- Configuration files are located in the ``conf`` sub-directory.
-- Since Cassandra 2.1, log and data directories are located in the ``logs`` and ``data`` sub-directories respectively.
-  Older versions defaulted to ``/var/log/cassandra`` and ``/var/lib/cassandra``. Due to this, it is necessary to either
-  start Cassandra with root privileges or change ``conf/cassandra.yaml`` to use directories owned by the current user,
-  as explained below in the section on changing the location of directories.
-
-Installation from Debian packages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- Add the Apache repository of Cassandra to ``/etc/apt/sources.list.d/cassandra.sources.list``, for example for version
-  3.6:
-
-::
-
-    echo "deb http://www.apache.org/dist/cassandra/debian 36x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
-
-- Update the repositories:
-
-::
-
-    sudo apt-get update
-
-- If you encounter this error:
-
-::
-
-    GPG error: http://www.apache.org 36x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 749D6EEC0353B12C
-
-Then add the public key 749D6EEC0353B12C as follows:
-
-::
-
-    gpg --keyserver pgp.mit.edu --recv-keys 749D6EEC0353B12C
-    gpg --export --armor 749D6EEC0353B12C | sudo apt-key add -
-
-and repeat ``sudo apt-get update``. The actual key may be different, you get it from the error message itself. For a
-full list of Apache contributors public keys, you can refer to `this link <https://www.apache.org/dist/cassandra/KEYS>`__.
-
-- Install Cassandra:
-
-::
-
-    sudo apt-get install cassandra
-
-- You can start Cassandra with ``sudo service cassandra start`` and stop it with ``sudo service cassandra stop``.
-  However, normally the service will start automatically. For this reason be sure to stop it if you need to make any
-  configuration changes.
-- Verify that Cassandra is running by invoking ``nodetool status`` from the command line.
-- The default location of configuration files is ``/etc/cassandra``.
-- The default location of log and data directories is ``/var/log/cassandra/`` and ``/var/lib/cassandra``.
diff --git a/src/doc/3.10/_sources/getting_started/querying.txt b/src/doc/3.10/_sources/getting_started/querying.txt
deleted file mode 100644
index 55b162b..0000000
--- a/src/doc/3.10/_sources/getting_started/querying.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Inserting and querying
-----------------------
-
-The API to Cassandra is :ref:`CQL <cql>`, the Cassandra Query Language. To use CQL, you will need to connect to the
-cluster, which can be done:
-
-- either using cqlsh,
-- or through a client driver for Cassandra.
-
-CQLSH
-^^^^^
-
-cqlsh is a command line shell for interacting with Cassandra through CQL. It is shipped with every Cassandra package,
-and can be found in the bin/ directory alongside the cassandra executable. It connects to the single node specified on
-the command line. For example::
-
-    $ bin/cqlsh localhost
-    Connected to Test Cluster at localhost:9042.
-    [cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
-    Use HELP for help.
-    cqlsh> SELECT cluster_name, listen_address FROM system.local;
-
-     cluster_name | listen_address
-    --------------+----------------
-     Test Cluster |      127.0.0.1
-
-    (1 rows)
-    cqlsh>
-
-See the :ref:`cqlsh section <cqlsh>` for full documentation.
-
-Client drivers
-^^^^^^^^^^^^^^
-
-A lot of client drivers are provided by the Community and a list of known drivers is provided in :ref:`the next section
-<client-drivers>`. You should refer to the documentation of each drivers for more information on how to use them.
diff --git a/src/doc/3.10/_sources/index.txt b/src/doc/3.10/_sources/index.txt
deleted file mode 100644
index 562603d..0000000
--- a/src/doc/3.10/_sources/index.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Welcome to Apache Cassandra's documentation!
-============================================
-
-This is the official documentation for `Apache Cassandra <http://cassandra.apache.org>`__ |version|.  If you would like
-to contribute to this documentation, you are welcome to do so by submitting your contribution like any other patch
-following `these instructions <https://wiki.apache.org/cassandra/HowToContribute>`__.
-
-Contents:
-
-.. toctree::
-   :maxdepth: 2
-
-   getting_started/index
-   architecture/index
-   data_modeling/index
-   cql/index
-   configuration/index
-   operating/index
-   tools/index
-   troubleshooting/index
-   development/index
-   faq/index
-
-   bugs
-   contactus
diff --git a/src/doc/3.10/_sources/operating/backups.txt b/src/doc/3.10/_sources/operating/backups.txt
deleted file mode 100644
index c071e83..0000000
--- a/src/doc/3.10/_sources/operating/backups.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Backups
-=======
-
-.. todo:: TODO
diff --git a/src/doc/3.10/_sources/operating/bloom_filters.txt b/src/doc/3.10/_sources/operating/bloom_filters.txt
deleted file mode 100644
index 0b37c18..0000000
--- a/src/doc/3.10/_sources/operating/bloom_filters.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Bloom Filters
--------------
-
-In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
-SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.
-
-Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
-data definitely does not exist in the given file, or - The data probably exists in the given file.
-
-While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
-by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
-the ``bloom_filter_fp_chance`` to a float between 0 and 1.
-
-The default value for ``bloom_filter_fp_chance`` is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
-other cases.
-
-Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
-the maximum heap size.  As accuracy improves (as the ``bloom_filter_fp_chance`` gets closer to 0), memory usage
-increases non-linearly - the bloom filter for ``bloom_filter_fp_chance = 0.01`` will require about three times as much
-memory as the same table with ``bloom_filter_fp_chance = 0.1``.
-
-Typical values for ``bloom_filter_fp_chance`` are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
-Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
-by use case:
-
-- Users with more RAM and slower disks may benefit from setting the ``bloom_filter_fp_chance`` to a numerically lower
-  number (such as 0.01) to avoid excess IO operations
-- Users with less RAM, more dense nodes, or very fast disks may tolerate a higher ``bloom_filter_fp_chance`` in order to
-  save RAM at the expense of excess IO operations
-- In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
-  workloads), setting the ``bloom_filter_fp_chance`` to a much higher number is acceptable.
-
-Changing
-^^^^^^^^
-
-The bloom filter false positive chance is visible in the ``DESCRIBE TABLE`` output as the field
-``bloom_filter_fp_chance``. Operators can change the value with an ``ALTER TABLE`` statement:
-::
-
-    ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
-
-Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
-written, and persisted on disk as the Filter component of the SSTable. Upon issuing an ``ALTER TABLE`` statement, new
-files on disk will be written with the new ``bloom_filter_fp_chance``, but existing sstables will not be modified until
-they are compacted - if an operator needs a change to ``bloom_filter_fp_chance`` to take effect, they can trigger an
-SSTable rewrite using ``nodetool scrub`` or ``nodetool upgradesstables -a``, both of which will rebuild the sstables on
-disk, regenerating the bloom filters in the progress.
diff --git a/src/doc/3.10/_sources/operating/bulk_loading.txt b/src/doc/3.10/_sources/operating/bulk_loading.txt
deleted file mode 100644
index c8224d5..0000000
--- a/src/doc/3.10/_sources/operating/bulk_loading.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-.. _bulk-loading:
-
-Bulk Loading
-------------
-
-.. todo:: TODO
diff --git a/src/doc/3.10/_sources/operating/cdc.txt b/src/doc/3.10/_sources/operating/cdc.txt
deleted file mode 100644
index 192f62a..0000000
--- a/src/doc/3.10/_sources/operating/cdc.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Change Data Capture
--------------------
-
-Overview
-^^^^^^^^
-
-Change data capture (CDC) provides a mechanism to flag specific tables for archival as well as rejecting writes to those
-tables once a configurable size-on-disk for the combined flushed and unflushed CDC-log is reached. An operator can
-enable CDC on a table by setting the table property ``cdc=true`` (either when :ref:`creating the table
-<create-table-statement>` or :ref:`altering it <alter-table-statement>`), after which any CommitLogSegments containing
-data for a CDC-enabled table are moved to the directory specified in ``cassandra.yaml`` on segment discard. A threshold
-of total disk space allowed is specified in the yaml at which time newly allocated CommitLogSegments will not allow CDC
-data until a consumer parses and removes data from the destination archival directory.
-
-Configuration
-^^^^^^^^^^^^^
-
-Enabling or disable CDC on a table
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-CDC is enable or disable through the `cdc` table property, for instance::
-
-    CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
-
-    ALTER TABLE foo WITH cdc=true;
-
-    ALTER TABLE foo WITH cdc=false;
-
-cassandra.yaml parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following `cassandra.yaml` are available for CDC:
-
-``cdc_enabled`` (default: false)
-   Enable or disable CDC operations node-wide.
-``cdc_raw_directory`` (default: ``$CASSANDRA_HOME/data/cdc_raw``)
-   Destination for CommitLogSegments to be moved after all corresponding memtables are flushed.
-``cdc_free_space_in_mb``: (default: min of 4096 and 1/8th volume space)
-   Calculated as sum of all active CommitLogSegments that permit CDC + all flushed CDC segments in
-   ``cdc_raw_directory``.
-``cdc_free_space_check_interval_ms`` (default: 250)
-   When at capacity, we limit the frequency with which we re-calculate the space taken up by ``cdc_raw_directory`` to
-   prevent burning CPU cycles unnecessarily. Default is to check 4 times per second.
-
-.. _reading-commitlogsegments:
-
-Reading CommitLogSegments
-^^^^^^^^^^^^^^^^^^^^^^^^^
-This implementation included a refactor of CommitLogReplayer into `CommitLogReader.java
-<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java>`__.
-Usage is `fairly straightforward
-<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java#L132-L140>`__
-with a `variety of signatures
-<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java#L71-L103>`__
-available for use. In order to handle mutations read from disk, implement `CommitLogReadHandler
-<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReadHandler.java>`__.
-
-Warnings
-^^^^^^^^
-
-**Do not enable CDC without some kind of consumption process in-place.**
-
-The initial implementation of Change Data Capture does not include a parser (see :ref:`reading-commitlogsegments` above)
-so, if CDC is enabled on a node and then on a table, the ``cdc_free_space_in_mb`` will fill up and then writes to
-CDC-enabled tables will be rejected unless some consumption process is in place.
-
-Further Reading
-^^^^^^^^^^^^^^^
-
-- `Design doc <https://docs.google.com/document/d/1ZxCWYkeZTquxsvf5hdPc0fiUnUHna8POvgt6TIzML4Y/edit>`__
-- `JIRA ticket <https://issues.apache.org/jira/browse/CASSANDRA-8844>`__
diff --git a/src/doc/3.10/_sources/operating/compaction.txt b/src/doc/3.10/_sources/operating/compaction.txt
deleted file mode 100644
index b0f97c4..0000000
--- a/src/doc/3.10/_sources/operating/compaction.txt
+++ /dev/null
@@ -1,438 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-.. _compaction:
-
-Compaction
-----------
-
-Types of compaction
-^^^^^^^^^^^^^^^^^^^
-
-The concept of compaction is used for different kinds of operations in Cassandra, the common thing about these
-operations is that it takes one or more sstables and output new sstables. The types of compactions are;
-
-Minor compaction
-    triggered automatically in Cassandra.
-Major compaction
-    a user executes a compaction over all sstables on the node.
-User defined compaction
-    a user triggers a compaction on a given set of sstables.
-Scrub
-    try to fix any broken sstables. This can actually remove valid data if that data is corrupted, if that happens you
-    will need to run a full repair on the node.
-Upgradesstables
-    upgrade sstables to the latest version. Run this after upgrading to a new major version.
-Cleanup
-    remove any ranges this node does not own anymore, typically triggered on neighbouring nodes after a node has been
-    bootstrapped since that node will take ownership of some ranges from those nodes.
-Secondary index rebuild
-    rebuild the secondary indexes on the node.
-Anticompaction
-    after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.
-Sub range compaction
-    It is possible to only compact a given sub range - this could be useful if you know a token that has been
-    misbehaving - either gathering many updates or many deletes. (``nodetool compact -st x -et y``) will pick
-    all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
-    most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
-    the resulting sstable will end up in L0.
-
-When is a minor compaction triggered?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-#  When an sstable is added to the node through flushing/streaming etc.
-#  When autocompaction is enabled after being disabled (``nodetool enableautocompaction``)
-#  When compaction adds new sstables.
-#  A check for new minor compactions every 5 minutes.
-
-Merging sstables
-^^^^^^^^^^^^^^^^
-
-Compaction is about merging sstables, since partitions in sstables are sorted based on the hash of the partition key it
-is possible to efficiently merge separate sstables. Content of each partition is also sorted so each partition can be
-merged efficiently.
-
-Tombstones and Garbage Collection (GC) Grace
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Why Tombstones
-~~~~~~~~~~~~~~
-
-When a delete request is received by Cassandra it does not actually remove the data from the underlying store. Instead
-it writes a special piece of data known as a tombstone. The Tombstone represents the delete and causes all values which
-occurred before the tombstone to not appear in queries to the database. This approach is used instead of removing values
-because of the distributed nature of Cassandra.
-
-Deletes without tombstones
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Imagine a three node cluster which has the value [A] replicated to every node.::
-
-    [A], [A], [A]
-
-If one of the nodes fails and and our delete operation only removes existing values we can end up with a cluster that
-looks like::
-
-    [], [], [A]
-
-Then a repair operation would replace the value of [A] back onto the two
-nodes which are missing the value.::
-
-    [A], [A], [A]
-
-This would cause our data to be resurrected even though it had been
-deleted.
-
-Deletes with Tombstones
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Starting again with a three node cluster which has the value [A] replicated to every node.::
-
-    [A], [A], [A]
-
-If instead of removing data we add a tombstone record, our single node failure situation will look like this.::
-
-    [A, Tombstone[A]], [A, Tombstone[A]], [A]
-
-Now when we issue a repair the Tombstone will be copied to the replica, rather than the deleted data being
-resurrected.::
-
-    [A, Tombstone[A]], [A, Tombstone[A]], [A, Tombstone[A]]
-
-Our repair operation will correctly put the state of the system to what we expect with the record [A] marked as deleted
-on all nodes. This does mean we will end up accruing Tombstones which will permanently accumulate disk space. To avoid
-keeping tombstones forever we have a parameter known as ``gc_grace_seconds`` for every table in Cassandra.
-
-The gc_grace_seconds parameter and Tombstone Removal
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The table level ``gc_grace_seconds`` parameter controls how long Cassandra will retain tombstones through compaction
-events before finally removing them. This duration should directly reflect the amount of time a user expects to allow
-before recovering a failed node. After ``gc_grace_seconds`` has expired the tombstone may be removed (meaning there will
-no longer be any record that a certain piece of data was deleted), but as a tombstone can live in one sstable and the
-data it covers in another, a compaction must also include both sstable for a tombstone to be removed. More precisely, to
-be able to drop an actual tombstone the following needs to be true;
-
-- The tombstone must be older than ``gc_grace_seconds``
-- If partition X contains the tombstone, the sstable containing the partition plus all sstables containing data older
-  than the tombstone containing X must be included in the same compaction. We don't need to care if the partition is in
-  an sstable if we can guarantee that all data in that sstable is newer than the tombstone. If the tombstone is older
-  than the data it cannot shadow that data.
-- If the option ``only_purge_repaired_tombstones`` is enabled, tombstones are only removed if the data has also been
-  repaired.
-
-If a node remains down or disconnected for longer than ``gc_grace_seconds`` it's deleted data will be repaired back to
-the other nodes and re-appear in the cluster. This is basically the same as in the "Deletes without Tombstones" section.
-Note that tombstones will not be removed until a compaction event even if ``gc_grace_seconds`` has elapsed.
-
-The default value for ``gc_grace_seconds`` is 864000 which is equivalent to 10 days. This can be set when creating or
-altering a table using ``WITH gc_grace_seconds``.
-
-TTL
-^^^
-
-Data in Cassandra can have an additional property called time to live - this is used to automatically drop data that has
-expired once the time is reached. Once the TTL has expired the data is converted to a tombstone which stays around for
-at least ``gc_grace_seconds``. Note that if you mix data with TTL and data without TTL (or just different length of the
-TTL) Cassandra will have a hard time dropping the tombstones created since the partition might span many sstables and
-not all are compacted at once.
-
-Fully expired sstables
-^^^^^^^^^^^^^^^^^^^^^^
-
-If an sstable contains only tombstones and it is guaranteed that that sstable is not shadowing data in any other sstable
-compaction can drop that sstable. If you see sstables with only tombstones (note that TTL:ed data is considered
-tombstones once the time to live has expired) but it is not being dropped by compaction, it is likely that other
-sstables contain older data. There is a tool called ``sstableexpiredblockers`` that will list which sstables are
-droppable and which are blocking them from being dropped. This is especially useful for time series compaction with
-``TimeWindowCompactionStrategy`` (and the deprecated ``DateTieredCompactionStrategy``).
-
-Repaired/unrepaired data
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-With incremental repairs Cassandra must keep track of what data is repaired and what data is unrepaired. With
-anticompaction repaired data is split out into repaired and unrepaired sstables. To avoid mixing up the data again
-separate compaction strategy instances are run on the two sets of data, each instance only knowing about either the
-repaired or the unrepaired sstables. This means that if you only run incremental repair once and then never again, you
-might have very old data in the repaired sstables that block compaction from dropping tombstones in the unrepaired
-(probably newer) sstables.
-
-Data directories
-^^^^^^^^^^^^^^^^
-
-Since tombstones and data can live in different sstables it is important to realize that losing an sstable might lead to
-data becoming live again - the most common way of losing sstables is to have a hard drive break down. To avoid making
-data live tombstones and actual data are always in the same data directory. This way, if a disk is lost, all versions of
-a partition are lost and no data can get undeleted. To achieve this a compaction strategy instance per data directory is
-run in addition to the compaction strategy instances containing repaired/unrepaired data, this means that if you have 4
-data directories there will be 8 compaction strategy instances running. This has a few more benefits than just avoiding
-data getting undeleted:
-
-- It is possible to run more compactions in parallel - leveled compaction will have several totally separate levelings
-  and each one can run compactions independently from the others.
-- Users can backup and restore a single data directory.
-- Note though that currently all data directories are considered equal, so if you have a tiny disk and a big disk
-  backing two data directories, the big one will be limited the by the small one. One work around to this is to create
-  more data directories backed by the big disk.
-
-Single sstable tombstone compaction
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When an sstable is written a histogram with the tombstone expiry times is created and this is used to try to find
-sstables with very many tombstones and run single sstable compaction on that sstable in hope of being able to drop
-tombstones in that sstable. Before starting this it is also checked how likely it is that any tombstones will actually
-will be able to be dropped how much this sstable overlaps with other sstables. To avoid most of these checks the
-compaction option ``unchecked_tombstone_compaction`` can be enabled.
-
-.. _compaction-options:
-
-Common options
-^^^^^^^^^^^^^^
-
-There is a number of common options for all the compaction strategies;
-
-``enabled`` (default: true)
-    Whether minor compactions should run. Note that you can have 'enabled': true as a compaction option and then do
-    'nodetool enableautocompaction' to start running compactions.
-``tombstone_threshold`` (default: 0.2)
-    How much of the sstable should be tombstones for us to consider doing a single sstable compaction of that sstable.
-``tombstone_compaction_interval`` (default: 86400s (1 day))
-    Since it might not be possible to drop any tombstones when doing a single sstable compaction we need to make sure
-    that one sstable is not constantly getting recompacted - this option states how often we should try for a given
-    sstable. 
-``log_all`` (default: false)
-    New detailed compaction logging, see :ref:`below <detailed-compaction-logging>`.
-``unchecked_tombstone_compaction`` (default: false)
-    The single sstable compaction has quite strict checks for whether it should be started, this option disables those
-    checks and for some usecases this might be needed.  Note that this does not change anything for the actual
-    compaction, tombstones are only dropped if it is safe to do so - it might just rewrite an sstable without being able
-    to drop any tombstones.
-``only_purge_repaired_tombstone`` (default: false)
-    Option to enable the extra safety of making sure that tombstones are only dropped if the data has been repaired.
-``min_threshold`` (default: 4)
-    Lower limit of number of sstables before a compaction is triggered. Not used for ``LeveledCompactionStrategy``.
-``max_threshold`` (default: 32)
-    Upper limit of number of sstables before a compaction is triggered. Not used for ``LeveledCompactionStrategy``.
-
-Further, see the section on each strategy for specific additional options.
-
-Compaction nodetool commands
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The :ref:`nodetool <nodetool>` utility provides a number of commands related to compaction:
-
-``enableautocompaction``
-    Enable compaction.
-``disableautocompaction``
-    Disable compaction.
-``setcompactionthroughput``
-    How fast compaction should run at most - defaults to 16MB/s, but note that it is likely not possible to reach this
-    throughput.
-``compactionstats``
-    Statistics about current and pending compactions.
-``compactionhistory``
-    List details about the last compactions.
-``setcompactionthreshold``
-    Set the min/max sstable count for when to trigger compaction, defaults to 4/32.
-
-Switching the compaction strategy and options using JMX
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-It is possible to switch compaction strategies and its options on just a single node using JMX, this is a great way to
-experiment with settings without affecting the whole cluster. The mbean is::
-
-    org.apache.cassandra.db:type=ColumnFamilies,keyspace=<keyspace_name>,columnfamily=<table_name>
-
-and the attribute to change is ``CompactionParameters`` or ``CompactionParametersJson`` if you use jconsole or jmc. The
-syntax for the json version is the same as you would use in an :ref:`ALTER TABLE <alter-table-statement>` statement -
-for example::
-
-    { 'class': 'LeveledCompactionStrategy', 'sstable_size_in_mb': 123 }
-
-The setting is kept until someone executes an :ref:`ALTER TABLE <alter-table-statement>` that touches the compaction
-settings or restarts the node.
-
-.. _detailed-compaction-logging:
-
-More detailed compaction logging
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Enable with the compaction option ``log_all`` and a more detailed compaction log file will be produced in your log
-directory.
-
-.. _STCS:
-
-Size Tiered Compaction Strategy
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The basic idea of ``SizeTieredCompactionStrategy`` (STCS) is to merge sstables of approximately the same size. All
-sstables are put in different buckets depending on their size. An sstable is added to the bucket if size of the sstable
-is within ``bucket_low`` and ``bucket_high`` of the current average size of the sstables already in the bucket. This
-will create several buckets and the most interesting of those buckets will be compacted. The most interesting one is
-decided by figuring out which bucket's sstables takes the most reads.
-
-Major compaction
-~~~~~~~~~~~~~~~~
-
-When running a major compaction with STCS you will end up with two sstables per data directory (one for repaired data
-and one for unrepaired data). There is also an option (-s) to do a major compaction that splits the output into several
-sstables. The sizes of the sstables are approximately 50%, 25%, 12.5%... of the total size.
-
-.. _stcs-options:
-
-STCS options
-~~~~~~~~~~~~
-
-``min_sstable_size`` (default: 50MB)
-    Sstables smaller than this are put in the same bucket.
-``bucket_low`` (default: 0.5)
-    How much smaller than the average size of a bucket a sstable should be before not being included in the bucket. That
-    is, if ``bucket_low * avg_bucket_size < sstable_size`` (and the ``bucket_high`` condition holds, see below), then
-    the sstable is added to the bucket.
-``bucket_high`` (default: 1.5)
-    How much bigger than the average size of a bucket a sstable should be before not being included in the bucket. That
-    is, if ``sstable_size < bucket_high * avg_bucket_size`` (and the ``bucket_low`` condition holds, see above), then
-    the sstable is added to the bucket.
-
-Defragmentation
-~~~~~~~~~~~~~~~
-
-Defragmentation is done when many sstables are touched during a read.  The result of the read is put in to the memtable
-so that the next read will not have to touch as many sstables. This can cause writes on a read-only-cluster.
-
-.. _LCS:
-
-Leveled Compaction Strategy
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The idea of ``LeveledCompactionStrategy`` (LCS) is that all sstables are put into different levels where we guarantee
-that no overlapping sstables are in the same level. By overlapping we mean that the first/last token of a single sstable
-are never overlapping with other sstables. This means that for a SELECT we will only have to look for the partition key
-in a single sstable per level. Each level is 10x the size of the previous one and each sstable is 160MB by default. L0
-is where sstables are streamed/flushed - no overlap guarantees are given here.
-
-When picking compaction candidates we have to make sure that the compaction does not create overlap in the target level.
-This is done by always including all overlapping sstables in the next level. For example if we select an sstable in L3,
-we need to guarantee that we pick all overlapping sstables in L4 and make sure that no currently ongoing compactions
-will create overlap if we start that compaction. We can start many parallel compactions in a level if we guarantee that
-we wont create overlap. For L0 -> L1 compactions we almost always need to include all L1 sstables since most L0 sstables
-cover the full range. We also can't compact all L0 sstables with all L1 sstables in a single compaction since that can
-use too much memory.
-
-When deciding which level to compact LCS checks the higher levels first (with LCS, a "higher" level is one with a higher
-number, L0 being the lowest one) and if the level is behind a compaction will be started in that level.
-
-Major compaction
-~~~~~~~~~~~~~~~~
-
-It is possible to do a major compaction with LCS - it will currently start by filling out L1 and then once L1 is full,
-it continues with L2 etc. This is sub optimal and will change to create all the sstables in a high level instead,
-CASSANDRA-11817.
-
-Bootstrapping
-~~~~~~~~~~~~~
-
-During bootstrap sstables are streamed from other nodes. The level of the remote sstable is kept to avoid many
-compactions after the bootstrap is done. During bootstrap the new node also takes writes while it is streaming the data
-from a remote node - these writes are flushed to L0 like all other writes and to avoid those sstables blocking the
-remote sstables from going to the correct level, we only do STCS in L0 until the bootstrap is done.
-
-STCS in L0
-~~~~~~~~~~
-
-If LCS gets very many L0 sstables reads are going to hit all (or most) of the L0 sstables since they are likely to be
-overlapping. To more quickly remedy this LCS does STCS compactions in L0 if there are more than 32 sstables there. This
-should improve read performance more quickly compared to letting LCS do its L0 -> L1 compactions. If you keep getting
-too many sstables in L0 it is likely that LCS is not the best fit for your workload and STCS could work out better.
-
-Starved sstables
-~~~~~~~~~~~~~~~~
-
-If a node ends up with a leveling where there are a few very high level sstables that are not getting compacted they
-might make it impossible for lower levels to drop tombstones etc. For example, if there are sstables in L6 but there is
-only enough data to actually get a L4 on the node the left over sstables in L6 will get starved and not compacted.  This
-can happen if a user changes sstable\_size\_in\_mb from 5MB to 160MB for example. To avoid this LCS tries to include
-those starved high level sstables in other compactions if there has been 25 compaction rounds where the highest level
-has not been involved.
-
-.. _lcs-options:
-
-LCS options
-~~~~~~~~~~~
-
-``sstable_size_in_mb`` (default: 160MB)
-    The target compressed (if using compression) sstable size - the sstables can end up being larger if there are very
-    large partitions on the node.
-
-LCS also support the ``cassandra.disable_stcs_in_l0`` startup option (``-Dcassandra.disable_stcs_in_l0=true``) to avoid
-doing STCS in L0.
-
-.. _TWCS:
-
-Time Window CompactionStrategy
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-``TimeWindowCompactionStrategy`` (TWCS) is designed specifically for workloads where it's beneficial to have data on
-disk grouped by the timestamp of the data, a common goal when the workload is time-series in nature or when all data is
-written with a TTL. In an expiring/TTL workload, the contents of an entire SSTable likely expire at approximately the
-same time, allowing them to be dropped completely, and space reclaimed much more reliably than when using
-``SizeTieredCompactionStrategy`` or ``LeveledCompactionStrategy``. The basic concept is that
-``TimeWindowCompactionStrategy`` will create 1 sstable per file for a given window, where a window is simply calculated
-as the combination of two primary options:
-
-``compaction_window_unit`` (default: DAYS)
-    A Java TimeUnit (MINUTES, HOURS, or DAYS).
-``compaction_window_size`` (default: 1)
-    The number of units that make up a window.
-
-Taken together, the operator can specify windows of virtually any size, and `TimeWindowCompactionStrategy` will work to
-create a single sstable for writes within that window. For efficiency during writing, the newest window will be
-compacted using `SizeTieredCompactionStrategy`.
-
-Ideally, operators should select a ``compaction_window_unit`` and ``compaction_window_size`` pair that produces
-approximately 20-30 windows - if writing with a 90 day TTL, for example, a 3 Day window would be a reasonable choice
-(``'compaction_window_unit':'DAYS','compaction_window_size':3``).
-
-TimeWindowCompactionStrategy Operational Concerns
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The primary motivation for TWCS is to separate data on disk by timestamp and to allow fully expired SSTables to drop
-more efficiently. One potential way this optimal behavior can be subverted is if data is written to SSTables out of
-order, with new data and old data in the same SSTable. Out of order data can appear in two ways:
-
-- If the user mixes old data and new data in the traditional write path, the data will be comingled in the memtables
-  and flushed into the same SSTable, where it will remain comingled.
-- If the user's read requests for old data cause read repairs that pull old data into the current memtable, that data
-  will be comingled and flushed into the same SSTable.
-
-While TWCS tries to minimize the impact of comingled data, users should attempt to avoid this behavior.  Specifically,
-users should avoid queries that explicitly set the timestamp via CQL ``USING TIMESTAMP``. Additionally, users should run
-frequent repairs (which streams data in such a way that it does not become comingled), and disable background read
-repair by setting the table's ``read_repair_chance`` and ``dclocal_read_repair_chance`` to 0.
-
-Changing TimeWindowCompactionStrategy Options
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Operators wishing to enable ``TimeWindowCompactionStrategy`` on existing data should consider running a major compaction
-first, placing all existing data into a single (old) window. Subsequent newer writes will then create typical SSTables
-as expected.
-
-Operators wishing to change ``compaction_window_unit`` or ``compaction_window_size`` can do so, but may trigger
-additional compactions as adjacent windows are joined together. If the window size is decrease d (for example, from 24
-hours to 12 hours), then the existing SSTables will not be modified - TWCS can not split existing SSTables into multiple
-windows.
diff --git a/src/doc/3.10/_sources/operating/compression.txt b/src/doc/3.10/_sources/operating/compression.txt
deleted file mode 100644
index 5876214..0000000
--- a/src/doc/3.10/_sources/operating/compression.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Compression
------------
-
-Cassandra offers operators the ability to configure compression on a per-table basis. Compression reduces the size of
-data on disk by compressing the SSTable in user-configurable compression ``chunk_length_in_kb``. Because Cassandra
-SSTables are immutable, the CPU cost of compressing is only necessary when the SSTable is written - subsequent updates
-to data will land in different SSTables, so Cassandra will not need to decompress, overwrite, and recompress data when
-UPDATE commands are issued. On reads, Cassandra will locate the relevant compressed chunks on disk, decompress the full
-chunk, and then proceed with the remainder of the read path (merging data from disks and memtables, read repair, and so
-on).
-
-Configuring Compression
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Compression is configured on a per-table basis as an optional argument to ``CREATE TABLE`` or ``ALTER TABLE``. By
-default, three options are relevant:
-
-- ``class`` specifies the compression class - Cassandra provides three classes (``LZ4Compressor``,
-  ``SnappyCompressor``, and ``DeflateCompressor`` ). The default is ``SnappyCompressor``.
-- ``chunk_length_in_kb`` specifies the number of kilobytes of data per compression chunk. The default is 64KB.
-- ``crc_check_chance`` determines how likely Cassandra is to verify the checksum on each compression chunk during
-  reads. The default is 1.0.
-
-Users can set compression using the following syntax:
-
-::
-
-    CREATE TABLE keyspace.table (id int PRIMARY KEY) WITH compression = {'class': 'LZ4Compressor'};
-
-Or
-
-::
-
-    ALTER TABLE keyspace.table WITH compression = {'class': 'SnappyCompressor', 'chunk_length_in_kb': 128, 'crc_check_chance': 0.5};
-
-Once enabled, compression can be disabled with ``ALTER TABLE`` setting ``enabled`` to ``false``:
-
-::
-
-    ALTER TABLE keyspace.table WITH compression = {'enabled':'false'};
-
-Operators should be aware, however, that changing compression is not immediate. The data is compressed when the SSTable
-is written, and as SSTables are immutable, the compression will not be modified until the table is compacted. Upon
-issuing a change to the compression options via ``ALTER TABLE``, the existing SSTables will not be modified until they
-are compacted - if an operator needs compression changes to take effect immediately, the operator can trigger an SSTable
-rewrite using ``nodetool scrub`` or ``nodetool upgradesstables -a``, both of which will rebuild the SSTables on disk,
-re-compressing the data in the process.
-
-Benefits and Uses
-^^^^^^^^^^^^^^^^^
-
-Compression's primary benefit is that it reduces the amount of data written to disk. Not only does the reduced size save
-in storage requirements, it often increases read and write throughput, as the CPU overhead of compressing data is faster
-than the time it would take to read or write the larger volume of uncompressed data from disk.
-
-Compression is most useful in tables comprised of many rows, where the rows are similar in nature. Tables containing
-similar text columns (such as repeated JSON blobs) often compress very well.
-
-Operational Impact
-^^^^^^^^^^^^^^^^^^
-
-- Compression metadata is stored off-heap and scales with data on disk.  This often requires 1-3GB of off-heap RAM per
-  terabyte of data on disk, though the exact usage varies with ``chunk_length_in_kb`` and compression ratios.
-
-- Streaming operations involve compressing and decompressing data on compressed tables - in some code paths (such as
-  non-vnode bootstrap), the CPU overhead of compression can be a limiting factor.
-
-- The compression path checksums data to ensure correctness - while the traditional Cassandra read path does not have a
-  way to ensure correctness of data on disk, compressed tables allow the user to set ``crc_check_chance`` (a float from
-  0.0 to 1.0) to allow Cassandra to probabilistically validate chunks on read to verify bits on disk are not corrupt.
-
-Advanced Use
-^^^^^^^^^^^^
-
-Advanced users can provide their own compression class by implementing the interface at
-``org.apache.cassandra.io.compress.ICompressor``.
diff --git a/src/doc/3.10/_sources/operating/hardware.txt b/src/doc/3.10/_sources/operating/hardware.txt
deleted file mode 100644
index ad3aa8d..0000000
--- a/src/doc/3.10/_sources/operating/hardware.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Hardware Choices
-----------------
-
-Like most databases, Cassandra throughput improves with more CPU cores, more RAM, and faster disks. While Cassandra can
-be made to run on small servers for testing or development environments (including Raspberry Pis), a minimal production
-server requires at least 2 cores, and at least 8GB of RAM. Typical production servers have 8 or more cores and at least
-32GB of RAM.
-
-CPU
-^^^
-Cassandra is highly concurrent, handling many simultaneous requests (both read and write) using multiple threads running
-on as many CPU cores as possible. The Cassandra write path tends to be heavily optimized (writing to the commitlog and
-then inserting the data into the memtable), so writes, in particular, tend to be CPU bound. Consequently, adding
-additional CPU cores often increases throughput of both reads and writes.
-
-Memory
-^^^^^^
-Cassandra runs within a Java VM, which will pre-allocate a fixed size heap (java's Xmx system parameter). In addition to
-the heap, Cassandra will use significant amounts of RAM offheap for compression metadata, bloom filters, row, key, and
-counter caches, and an in process page cache. Finally, Cassandra will take advantage of the operating system's page
-cache, storing recently accessed portions files in RAM for rapid re-use.
-
-For optimal performance, operators should benchmark and tune their clusters based on their individual workload. However,
-basic guidelines suggest:
-
--  ECC RAM should always be used, as Cassandra has few internal safeguards to protect against bit level corruption
--  The Cassandra heap should be no less than 2GB, and no more than 50% of your system RAM
--  Heaps smaller than 12GB should consider ParNew/ConcurrentMarkSweep garbage collection
--  Heaps larger than 12GB should consider G1GC
-
-Disks
-^^^^^
-Cassandra persists data to disk for two very different purposes. The first is to the commitlog when a new write is made
-so that it can be replayed after a crash or system shutdown. The second is to the data directory when thresholds are
-exceeded and memtables are flushed to disk as SSTables.
-
-Commitlogs receive every write made to a Cassandra node and have the potential to block client operations, but they are
-only ever read on node start-up. SSTable (data file) writes on the other hand occur asynchronously, but are read to
-satisfy client look-ups. SSTables are also periodically merged and rewritten in a process called compaction.  The data
-held in the commitlog directory is data that has not been permanently saved to the SSTable data directories - it will be
-periodically purged once it is flushed to the SSTable data files.
-
-Cassandra performs very well on both spinning hard drives and solid state disks. In both cases, Cassandra's sorted
-immutable SSTables allow for linear reads, few seeks, and few overwrites, maximizing throughput for HDDs and lifespan of
-SSDs by avoiding write amplification. However, when using spinning disks, it's important that the commitlog
-(``commitlog_directory``) be on one physical disk (not simply a partition, but a physical disk), and the data files
-(``data_file_directories``) be set to a separate physical disk. By separating the commitlog from the data directory,
-writes can benefit from sequential appends to the commitlog without having to seek around the platter as reads request
-data from various SSTables on disk.
-
-In most cases, Cassandra is designed to provide redundancy via multiple independent, inexpensive servers. For this
-reason, using NFS or a SAN for data directories is an antipattern and should typically be avoided.  Similarly, servers
-with multiple disks are often better served by using RAID0 or JBOD than RAID1 or RAID5 - replication provided by
-Cassandra obsoletes the need for replication at the disk layer, so it's typically recommended that operators take
-advantage of the additional throughput of RAID0 rather than protecting against failures with RAID1 or RAID5.
-
-Common Cloud Choices
-^^^^^^^^^^^^^^^^^^^^
-
-Many large users of Cassandra run in various clouds, including AWS, Azure, and GCE - Cassandra will happily run in any
-of these environments. Users should choose similar hardware to what would be needed in physical space. In EC2, popular
-options include:
-
-- m1.xlarge instances, which provide 1.6TB of local ephemeral spinning storage and sufficient RAM to run moderate
-  workloads
-- i2 instances, which provide both a high RAM:CPU ratio and local ephemeral SSDs
-- m4.2xlarge / c4.4xlarge instances, which provide modern CPUs, enhanced networking and work well with EBS GP2 (SSD)
-  storage
-
-Generally, disk and network performance increases with instance size and generation, so newer generations of instances
-and larger instance types within each family often perform better than their smaller or older alternatives.
diff --git a/src/doc/3.10/_sources/operating/hints.txt b/src/doc/3.10/_sources/operating/hints.txt
deleted file mode 100644
index f79f18a..0000000
--- a/src/doc/3.10/_sources/operating/hints.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Hints
------
-
-.. todo:: todo
diff --git a/src/doc/3.10/_sources/operating/index.txt b/src/doc/3.10/_sources/operating/index.txt
deleted file mode 100644
index e2cead2..0000000
--- a/src/doc/3.10/_sources/operating/index.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Operating Cassandra
-===================
-
-.. toctree::
-   :maxdepth: 2
-
-   snitch
-   topo_changes
-   repair
-   read_repair
-   hints
-   compaction
-   bloom_filters
-   compression
-   cdc
-   backups
-   bulk_loading
-   metrics
-   security
-   hardware
-
diff --git a/src/doc/3.10/_sources/operating/metrics.txt b/src/doc/3.10/_sources/operating/metrics.txt
deleted file mode 100644
index 546d9c2..0000000
--- a/src/doc/3.10/_sources/operating/metrics.txt
+++ /dev/null
@@ -1,706 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Monitoring
-----------
-
-Metrics in Cassandra are managed using the `Dropwizard Metrics <http://metrics.dropwizard.io>`__ library. These metrics
-can be queried via JMX or pushed to external monitoring systems using a number of `built in
-<http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting>`__ and `third party
-<http://metrics.dropwizard.io/3.1.0/manual/third-party/>`__ reporter plugins.
-
-Metrics are collected for a single node. It's up to the operator to use an external monitoring system to aggregate them.
-
-Metric Types
-^^^^^^^^^^^^
-All metrics reported by cassandra fit into one of the following types.
-
-``Gauge``
-    An instantaneous measurement of a value.
-
-``Counter``
-    A gauge for an ``AtomicLong`` instance. Typically this is consumed by monitoring the change since the last call to
-    see if there is a large increase compared to the norm.
-
-``Histogram``
-    Measures the statistical distribution of values in a stream of data.
-
-    In addition to minimum, maximum, mean, etc., it also measures median, 75th, 90th, 95th, 98th, 99th, and 99.9th
-    percentiles.
-
-``Timer``
-    Measures both the rate that a particular piece of code is called and the histogram of its duration.
-
-``Latency``
-    Special type that tracks latency (in microseconds) with a ``Timer`` plus a ``Counter`` that tracks the total latency
-    accrued since starting. The former is useful if you track the change in total latency since the last check. Each
-    metric name of this type will have 'Latency' and 'TotalLatency' appended to it.
-
-``Meter``
-    A meter metric which measures mean throughput and one-, five-, and fifteen-minute exponentially-weighted moving
-    average throughputs.
-
-Table Metrics
-^^^^^^^^^^^^^
-
-Each table in Cassandra has metrics responsible for tracking its state and performance.
-
-The metric names are all appended with the specific ``Keyspace`` and ``Table`` name.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.Table.<MetricName>.<Keyspace>.<Table>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Table keyspace=<Keyspace> scope=<Table> name=<MetricName>``
-
-.. NOTE::
-    There is a special table called '``all``' without a keyspace. This represents the aggregation of metrics across
-    **all** tables and keyspaces on the node.
-
-
-======================================= ============== ===========
-Name                                    Type           Description
-======================================= ============== ===========
-MemtableOnHeapSize                      Gauge<Long>    Total amount of data stored in the memtable that resides **on**-heap, including column related overhead and partitions overwritten.
-MemtableOffHeapSize                     Gauge<Long>    Total amount of data stored in the memtable that resides **off**-heap, including column related overhead and partitions overwritten.
-MemtableLiveDataSize                    Gauge<Long>    Total amount of live data stored in the memtable, excluding any data structure overhead.
-AllMemtablesOnHeapSize                  Gauge<Long>    Total amount of data stored in the memtables (2i and pending flush memtables included) that resides **on**-heap.
-AllMemtablesOffHeapSize                 Gauge<Long>    Total amount of data stored in the memtables (2i and pending flush memtables included) that resides **off**-heap.
-AllMemtablesLiveDataSize                Gauge<Long>    Total amount of live data stored in the memtables (2i and pending flush memtables included) that resides off-heap, excluding any data structure overhead.
-MemtableColumnsCount                    Gauge<Long>    Total number of columns present in the memtable.
-MemtableSwitchCount                     Counter        Number of times flush has resulted in the memtable being switched out.
-CompressionRatio                        Gauge<Double>  Current compression ratio for all SSTables.
-EstimatedPartitionSizeHistogram         Gauge<long[]>  Histogram of estimated partition size (in bytes).
-EstimatedPartitionCount                 Gauge<Long>    Approximate number of keys in table.
-EstimatedColumnCountHistogram           Gauge<long[]>  Histogram of estimated number of columns.
-SSTablesPerReadHistogram                Histogram      Histogram of the number of sstable data files accessed per read.
-ReadLatency                             Latency        Local read latency for this table.
-RangeLatency                            Latency        Local range scan latency for this table.
-WriteLatency                            Latency        Local write latency for this table.
-CoordinatorReadLatency                  Timer          Coordinator read latency for this table.
-CoordinatorScanLatency                  Timer          Coordinator range scan latency for this table.
-PendingFlushes                          Counter        Estimated number of flush tasks pending for this table.
-BytesFlushed                            Counter        Total number of bytes flushed since server [re]start.
-CompactionBytesWritten                  Counter        Total number of bytes written by compaction since server [re]start.
-PendingCompactions                      Gauge<Integer> Estimate of number of pending compactions for this table.
-LiveSSTableCount                        Gauge<Integer> Number of SSTables on disk for this table.
-LiveDiskSpaceUsed                       Counter        Disk space used by SSTables belonging to this table (in bytes).
-TotalDiskSpaceUsed                      Counter        Total disk space used by SSTables belonging to this table, including obsolete ones waiting to be GC'd.
-MinPartitionSize                        Gauge<Long>    Size of the smallest compacted partition (in bytes).
-MaxPartitionSize                        Gauge<Long>    Size of the largest compacted partition (in bytes).
-MeanPartitionSize                       Gauge<Long>    Size of the average compacted partition (in bytes).
-BloomFilterFalsePositives               Gauge<Long>    Number of false positives on table's bloom filter.
-BloomFilterFalseRatio                   Gauge<Double>  False positive ratio of table's bloom filter.
-BloomFilterDiskSpaceUsed                Gauge<Long>    Disk space used by bloom filter (in bytes).
-BloomFilterOffHeapMemoryUsed            Gauge<Long>    Off-heap memory used by bloom filter.
-IndexSummaryOffHeapMemoryUsed           Gauge<Long>    Off-heap memory used by index summary.
-CompressionMetadataOffHeapMemoryUsed    Gauge<Long>    Off-heap memory used by compression meta data.
-KeyCacheHitRate                         Gauge<Double>  Key cache hit rate for this table.
-TombstoneScannedHistogram               Histogram      Histogram of tombstones scanned in queries on this table.
-LiveScannedHistogram                    Histogram      Histogram of live cells scanned in queries on this table.
-ColUpdateTimeDeltaHistogram             Histogram      Histogram of column update time delta on this table.
-ViewLockAcquireTime                     Timer          Time taken acquiring a partition lock for materialized view updates on this table.
-ViewReadTime                            Timer          Time taken during the local read of a materialized view update.
-TrueSnapshotsSize                       Gauge<Long>    Disk space used by snapshots of this table including all SSTable components.
-RowCacheHitOutOfRange                   Counter        Number of table row cache hits that do not satisfy the query filter, thus went to disk.
-RowCacheHit                             Counter        Number of table row cache hits.
-RowCacheMiss                            Counter        Number of table row cache misses.
-CasPrepare                              Latency        Latency of paxos prepare round.
-CasPropose                              Latency        Latency of paxos propose round.
-CasCommit                               Latency        Latency of paxos commit round.
-PercentRepaired                         Gauge<Double>  Percent of table data that is repaired on disk.
-SpeculativeRetries                      Counter        Number of times speculative retries were sent for this table.
-WaitingOnFreeMemtableSpace              Histogram      Histogram of time spent waiting for free memtable space, either on- or off-heap.
-DroppedMutations                        Counter        Number of dropped mutations on this table.
-======================================= ============== ===========
-
-Keyspace Metrics
-^^^^^^^^^^^^^^^^
-Each keyspace in Cassandra has metrics responsible for tracking its state and performance.
-
-These metrics are the same as the ``Table Metrics`` above, only they are aggregated at the Keyspace level.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.keyspace.<MetricName>.<Keyspace>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Keyspace scope=<Keyspace> name=<MetricName>``
-
-ThreadPool Metrics
-^^^^^^^^^^^^^^^^^^
-
-Cassandra splits work of a particular type into its own thread pool.  This provides back-pressure and asynchrony for
-requests on a node.  It's important to monitor the state of these thread pools since they can tell you how saturated a
-node is.
-
-The metric names are all appended with the specific ``ThreadPool`` name.  The thread pools are also categorized under a
-specific type.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.ThreadPools.<MetricName>.<Path>.<ThreadPoolName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=ThreadPools scope=<ThreadPoolName> type=<Type> name=<MetricName>``
-
-===================== ============== ===========
-Name                  Type           Description
-===================== ============== ===========
-ActiveTasks           Gauge<Integer> Number of tasks being actively worked on by this pool.
-PendingTasks          Gauge<Integer> Number of queued tasks queued up on this pool.
-CompletedTasks        Counter        Number of tasks completed.
-TotalBlockedTasks     Counter        Number of tasks that were blocked due to queue saturation.
-CurrentlyBlockedTask  Counter        Number of tasks that are currently blocked due to queue saturation but on retry will become unblocked.
-MaxPoolSize           Gauge<Integer> The maximum number of threads in this pool.
-===================== ============== ===========
-
-The following thread pools can be monitored.
-
-============================ ============== ===========
-Name                         Type           Description
-============================ ============== ===========
-Native-Transport-Requests    transport      Handles client CQL requests
-CounterMutationStage         request        Responsible for counter writes
-ViewMutationStage            request        Responsible for materialized view writes
-MutationStage                request        Responsible for all other writes
-ReadRepairStage              request        ReadRepair happens on this thread pool
-ReadStage                    request        Local reads run on this thread pool
-RequestResponseStage         request        Coordinator requests to the cluster run on this thread pool
-AntiEntropyStage             internal       Builds merkle tree for repairs
-CacheCleanupExecutor         internal       Cache maintenance performed on this thread pool
-CompactionExecutor           internal       Compactions are run on these threads
-GossipStage                  internal       Handles gossip requests
-HintsDispatcher              internal       Performs hinted handoff
-InternalResponseStage        internal       Responsible for intra-cluster callbacks
-MemtableFlushWriter          internal       Writes memtables to disk
-MemtablePostFlush            internal       Cleans up commit log after memtable is written to disk
-MemtableReclaimMemory        internal       Memtable recycling
-MigrationStage               internal       Runs schema migrations
-MiscStage                    internal       Misceleneous tasks run here
-PendingRangeCalculator       internal       Calculates token range
-PerDiskMemtableFlushWriter_0 internal       Responsible for writing a spec (there is one of these per disk 0-N)
-Sampler                      internal       Responsible for re-sampling the index summaries of SStables
-SecondaryIndexManagement     internal       Performs updates to secondary indexes
-ValidationExecutor           internal       Performs validation compaction or scrubbing
-============================ ============== ===========
-
-.. |nbsp| unicode:: 0xA0 .. nonbreaking space
-
-Client Request Metrics
-^^^^^^^^^^^^^^^^^^^^^^
-
-Client requests have their own set of metrics that encapsulate the work happening at coordinator level.
-
-Different types of client requests are broken down by ``RequestType``.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.ClientRequest.<MetricName>.<RequestType>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=ClientRequest scope=<RequestType> name=<MetricName>``
-
-
-:RequestType: CASRead
-:Description: Metrics related to transactional read requests.
-:Metrics:
-    ===================== ============== =============================================================
-    Name                  Type           Description
-    ===================== ============== =============================================================
-    Timeouts              Counter        Number of timeouts encountered.
-    Failures              Counter        Number of transaction failures encountered.
-    |nbsp|                Latency        Transaction read latency.
-    Unavailables          Counter        Number of unavailable exceptions encountered.
-    UnfinishedCommit      Counter        Number of transactions that were committed on read.
-    ConditionNotMet       Counter        Number of transaction preconditions did not match current values.
-    ContentionHistogram   Histogram      How many contended reads were encountered
-    ===================== ============== =============================================================
-
-:RequestType: CASWrite
-:Description: Metrics related to transactional write requests.
-:Metrics:
-    ===================== ============== =============================================================
-    Name                  Type           Description
-    ===================== ============== =============================================================
-    Timeouts              Counter        Number of timeouts encountered.
-    Failures              Counter        Number of transaction failures encountered.
-    |nbsp|                Latency        Transaction write latency.
-    UnfinishedCommit      Counter        Number of transactions that were committed on write.
-    ConditionNotMet       Counter        Number of transaction preconditions did not match current values.
-    ContentionHistogram   Histogram      How many contended writes were encountered
-    ===================== ============== =============================================================
-
-
-:RequestType: Read
-:Description: Metrics related to standard read requests.
-:Metrics:
-    ===================== ============== =============================================================
-    Name                  Type           Description
-    ===================== ============== =============================================================
-    Timeouts              Counter        Number of timeouts encountered.
-    Failures              Counter        Number of read failures encountered.
-    |nbsp|                Latency        Read latency.
-    Unavailables          Counter        Number of unavailable exceptions encountered.
-    ===================== ============== =============================================================
-
-:RequestType: RangeSlice
-:Description: Metrics related to token range read requests.
-:Metrics:
-    ===================== ============== =============================================================
-    Name                  Type           Description
-    ===================== ============== =============================================================
-    Timeouts              Counter        Number of timeouts encountered.
-    Failures              Counter        Number of range query failures encountered.
-    |nbsp|                Latency        Range query latency.
-    Unavailables          Counter        Number of unavailable exceptions encountered.
-    ===================== ============== =============================================================
-
-:RequestType: Write
-:Description: Metrics related to regular write requests.
-:Metrics:
-    ===================== ============== =============================================================
-    Name                  Type           Description
-    ===================== ============== =============================================================
-    Timeouts              Counter        Number of timeouts encountered.
-    Failures              Counter        Number of write failures encountered.
-    |nbsp|                Latency        Write latency.
-    Unavailables          Counter        Number of unavailable exceptions encountered.
-    ===================== ============== =============================================================
-
-
-:RequestType: ViewWrite
-:Description: Metrics related to materialized view write wrtes.
-:Metrics:
-    ===================== ============== =============================================================
-    Timeouts              Counter        Number of timeouts encountered.
-    Failures              Counter        Number of transaction failures encountered.
-    Unavailables          Counter        Number of unavailable exceptions encountered.
-    ViewReplicasAttempted Counter        Total number of attempted view replica writes.
-    ViewReplicasSuccess   Counter        Total number of succeded view replica writes.
-    ViewPendingMutations  Gauge<Long>    ViewReplicasAttempted - ViewReplicasSuccess.
-    ViewWriteLatency      Timer          Time between when mutation is applied to base table and when CL.ONE is achieved on view.
-    ===================== ============== =============================================================
-
-Cache Metrics
-^^^^^^^^^^^^^
-
-Cassandra caches have metrics to track the effectivness of the caches. Though the ``Table Metrics`` might be more useful.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.Cache.<MetricName>.<CacheName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Cache scope=<CacheName> name=<MetricName>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-Capacity                   Gauge<Long>    Cache capacity in bytes.
-Entries                    Gauge<Integer> Total number of cache entries.
-FifteenMinuteCacheHitRate  Gauge<Double>  15m cache hit rate.
-FiveMinuteCacheHitRate     Gauge<Double>  5m cache hit rate.
-OneMinuteCacheHitRate      Gauge<Double>  1m cache hit rate.
-HitRate                    Gauge<Double>  All time cache hit rate.
-Hits                       Meter          Total number of cache hits.
-Misses                     Meter          Total number of cache misses.
-MissLatency                Timer          Latency of misses.
-Requests                   Gauge<Long>    Total number of cache requests.
-Size                       Gauge<Long>    Total size of occupied cache, in bytes.
-========================== ============== ===========
-
-The following caches are covered:
-
-============================ ===========
-Name                         Description
-============================ ===========
-CounterCache                 Keeps hot counters in memory for performance.
-ChunkCache                   In process uncompressed page cache.
-KeyCache                     Cache for partition to sstable offsets.
-RowCache                     Cache for rows kept in memory.
-============================ ===========
-
-.. NOTE::
-    Misses and MissLatency are only defined for the ChunkCache
-
-CQL Metrics
-^^^^^^^^^^^
-
-Metrics specific to CQL prepared statement caching.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.CQL.<MetricName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=CQL name=<MetricName>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-PreparedStatementsCount    Gauge<Integer> Number of cached prepared statements.
-PreparedStatementsEvicted  Counter        Number of prepared statements evicted from the prepared statement cache
-PreparedStatementsExecuted Counter        Number of prepared statements executed.
-RegularStatementsExecuted  Counter        Number of **non** prepared statements executed.
-PreparedStatementsRatio    Gauge<Double>  Percentage of statements that are prepared vs unprepared.
-========================== ============== ===========
-
-
-DroppedMessage Metrics
-^^^^^^^^^^^^^^^^^^^^^^
-
-Metrics specific to tracking dropped messages for different types of requests.
-Dropped writes are stored and retried by ``Hinted Handoff``
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.DroppedMessages.<MetricName>.<Type>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=DroppedMetrics scope=<Type> name=<MetricName>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-CrossNodeDroppedLatency    Timer          The dropped latency across nodes.
-InternalDroppedLatency     Timer          The dropped latency within node.
-Dropped                    Meter          Number of dropped messages.
-========================== ============== ===========
-
-The different types of messages tracked are:
-
-============================ ===========
-Name                         Description
-============================ ===========
-BATCH_STORE                  Batchlog write
-BATCH_REMOVE                 Batchlog cleanup (after succesfully applied)
-COUNTER_MUTATION             Counter writes
-HINT                         Hint replay
-MUTATION                     Regular writes
-READ                         Regular reads
-READ_REPAIR                  Read repair
-PAGED_SLICE                  Paged read
-RANGE_SLICE                  Token range read
-REQUEST_RESPONSE             RPC Callbacks
-_TRACE                       Tracing writes
-============================ ===========
-
-Streaming Metrics
-^^^^^^^^^^^^^^^^^
-
-Metrics reported during ``Streaming`` operations, such as repair, bootstrap, rebuild.
-
-These metrics are specific to a peer endpoint, with the source node being the node you are pulling the metrics from.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.Streaming.<MetricName>.<PeerIP>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Streaming scope=<PeerIP> name=<MetricName>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-IncomingBytes              Counter        Number of bytes streamed to this node from the peer.
-OutgoingBytes              Counter        Number of bytes streamed to the peer endpoint from this node.
-========================== ============== ===========
-
-
-Compaction Metrics
-^^^^^^^^^^^^^^^^^^
-
-Metrics specific to ``Compaction`` work.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.Compaction.<MetricName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Compaction name=<MetricName>``
-
-========================== ======================================== ===============================================
-Name                       Type                                     Description
-========================== ======================================== ===============================================
-BytesCompacted             Counter                                  Total number of bytes compacted since server [re]start.
-PendingTasks               Gauge<Integer>                           Estimated number of compactions remaining to perform.
-CompletedTasks             Gauge<Long>                              Number of completed compactions since server [re]start.
-TotalCompactionsCompleted  Meter                                    Throughput of completed compactions since server [re]start.
-PendingTasksByTableName    Gauge<Map<String, Map<String, Integer>>> Estimated number of compactions remaining to perform, grouped by keyspace and then table name. This info is also kept in ``Table Metrics``.
-========================== ======================================== ===============================================
-
-CommitLog Metrics
-^^^^^^^^^^^^^^^^^
-
-Metrics specific to the ``CommitLog``
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.CommitLog.<MetricName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=CommitLog name=<MetricName>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-CompletedTasks             Gauge<Long>    Total number of commit log messages written since [re]start.
-PendingTasks               Gauge<Long>    Number of commit log messages written but yet to be fsync'd.
-TotalCommitLogSize         Gauge<Long>    Current size, in bytes, used by all the commit log segments.
-WaitingOnSegmentAllocation Timer          Time spent waiting for a CommitLogSegment to be allocated - under normal conditions this should be zero.
-WaitingOnCommit            Timer          The time spent waiting on CL fsync; for Periodic this is only occurs when the sync is lagging its sync interval.
-========================== ============== ===========
-
-Storage Metrics
-^^^^^^^^^^^^^^^
-
-Metrics specific to the storage engine.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.Storage.<MetricName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Storage name=<MetricName>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-Exceptions                 Counter        Number of internal exceptions caught. Under normal exceptions this should be zero.
-Load                       Counter        Size, in bytes, of the on disk data size this node manages.
-TotalHints                 Counter        Number of hint messages written to this node since [re]start. Includes one entry for each host to be hinted per hint.
-TotalHintsInProgress       Counter        Number of hints attemping to be sent currently.
-========================== ============== ===========
-
-HintedHandoff Metrics
-^^^^^^^^^^^^^^^^^^^^^
-
-Metrics specific to Hinted Handoff.  There are also some metrics related to hints tracked in ``Storage Metrics``
-
-These metrics include the peer endpoint **in the metric name**
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.HintedHandOffManager.<MetricName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=HintedHandOffManager name=<MetricName>``
-
-=========================== ============== ===========
-Name                        Type           Description
-=========================== ============== ===========
-Hints_created-<PeerIP>       Counter        Number of hints on disk for this peer.
-Hints_not_stored-<PeerIP>    Counter        Number of hints not stored for this peer, due to being down past the configured hint window.
-=========================== ============== ===========
-
-SSTable Index Metrics
-^^^^^^^^^^^^^^^^^^^^^
-
-Metrics specific to the SSTable index metadata.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.Index.<MetricName>.RowIndexEntry``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Index scope=RowIndexEntry name=<MetricName>``
-
-=========================== ============== ===========
-Name                        Type           Description
-=========================== ============== ===========
-IndexedEntrySize            Histogram      Histogram of the on-heap size, in bytes, of the index across all SSTables.
-IndexInfoCount              Histogram      Histogram of the number of on-heap index entries managed across all SSTables.
-IndexInfoGets               Histogram      Histogram of the number index seeks performed per SSTable.
-=========================== ============== ===========
-
-BufferPool Metrics
-^^^^^^^^^^^^^^^^^^
-
-Metrics specific to the internal recycled buffer pool Cassandra manages.  This pool is meant to keep allocations and GC
-lower by recycling on and off heap buffers.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.BufferPool.<MetricName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=BufferPool name=<MetricName>``
-
-=========================== ============== ===========
-Name                        Type           Description
-=========================== ============== ===========
-Size                        Gauge<Long>    Size, in bytes, of the managed buffer pool
-Misses                      Meter           The rate of misses in the pool. The higher this is the more allocations incurred.
-=========================== ============== ===========
-
-
-Client Metrics
-^^^^^^^^^^^^^^
-
-Metrics specifc to client managment.
-
-Reported name format:
-
-**Metric Name**
-    ``org.apache.cassandra.metrics.Client.<MetricName>``
-
-**JMX MBean**
-    ``org.apache.cassandra.metrics:type=Client name=<MetricName>``
-
-=========================== ============== ===========
-Name                        Type           Description
-=========================== ============== ===========
-connectedNativeClients      Counter        Number of clients connected to this nodes native protocol server
-connectedThriftClients      Counter        Number of clients connected to this nodes thrift protocol server
-=========================== ============== ===========
-
-JVM Metrics
-^^^^^^^^^^^
-
-JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using `Metric Reporters`_.
-
-BufferPool
-++++++++++
-
-**Metric Name**
-    ``jvm.buffers.<direct|mapped>.<MetricName>``
-
-**JMX MBean**
-    ``java.nio:type=BufferPool name=<direct|mapped>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-Capacity                   Gauge<Long>    Estimated total capacity of the buffers in this pool
-Count                      Gauge<Long>    Estimated number of buffers in the pool
-Used                       Gauge<Long>    Estimated memory that the Java virtual machine is using for this buffer pool
-========================== ============== ===========
-
-FileDescriptorRatio
-+++++++++++++++++++
-
-**Metric Name**
-    ``jvm.fd.<MetricName>``
-
-**JMX MBean**
-    ``java.lang:type=OperatingSystem name=<OpenFileDescriptorCount|MaxFileDescriptorCount>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-Usage                      Ratio          Ratio of used to total file descriptors
-========================== ============== ===========
-
-GarbageCollector
-++++++++++++++++
-
-**Metric Name**
-    ``jvm.gc.<gc_type>.<MetricName>``
-
-**JMX MBean**
-    ``java.lang:type=GarbageCollector name=<gc_type>``
-
-========================== ============== ===========
-Name                       Type           Description
-========================== ============== ===========
-Count                      Gauge<Long>    Total number of collections that have occurred
-Time                       Gauge<Long>    Approximate accumulated collection elapsed time in milliseconds
-========================== ============== ===========
-
-Memory
-++++++
-
-**Metric Name**
-    ``jvm.memory.<heap/non-heap/total>.<MetricName>``
-
-**JMX MBean**
-    ``java.lang:type=Memory``
-
-========================== ============== ===========
-Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
-Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
-Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
-Usage                      Ratio          Ratio of used to maximum memory
-Used                       Gauge<Long>    Amount of used memory in bytes
-========================== ============== ===========
-
-MemoryPool
-++++++++++
-
-**Metric Name**
-    ``jvm.memory.pools.<memory_pool>.<MetricName>``
-
-**JMX MBean**
-    ``java.lang:type=MemoryPool name=<memory_pool>``
-
-========================== ============== ===========
-Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
-Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
-Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
-Usage                      Ratio          Ratio of used to maximum memory
-Used                       Gauge<Long>    Amount of used memory in bytes
-========================== ============== ===========
-
-JMX
-^^^
-
-Any JMX based client can access metrics from cassandra.
-
-If you wish to access JMX metrics over http it's possible to download `Mx4jTool <http://mx4j.sourceforge.net/>`__ and
-place ``mx4j-tools.jar`` into the classpath.  On startup you will see in the log::
-
-    HttpAdaptor version 3.0.2 started on port 8081
-
-To choose a different port (8081 is the default) or a different listen address (0.0.0.0 is not the default) edit
-``conf/cassandra-env.sh`` and uncomment::
-
-    #MX4J_ADDRESS="-Dmx4jaddress=0.0.0.0"
-
-    #MX4J_PORT="-Dmx4jport=8081"
-
-
-Metric Reporters
-^^^^^^^^^^^^^^^^
-
-As mentioned at the top of this section on monitoring the Cassandra metrics can be exported to a number of monitoring
-system a number of `built in <http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting>`__ and `third party
-<http://metrics.dropwizard.io/3.1.0/manual/third-party/>`__ reporter plugins.
-
-The configuration of these plugins is managed by the `metrics reporter config project
-<https://github.com/addthis/metrics-reporter-config>`__. There is a sample configuration file located at
-``conf/metrics-reporter-config-sample.yaml``.
-
-Once configured, you simply start cassandra with the flag
-``-Dcassandra.metricsReporterConfigFile=metrics-reporter-config.yaml``. The specified .yaml file plus any 3rd party
-reporter jars must all be in Cassandra's classpath.
diff --git a/src/doc/3.10/_sources/operating/read_repair.txt b/src/doc/3.10/_sources/operating/read_repair.txt
deleted file mode 100644
index 0e52bf5..0000000
--- a/src/doc/3.10/_sources/operating/read_repair.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Read repair
------------
-
-.. todo:: todo
diff --git a/src/doc/3.10/_sources/operating/repair.txt b/src/doc/3.10/_sources/operating/repair.txt
deleted file mode 100644
index 97d8ce8..0000000
--- a/src/doc/3.10/_sources/operating/repair.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Repair
-------
-
-.. todo:: todo
diff --git a/src/doc/3.10/_sources/operating/security.txt b/src/doc/3.10/_sources/operating/security.txt
deleted file mode 100644
index dfcd9e6..0000000
--- a/src/doc/3.10/_sources/operating/security.txt
+++ /dev/null
@@ -1,410 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Security
---------
-
-There are three main components to the security features provided by Cassandra:
-
-- TLS/SSL encryption for client and inter-node communication
-- Client authentication
-- Authorization
-
-TLS/SSL Encryption
-^^^^^^^^^^^^^^^^^^
-Cassandra provides secure communication between a client machine and a database cluster and between nodes within a
-cluster. Enabling encryption ensures that data in flight is not compromised and is transferred securely. The options for
-client-to-node and node-to-node encryption are managed separately and may be configured independently.
-
-In both cases, the JVM defaults for supported protocols and cipher suites are used when encryption is enabled. These can
-be overidden using the settings in ``cassandra.yaml``, but this is not recommended unless there are policies in place
-which dictate certain settings or a need to disable vulnerable ciphers or protocols in cases where the JVM cannot be
-updated.
-
-FIPS compliant settings can be configured at the JVM level and should not involve changing encryption settings in
-cassandra.yaml. See `the java document on FIPS <https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html>`__
-for more details.
-
-For information on generating the keystore and truststore files used in SSL communications, see the
-`java documentation on creating keystores <http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore>`__
-
-Inter-node Encryption
-~~~~~~~~~~~~~~~~~~~~~
-
-The settings for managing inter-node encryption are found in ``cassandra.yaml`` in the ``server_encryption_options``
-section. To enable inter-node encryption, change the ``internode_encryption`` setting from its default value of ``none``
-to one value from: ``rack``, ``dc`` or ``all``.
-
-Client to Node Encryption
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The settings for managing client to node encryption are found in ``cassandra.yaml`` in the ``client_encryption_options``
-section. There are two primary toggles here for enabling encryption, ``enabled`` and ``optional``.
-
-- If neither is set to ``true``, client connections are entirely unencrypted.
-- If ``enabled`` is set to ``true`` and ``optional`` is set to ``false``, all client connections must be secured.
-- If both options are set to ``true``, both encrypted and unencrypted connections are supported using the same port.
-  Client connections using encryption with this configuration will be automatically detected and handled by the server.
-
-As an alternative to the ``optional`` setting, separate ports can also be configured for secure and unsecure connections
-where operational requirements demand it. To do so, set ``optional`` to false and use the ``native_transport_port_ssl``
-setting in ``cassandra.yaml`` to specify the port to be used for secure client communication.
-
-.. _operation-roles:
-
-Roles
-^^^^^
-
-Cassandra uses database roles, which may represent either a single user or a group of users, in both authentication and
-permissions management. Role management is an extension point in Cassandra and may be configured using the
-``role_manager`` setting in ``cassandra.yaml``. The default setting uses ``CassandraRoleManager``, an implementation
-which stores role information in the tables of the ``system_auth`` keyspace.
-
-See also the :ref:`CQL documentation on roles <cql-roles>`.
-
-Authentication
-^^^^^^^^^^^^^^
-
-Authentication is pluggable in Cassandra and is configured using the ``authenticator`` setting in ``cassandra.yaml``.
-Cassandra ships with two options included in the default distribution.
-
-By default, Cassandra is configured with ``AllowAllAuthenticator`` which performs no authentication checks and therefore
-requires no credentials. It is used to disable authentication completely. Note that authentication is a necessary
-condition of Cassandra's permissions subsystem, so if authentication is disabled, effectively so are permissions.
-
-The default distribution also includes ``PasswordAuthenticator``, which stores encrypted credentials in a system table.
-This can be used to enable simple username/password authentication.
-
-.. _password-authentication:
-
-Enabling Password Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Before enabling client authentication on the cluster, client applications should be pre-configured with their intended
-credentials. When a connection is initiated, the server will only ask for credentials once authentication is
-enabled, so setting up the client side config in advance is safe. In contrast, as soon as a server has authentication
-enabled, any connection attempt without proper credentials will be rejected which may cause availability problems for
-client applications. Once clients are setup and ready for authentication to be enabled, follow this procedure to enable
-it on the cluster.
-
-Pick a single node in the cluster on which to perform the initial configuration. Ideally, no clients should connect
-to this node during the setup process, so you may want to remove it from client config, block it at the network level
-or possibly add a new temporary node to the cluster for this purpose. On that node, perform the following steps:
-
-1. Open a ``cqlsh`` session and change the replication factor of the ``system_auth`` keyspace. By default, this keyspace
-   uses ``SimpleReplicationStrategy`` and a ``replication_factor`` of 1. It is recommended to change this for any
-   non-trivial deployment to ensure that should nodes become unavailable, login is still possible. Best practice is to
-   configure a replication factor of 3 to 5 per-DC.
-
-::
-
-    ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 3, 'DC2': 3};
-
-2. Edit ``cassandra.yaml`` to change the ``authenticator`` option like so:
-
-::
-
-    authenticator: PasswordAuthenticator
-
-3. Restart the node.
-
-4. Open a new ``cqlsh`` session using the credentials of the default superuser:
-
-::
-
-    cqlsh -u cassandra -p cassandra
-
-5. During login, the credentials for the default superuser are read with a consistency level of ``QUORUM``, whereas
-   those for all other users (including superusers) are read at ``LOCAL_ONE``. In the interests of performance and
-   availability, as well as security, operators should create another superuser and disable the default one. This step
-   is optional, but highly recommended. While logged in as the default superuser, create another superuser role which
-   can be used to bootstrap further configuration.
-
-::
-
-    # create a new superuser
-    CREATE ROLE dba WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = 'super';
-
-6. Start a new cqlsh session, this time logging in as the new_superuser and disable the default superuser.
-
-::
-
-    ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false;
-
-7. Finally, set up the roles and credentials for your application users with :ref:`CREATE ROLE <create-role-statement>`
-   statements.
-
-At the end of these steps, the one node is configured to use password authentication. To roll that out across the
-cluster, repeat steps 2 and 3 on each node in the cluster. Once all nodes have been restarted, authentication will be
-fully enabled throughout the cluster.
-
-Note that using ``PasswordAuthenticator`` also requires the use of :ref:`CassandraRoleManager <operation-roles>`.
-
-See also: :ref:`setting-credentials-for-internal-authentication`, :ref:`CREATE ROLE <create-role-statement>`,
-:ref:`ALTER ROLE <alter-role-statement>`, :ref:`ALTER KEYSPACE <alter-keyspace-statement>` and :ref:`GRANT PERMISSION
-<grant-permission-statement>`,
-
-Authorization
-^^^^^^^^^^^^^
-
-Authorization is pluggable in Cassandra and is configured using the ``authorizer`` setting in ``cassandra.yaml``.
-Cassandra ships with two options included in the default distribution.
-
-By default, Cassandra is configured with ``AllowAllAuthorizer`` which performs no checking and so effectively grants all
-permissions to all roles. This must be used if ``AllowAllAuthenticator`` is the configured authenticator.
-
-The default distribution also includes ``CassandraAuthorizer``, which does implement full permissions management
-functionality and stores its data in Cassandra system tables.
-
-Enabling Internal Authorization
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Permissions are modelled as a whitelist, with the default assumption that a given role has no access to any database
-resources. The implication of this is that once authorization is enabled on a node, all requests will be rejected until
-the required permissions have been granted. For this reason, it is strongly recommended to perform the initial setup on
-a node which is not processing client requests.
-
-The following assumes that authentication has already been enabled via the process outlined in
-:ref:`password-authentication`. Perform these steps to enable internal authorization across the cluster:
-
-1. On the selected node, edit ``cassandra.yaml`` to change the ``authorizer`` option like so:
-
-::
-
-    authorizer: CassandraAuthorizer
-
-2. Restart the node.
-
-3. Open a new ``cqlsh`` session using the credentials of a role with superuser credentials:
-
-::
-
-    cqlsh -u dba -p super
-
-4. Configure the appropriate access privileges for your clients using `GRANT PERMISSION <cql.html#grant-permission>`_
-   statements. On the other nodes, until configuration is updated and the node restarted, this will have no effect so
-   disruption to clients is avoided.
-
-::
-
-    GRANT SELECT ON ks.t1 TO db_user;
-
-5. Once all the necessary permissions have been granted, repeat steps 1 and 2 for each node in turn. As each node
-   restarts and clients reconnect, the enforcement of the granted permissions will begin.
-
-See also: :ref:`GRANT PERMISSION <grant-permission-statement>`, `GRANT ALL <grant-all>` and :ref:`REVOKE PERMISSION
-<revoke-permission-statement>`
-
-Caching
-^^^^^^^
-
-Enabling authentication and authorization places additional load on the cluster by frequently reading from the
-``system_auth`` tables. Furthermore, these reads are in the critical paths of many client operations, and so has the
-potential to severely impact quality of service. To mitigate this, auth data such as credentials, permissions and role
-details are cached for a configurable period. The caching can be configured (and even disabled) from ``cassandra.yaml``
-or using a JMX client. The JMX interface also supports invalidation of the various caches, but any changes made via JMX
-are not persistent and will be re-read from ``cassandra.yaml`` when the node is restarted.
-
-Each cache has 3 options which can be set:
-
-Validity Period
-    Controls the expiration of cache entries. After this period, entries are invalidated and removed from the cache.
-Refresh Rate
-    Controls the rate at which background reads are performed to pick up any changes to the underlying data. While these
-    async refreshes are performed, caches will continue to serve (possibly) stale data. Typically, this will be set to a
-    shorter time than the validity period.
-Max Entries
-    Controls the upper bound on cache size.
-
-The naming for these options in ``cassandra.yaml`` follows the convention:
-
-* ``<type>_validity_in_ms``
-* ``<type>_update_interval_in_ms``
-* ``<type>_cache_max_entries``
-
-Where ``<type>`` is one of ``credentials``, ``permissions``, or ``roles``.
-
-As mentioned, these are also exposed via JMX in the mbeans under the ``org.apache.cassandra.auth`` domain.
-
-JMX access
-^^^^^^^^^^
-
-Access control for JMX clients is configured separately to that for CQL. For both authentication and authorization, two
-providers are available; the first based on standard JMX security and the second which integrates more closely with
-Cassandra's own auth subsystem.
-
-The default settings for Cassandra make JMX accessible only from localhost. To enable remote JMX connections, edit
-``cassandra-env.sh`` (or ``cassandra-env.ps1`` on Windows) to change the ``LOCAL_JMX`` setting to ``yes``. Under the
-standard configuration, when remote JMX connections are enabled, :ref:`standard JMX authentication <standard-jmx-auth>`
-is also switched on.
-
-Note that by default, local-only connections are not subject to authentication, but this can be enabled.
-
-If enabling remote connections, it is recommended to also use :ref:`SSL <jmx-with-ssl>` connections.
-
-Finally, after enabling auth and/or SSL, ensure that tools which use JMX, such as :ref:`nodetool <nodetool>`, are
-correctly configured and working as expected.
-
-.. _standard-jmx-auth:
-
-Standard JMX Auth
-~~~~~~~~~~~~~~~~~
-
-Users permitted to connect to the JMX server are specified in a simple text file. The location of this file is set in
-``cassandra-env.sh`` by the line:
-
-::
-
-    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
-
-Edit the password file to add username/password pairs:
-
-::
-
-    jmx_user jmx_password
-
-Secure the credentials file so that only the user running the Cassandra process can read it :
-
-::
-
-    $ chown cassandra:cassandra /etc/cassandra/jmxremote.password
-    $ chmod 400 /etc/cassandra/jmxremote.password
-
-Optionally, enable access control to limit the scope of what defined users can do via JMX. Note that this is a fairly
-blunt instrument in this context as most operational tools in Cassandra require full read/write access. To configure a
-simple access file, uncomment this line in ``cassandra-env.sh``:
-
-::
-
-    #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"
-
-Then edit the access file to grant your JMX user readwrite permission:
-
-::
-
-    jmx_user readwrite
-
-Cassandra must be restarted to pick up the new settings.
-
-See also : `Using File-Based Password Authentication In JMX
-<http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdenv>`__
-
-
-Cassandra Integrated Auth
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-An alternative to the out-of-the-box JMX auth is to useeCassandra's own authentication and/or authorization providers
-for JMX clients. This is potentially more flexible and secure but it come with one major caveat. Namely that it is not
-available until `after` a node has joined the ring, because the auth subsystem is not fully configured until that point
-However, it is often critical for monitoring purposes to have JMX access particularly during bootstrap. So it is
-recommended, where possible, to use local only JMX auth during bootstrap and then, if remote connectivity is required,
-to switch to integrated auth once the node has joined the ring and initial setup is complete.
-
-With this option, the same database roles used for CQL authentication can be used to control access to JMX, so updates
-can be managed centrally using just ``cqlsh``. Furthermore, fine grained control over exactly which operations are
-permitted on particular MBeans can be acheived via :ref:`GRANT PERMISSION <grant-permission-statement>`.
-
-To enable integrated authentication, edit ``cassandra-env.sh`` to uncomment these lines:
-
-::
-
-    #JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin"
-    #JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config"
-
-And disable the JMX standard auth by commenting this line:
-
-::
-
-    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
-
-To enable integrated authorization, uncomment this line:
-
-::
-
-    #JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy"
-
-Check standard access control is off by ensuring this line is commented out:
-
-::
-
-   #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"
-
-With integrated authentication and authorization enabled, operators can define specific roles and grant them access to
-the particular JMX resources that they need. For example, a role with the necessary permissions to use tools such as
-jconsole or jmc in read-only mode would be defined as:
-
-::
-
-    CREATE ROLE jmx WITH LOGIN = false;
-    GRANT SELECT ON ALL MBEANS TO jmx;
-    GRANT DESCRIBE ON ALL MBEANS TO jmx;
-    GRANT EXECUTE ON MBEAN 'java.lang:type=Threading' TO jmx;
-    GRANT EXECUTE ON MBEAN 'com.sun.management:type=HotSpotDiagnostic' TO jmx;
-
-    # Grant the jmx role to one with login permissions so that it can access the JMX tooling
-    CREATE ROLE ks_user WITH PASSWORD = 'password' AND LOGIN = true AND SUPERUSER = false;
-    GRANT jmx TO ks_user;
-
-Fine grained access control to individual MBeans is also supported:
-
-::
-
-    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=t1' TO ks_user;
-    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=*' TO ks_owner;
-
-This permits the ``ks_user`` role to invoke methods on the MBean representing a single table in ``test_keyspace``, while
-granting the same permission for all table level MBeans in that keyspace to the ``ks_owner`` role.
-
-Adding/removing roles and granting/revoking of permissions is handled dynamically once the initial setup is complete, so
-no further restarts are required if permissions are altered.
-
-See also: :ref:`Permissions <cql-permissions>`.
-
-.. _jmx-with-ssl:
-
-JMX With SSL
-~~~~~~~~~~~~
-
-JMX SSL configuration is controlled by a number of system properties, some of which are optional. To turn on SSL, edit
-the relevant lines in ``cassandra-env.sh`` (or ``cassandra-env.ps1`` on Windows) to uncomment and set the values of these
-properties as required:
-
-``com.sun.management.jmxremote.ssl``
-    set to true to enable SSL
-``com.sun.management.jmxremote.ssl.need.client.auth``
-    set to true to enable validation of client certificates
-``com.sun.management.jmxremote.registry.ssl``
-    enables SSL sockets for the RMI registry from which clients obtain the JMX connector stub
-``com.sun.management.jmxremote.ssl.enabled.protocols``
-    by default, the protocols supported by the JVM will be used, override with a comma-separated list. Note that this is
-    not usually necessary and using the defaults is the preferred option.
-``com.sun.management.jmxremote.ssl.enabled.cipher.suites``
-    by default, the cipher suites supported by the JVM will be used, override with a comma-separated list. Note that
-    this is not usually necessary and using the defaults is the preferred option.
-``javax.net.ssl.keyStore``
-    set the path on the local filesystem of the keystore containing server private keys and public certificates
-``javax.net.ssl.keyStorePassword``
-    set the password of the keystore file
-``javax.net.ssl.trustStore``
-    if validation of client certificates is required, use this property to specify the path of the truststore containing
-    the public certificates of trusted clients
-``javax.net.ssl.trustStorePassword``
-    set the password of the truststore file
-
-See also: `Oracle Java7 Docs <http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdemv>`__,
-`Monitor Java with JMX <https://www.lullabot.com/articles/monitor-java-with-jmx>`__
diff --git a/src/doc/3.10/_sources/operating/snitch.txt b/src/doc/3.10/_sources/operating/snitch.txt
deleted file mode 100644
index faea0b3..0000000
--- a/src/doc/3.10/_sources/operating/snitch.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-Snitch
-------
-
-In cassandra, the snitch has two functions:
-
-- it teaches Cassandra enough about your network topology to route requests efficiently.
-- it allows Cassandra to spread replicas around your cluster to avoid correlated failures. It does this by grouping
-  machines into "datacenters" and "racks."  Cassandra will do its best not to have more than one replica on the same
-  "rack" (which may not actually be a physical location).
-
-Dynamic snitching
-^^^^^^^^^^^^^^^^^
-
-The dynamic snitch monitor read latencies to avoid reading from hosts that have slowed down. The dynamic snitch is
-configured with the following properties on ``cassandra.yaml``:
-
-- ``dynamic_snitch``: whether the dynamic snitch should be enabled or disabled.
-- ``dynamic_snitch_update_interval_in_ms``: controls how often to perform the more expensive part of host score
-  calculation.
-- ``dynamic_snitch_reset_interval_in_ms``: if set greater than zero and read_repair_chance is < 1.0, this will allow
-  'pinning' of replicas to hosts in order to increase cache capacity.
-- ``dynamic_snitch_badness_threshold:``: The badness threshold will control how much worse the pinned host has to be
-  before the dynamic snitch will prefer other replicas over it.  This is expressed as a double which represents a
-  percentage.  Thus, a value of 0.2 means Cassandra would continue to prefer the static snitch values until the pinned
-  host was 20% worse than the fastest.
-
-Snitch classes
-^^^^^^^^^^^^^^
-
-The ``endpoint_snitch`` parameter in ``cassandra.yaml`` should be set to the class the class that implements
-``IEndPointSnitch`` which will be wrapped by the dynamic snitch and decide if two endpoints are in the same data center
-or on the same rack. Out of the box, Cassandra provides the snitch implementations:
-
-GossipingPropertyFileSnitch
-    This should be your go-to snitch for production use. The rack and datacenter for the local node are defined in
-    cassandra-rackdc.properties and propagated to other nodes via gossip. If ``cassandra-topology.properties`` exists,
-    it is used as a fallback, allowing migration from the PropertyFileSnitch.
-
-SimpleSnitch
-    Treats Strategy order as proximity. This can improve cache locality when disabling read repair. Only appropriate for
-    single-datacenter deployments.
-
-PropertyFileSnitch
-    Proximity is determined by rack and data center, which are explicitly configured in
-    ``cassandra-topology.properties``.
-
-Ec2Snitch
-    Appropriate for EC2 deployments in a single Region. Loads Region and Availability Zone information from the EC2 API.
-    The Region is treated as the datacenter, and the Availability Zone as the rack. Only private IPs are used, so this
-    will not work across multiple regions.
-
-Ec2MultiRegionSnitch
-    Uses public IPs as broadcast_address to allow cross-region connectivity (thus, you should set seed addresses to the
-    public IP as well). You will need to open the ``storage_port`` or ``ssl_storage_port`` on the public IP firewall
-    (For intra-Region traffic, Cassandra will switch to the private IP after establishing a connection).
-
-RackInferringSnitch
-    Proximity is determined by rack and data center, which are assumed to correspond to the 3rd and 2nd octet of each
-    node's IP address, respectively.  Unless this happens to match your deployment conventions, this is best used as an
-    example of writing a custom Snitch class and is provided in that spirit.
diff --git a/src/doc/3.10/_sources/operating/topo_changes.txt b/src/doc/3.10/_sources/operating/topo_changes.txt
deleted file mode 100644
index c42708e..0000000
--- a/src/doc/3.10/_sources/operating/topo_changes.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. highlight:: none
-
-.. _topology-changes:
-
-Adding, replacing, moving and removing nodes
---------------------------------------------
-
-Bootstrap
-^^^^^^^^^
-
-Adding new nodes is called "bootstrapping". The ``num_tokens`` parameter will define the amount of virtual nodes
-(tokens) the joining node will be assigned during bootstrap. The tokens define the sections of the ring (token ranges)
-the node will become responsible for.
-
-Token allocation
-~~~~~~~~~~~~~~~~
-
-With the default token allocation algorithm the new node will pick ``num_tokens`` random tokens to become responsible
-for. Since tokens are distributed randomly, load distribution improves with a higher amount of virtual nodes, but it
-also increases token management overhead. The default of 256 virtual nodes should provide a reasonable load balance with
-acceptable overhead.
-
-On 3.0+ a new token allocation algorithm was introduced to allocate tokens based on the load of existing virtual nodes
-for a given keyspace, and thus yield an improved load distribution with a lower number of tokens. To use this approach,
-the new node must be started with the JVM option ``-Dcassandra.allocate_tokens_for_keyspace=<keyspace>``, where
-``<keyspace>`` is the keyspace from which the algorithm can find the load information to optimize token assignment for.
-
-Manual token assignment
-"""""""""""""""""""""""
-
-You may specify a comma-separated list of tokens manually with the ``initial_token`` ``cassandra.yaml`` parameter, and
-if that is specified Cassandra will skip the token allocation process. This may be useful when doing token assignment
-with an external tool or when restoring a node with its previous tokens.
-
-Range streaming
-~~~~~~~~~~~~~~~~
-
-After the tokens are allocated, the joining node will pick current replicas of the token ranges it will become
-responsible for to stream data from. By default it will stream from the primary replica of each token range in order to
-guarantee data in the new node will be consistent with the current state.
-
-In the case of any unavailable replica, the consistent bootstrap process will fail. To override this behavior and
-potentially miss data from an unavailable replica, set the JVM flag ``-Dcassandra.consistent.rangemovement=false``.
-
-Resuming failed/hanged bootstrap
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-On 2.2+, if the bootstrap process fails, it's possible to resume bootstrap from the previous saved state by calling
-``nodetool bootstrap resume``. If for some reason the bootstrap hangs or stalls, it may also be resumed by simply
-restarting the node. In order to cleanup bootstrap state and start fresh, you may set the JVM startup flag
-``-Dcassandra.reset_bootstrap_progress=true``.
-
-On lower versions, when the bootstrap proces fails it is recommended to wipe the node (remove all the data), and restart
-the bootstrap process again.
-
-Manual bootstrapping
-~~~~~~~~~~~~~~~~~~~~
-
-It's possible to skip the bootstrapping process entirely and join the ring straight away by setting the hidden parameter
-``auto_bootstrap: false``. This may be useful when restoring a node from a backup or creating a new data-center.
-
-Removing nodes
-^^^^^^^^^^^^^^
-
-You can take a node out of the cluster with ``nodetool decommission`` to a live node, or ``nodetool removenode`` (to any
-other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and
-replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If
-removenode is used, the data will stream from the remaining replicas.
-
-No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at
-a different token on the ring, it should be removed manually.
-
-Moving nodes
-^^^^^^^^^^^^
-
-When ``num_tokens: 1`` it's possible to move the node position in the ring with ``nodetool move``. Moving is both a
-convenience over and more efficient than decommission + bootstrap. After moving a node, ``nodetool cleanup`` should be
-run to remove any unnecessary data.
-
-Replacing a dead node
-^^^^^^^^^^^^^^^^^^^^^
-
-In order to replace a dead node, start cassandra with the JVM startup flag
-``-Dcassandra.replace_address_first_boot=<dead_node_ip>``. Once this property is enabled the node starts in a hibernate
-state, during which all the other nodes will see this node to be down.
-
-The replacing node will now start to bootstrap the data from the rest of the nodes in the cluster. The main difference
-between normal bootstrapping of a new node is that this new node will not accept any writes during this phase.
-
-Once the bootstrapping is complete the node will be marked "UP", we rely on the hinted handoff's for making this node
-consistent (since we don't accept writes since the start of the bootstrap).
-
-.. Note:: If the replacement process takes longer than ``max_hint_window_in_ms`` you **MUST** run repair to make the
-   replaced node consistent again, since it missed ongoing writes during bootstrapping.
-
-Monitoring progress
-^^^^^^^^^^^^^^^^^^^
-
-Bootstrap, replace, move and remove progress can be monitored using ``nodetool netstats`` which will show the progress
-of the streaming operations.
-
-Cleanup data after range movements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-As a safety measure, Cassandra does not automatically remove data from nodes that "lose" part of their token range due
-to a range movement operation (bootstrap, move, replace). Run ``nodetool cleanup`` on the nodes that lost ranges to the
-joining node when you are satisfied the new node is up and working. If you do not do this the old data will still be
-counted against the load on that node.
diff --git a/src/doc/3.10/_sources/tools/cqlsh.txt b/src/doc/3.10/_sources/tools/cqlsh.txt
deleted file mode 100644
index 45e2db8..0000000
--- a/src/doc/3.10/_sources/tools/cqlsh.txt
+++ /dev/null
@@ -1,455 +0,0 @@
-.. highlight:: none
-
-.. _cqlsh:
-
-cqlsh: the CQL shell
---------------------
-
-cqlsh is a command line shell for interacting with Cassandra through CQL (the Cassandra Query Language).  It is shipped
-with every Cassandra package, and can be found in the bin/ directory alongside the cassandra executable.  cqlsh utilizes
-the Python native protocol driver, and connects to the single node specified on the command line.
-
-
-Compatibility
-^^^^^^^^^^^^^
-
-cqlsh is compatible with Python 2.7.
-
-In general, a given version of cqlsh is only guaranteed to work with the version of Cassandra that it was released with.
-In some cases, cqlsh make work with older or newer versions of Cassandra, but this is not officially supported.
-
-
-Optional Dependencies
-^^^^^^^^^^^^^^^^^^^^^
-
-cqlsh ships with all essential dependencies.  However, there are some optional dependencies that can be installed to
-improve the capabilities of cqlsh.
-
-pytz
-~~~~
-
-By default, cqlsh displays all timestamps with a UTC timezone.  To support display of timestamps with another timezone,
-the `pytz <http://pytz.sourceforge.net/>`__ library must be installed.  See the ``timezone`` option in cqlshrc_ for
-specifying a timezone to use.
-
-cython
-~~~~~~
-
-The performance of cqlsh's ``COPY`` operations can be improved by installing `cython <http://cython.org/>`__.  This will
-compile the python modules that are central to the performance of ``COPY``.
-
-cqlshrc
-^^^^^^^
-
-The ``cqlshrc`` file holds configuration options for cqlsh.  By default this is in the user's home directory at
-``~/.cassandra/cqlsh``, but a custom location can be specified with the ``--cqlshrc`` option.
-
-Example config values and documentation can be found in the ``conf/cqlshrc.sample`` file of a tarball installation.  You
-can also view the latest version of `cqlshrc online <https://github.com/apache/cassandra/blob/trunk/conf/cqlshrc.sample>`__.
-
-
-Command Line Options
-^^^^^^^^^^^^^^^^^^^^
-
-Usage:
-
-``cqlsh [options] [host [port]]``
-
-Options:
-
-``-C`` ``--color``
-  Force color output
-
-``--no-color``
-  Disable color output
-
-``--browser``
-  Specify the browser to use for displaying cqlsh help.  This can be one of the `supported browser names
-  <https://docs.python.org/2/library/webbrowser.html>`__ (e.g. ``firefox``) or a browser path followed by ``%s`` (e.g.
-  ``/usr/bin/google-chrome-stable %s``).
-
-``--ssl``
-  Use SSL when connecting to Cassandra
-
-``-u`` ``--user``
-  Username to authenticate against Cassandra with
-
-``-p`` ``--password``
-  Password to authenticate against Cassandra with, should
-  be used in conjunction with ``--user``
-
-``-k`` ``--keyspace``
-  Keyspace to authenticate to, should be used in conjunction
-  with ``--user``
-
-``-f`` ``--file``
-  Execute commands from the given file, then exit
-
-``--debug``
-  Print additional debugging information
-
-``--encoding``
-  Specify a non-default encoding for output (defaults to UTF-8)
-
-``--cqlshrc``
-  Specify a non-default location for the ``cqlshrc`` file
-
-``-e`` ``--execute``
-  Execute the given statement, then exit
-
-``--connect-timeout``
-  Specify the connection timeout in seconds (defaults to 2s)
-
-``--request-timeout``
-  Specify the request timeout in seconds (defaults to 10s)
-
-``-t`` ``--tty``
-  Force tty mode (command prompt)
-
-
-Special Commands
-^^^^^^^^^^^^^^^^
-
-In addition to supporting regular CQL statements, cqlsh also supports a number of special commands that are not part of
-CQL.  These are detailed below.
-
-``CONSISTENCY``
-~~~~~~~~~~~~~~~
-
-`Usage`: ``CONSISTENCY <consistency level>``
-
-Sets the consistency level for operations to follow.  Valid arguments include:
-
-- ``ANY``
-- ``ONE``
-- ``TWO``
-- ``THREE``
-- ``QUORUM``
-- ``ALL``
-- ``LOCAL_QUORUM``
-- ``LOCAL_ONE``
-- ``SERIAL``
-- ``LOCAL_SERIAL``
-
-``SERIAL CONSISTENCY``
-~~~~~~~~~~~~~~~~~~~~~~
-
-`Usage`: ``SERIAL CONSISTENCY <consistency level>``
-
-Sets the serial consistency level for operations to follow.  Valid arguments include:
-
-- ``SERIAL``
-- ``LOCAL_SERIAL``
-
-The serial consistency level is only used by conditional updates (``INSERT``, ``UPDATE`` and ``DELETE`` with an ``IF``
-condition). For those, the serial consistency level defines the consistency level of the serial phase (or “paxos” phase)
-while the normal consistency level defines the consistency for the “learn” phase, i.e. what type of reads will be
-guaranteed to see the update right away. For example, if a conditional write has a consistency level of ``QUORUM`` (and
-is successful), then a ``QUORUM`` read is guaranteed to see that write. But if the regular consistency level of that
-write is ``ANY``, then only a read with a consistency level of ``SERIAL`` is guaranteed to see it (even a read with
-consistency ``ALL`` is not guaranteed to be enough).
-
-``SHOW VERSION``
-~~~~~~~~~~~~~~~~
-Prints the cqlsh, Cassandra, CQL, and native protocol versions in use.  Example::
-
-    cqlsh> SHOW VERSION
-    [cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
-
-``SHOW HOST``
-~~~~~~~~~~~~~
-
-Prints the IP address and port of the Cassandra node that cqlsh is connected to in addition to the cluster name.
-Example::
-
-    cqlsh> SHOW HOST
-    Connected to Prod_Cluster at 192.0.0.1:9042.
-
-``SHOW SESSION``
-~~~~~~~~~~~~~~~~
-
-Pretty prints a specific tracing session.
-
-`Usage`: ``SHOW SESSION <session id>``
-
-Example usage::
-
-    cqlsh> SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
-
-    Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
-
-     activity                                                  | timestamp                  | source    | source_elapsed | client
-    -----------------------------------------------------------+----------------------------+-----------+----------------+-----------
-                                            Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 |              0 | 127.0.0.1
-     Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 |           3843 | 127.0.0.1
-    ...
-
-
-``SOURCE``
-~~~~~~~~~~
-
-Reads the contents of a file and executes each line as a CQL statement or special cqlsh command.
-
-`Usage`: ``SOURCE <string filename>``
-
-Example usage::
-
-    cqlsh> SOURCE '/home/thobbs/commands.cql'
-
-``CAPTURE``
-~~~~~~~~~~~
-
-Begins capturing command output and appending it to a specified file.  Output will not be shown at the console while it
-is captured.
-
-`Usage`::
-
-    CAPTURE '<file>';
-    CAPTURE OFF;
-    CAPTURE;
-
-That is, the path to the file to be appended to must be given inside a string literal. The path is interpreted relative
-to the current working directory. The tilde shorthand notation (``'~/mydir'``) is supported for referring to ``$HOME``.
-
-Only query result output is captured. Errors and output from cqlsh-only commands will still be shown in the cqlsh
-session.
-
-To stop capturing output and show it in the cqlsh session again, use ``CAPTURE OFF``.
-
-To inspect the current capture configuration, use ``CAPTURE`` with no arguments.
-
-``HELP``
-~~~~~~~~
-
-Gives information about cqlsh commands. To see available topics, enter ``HELP`` without any arguments. To see help on a
-topic, use ``HELP <topic>``.  Also see the ``--browser`` argument for controlling what browser is used to display help.
-
-``TRACING``
-~~~~~~~~~~~
-
-Enables or disables tracing for queries.  When tracing is enabled, once a query completes, a trace of the events during
-the query will be printed.
-
-`Usage`::
-
-    TRACING ON
-    TRACING OFF
-
-``PAGING``
-~~~~~~~~~~
-
-Enables paging, disables paging, or sets the page size for read queries.  When paging is enabled, only one page of data
-will be fetched at a time and a prompt will appear to fetch the next page.  Generally, it's a good idea to leave paging
-enabled in an interactive session to avoid fetching and printing large amounts of data at once.
-
-`Usage`::
-
-    PAGING ON
-    PAGING OFF
-    PAGING <page size in rows>
-
-``EXPAND``
-~~~~~~~~~~
-
-Enables or disables vertical printing of rows.  Enabling ``EXPAND`` is useful when many columns are fetched, or the
-contents of a single column are large.
-
-`Usage`::
-
-    EXPAND ON
-    EXPAND OFF
-
-``LOGIN``
-~~~~~~~~~
-
-Authenticate as a specified Cassandra user for the current session.
-
-`Usage`::
-
-    LOGIN <username> [<password>]
-
-``EXIT``
-~~~~~~~~~
-
-Ends the current session and terminates the cqlsh process.
-
-`Usage`::
-
-    EXIT
-    QUIT
-
-``CLEAR``
-~~~~~~~~~
-
-Clears the console.
-
-`Usage`::
-
-    CLEAR
-    CLS
-
-``DESCRIBE``
-~~~~~~~~~~~~
-
-Prints a description (typically a series of DDL statements) of a schema element or the cluster.  This is useful for
-dumping all or portions of the schema.
-
-`Usage`::
-
-    DESCRIBE CLUSTER
-    DESCRIBE SCHEMA
-    DESCRIBE KEYSPACES
-    DESCRIBE KEYSPACE <keyspace name>
-    DESCRIBE TABLES
-    DESCRIBE TABLE <table name>
-    DESCRIBE INDEX <index name>
-    DESCRIBE MATERIALIZED VIEW <view name>
-    DESCRIBE TYPES
-    DESCRIBE TYPE <type name>
-    DESCRIBE FUNCTIONS
-    DESCRIBE FUNCTION <function name>
-    DESCRIBE AGGREGATES
-    DESCRIBE AGGREGATE <aggregate function name>
-
-In any of the commands, ``DESC`` may be used in place of ``DESCRIBE``.
-
-The ``DESCRIBE CLUSTER`` command prints the cluster name and partitioner::
-
-    cqlsh> DESCRIBE CLUSTER
-
-    Cluster: Test Cluster
-    Partitioner: Murmur3Partitioner
-
-The ``DESCRIBE SCHEMA`` command prints the DDL statements needed to recreate the entire schema.  This is especially
-useful for dumping the schema in order to clone a cluster or restore from a backup.
-
-``COPY TO``
-~~~~~~~~~~~
-
-Copies data from a table to a CSV file.
-
-`Usage`::
-
-    COPY <table name> [(<column>, ...)] TO <file name> WITH <copy option> [AND <copy option> ...]
-
-If no columns are specified, all columns from the table will be copied to the CSV file.  A subset of columns to copy may
-be specified by adding a comma-separated list of column names surrounded by parenthesis after the table name.
-
-
-The ``<file name>`` should be a string literal (with single quotes) representing a path to the destination file.  This
-can also the special value ``STDOUT`` (without single quotes) to print the CSV to stdout.
-
-See :ref:`shared-copy-options` for options that apply to both ``COPY TO`` and ``COPY FROM``.
-
-Options for ``COPY TO``
-```````````````````````
-
-``MAXREQUESTS``
-  The maximum number token ranges to fetch simultaneously. Defaults to 6.
-
-``PAGESIZE``
-  The number of rows to fetch in a single page. Defaults to 1000.
-
-``PAGETIMEOUT``
-  By default the page timeout is 10 seconds per 1000 entries
-  in the page size or 10 seconds if pagesize is smaller.
-
-``BEGINTOKEN``, ``ENDTOKEN``
-  Token range to export.  Defaults to exporting the full ring.
-
-``MAXOUTPUTSIZE``
-  The maximum size of the output file measured in number of lines;
-  beyond this maximum the output file will be split into segments.
-  -1 means unlimited, and is the default.
-
-``ENCODING``
-  The encoding used for characters. Defaults to ``utf8``.
-
-``COPY FROM``
-~~~~~~~~~~~~~
-Copies data from a CSV file to table.
-
-`Usage`::
-
-    COPY <table name> [(<column>, ...)] FROM <file name> WITH <copy option> [AND <copy option> ...]
-
-If no columns are specified, all columns from the CSV file will be copied to the table.  A subset
-of columns to copy may be specified by adding a comma-separated list of column names surrounded
-by parenthesis after the table name.
-
-The ``<file name>`` should be a string literal (with single quotes) representing a path to the
-source file.  This can also the special value ``STDIN`` (without single quotes) to read the
-CSV data from stdin.
-
-See :ref:`shared-copy-options` for options that apply to both ``COPY TO`` and ``COPY FROM``.
-
-Options for ``COPY TO``
-```````````````````````
-
-``INGESTRATE``
-  The maximum number of rows to process per second. Defaults to 100000.
-
-``MAXROWS``
-  The maximum number of rows to import. -1 means unlimited, and is the default.
-
-``SKIPROWS``
-  A number of initial rows to skip.  Defaults to 0.
-
-``SKIPCOLS``
-  A comma-separated list of column names to ignore.  By default, no columns are skipped.
-
-``MAXPARSEERRORS``
-  The maximum global number of parsing errors to ignore. -1 means unlimited, and is the default.
-
-``MAXINSERTERRORS``
-  The maximum global number of insert errors to ignore. -1 means unlimited.  The default is 1000.
-
-``ERRFILE`` =
-  A file to store all rows that could not be imported, by default this is ``import_<ks>_<table>.err`` where ``<ks>`` is
-  your keyspace and ``<table>`` is your table name.
-
-``MAXBATCHSIZE``
-  The max number of rows inserted in a single batch. Defaults to 20.
-
-``MINBATCHSIZE``
-  The min number of rows inserted in a single batch. Defaults to 2.
-
-``CHUNKSIZE``
-  The number of rows that are passed to child worker processes from the main process at a time. Defaults to 1000.
-
-.. _shared-copy-options:
-
-Shared COPY Options
-```````````````````
-
-Options that are common to both ``COPY TO`` and ``COPY FROM``.
-
-``NULLVAL``
-  The string placeholder for null values.  Defaults to ``null``.
-
-``HEADER``
-  For ``COPY TO``, controls whether the first line in the CSV output file will contain the column names.  For COPY FROM,
-  specifies whether the first line in the CSV input file contains column names.  Defaults to ``false``.
-
-``DECIMALSEP``
-  The character that is used as the decimal point separator.  Defaults to ``.``.
-
-``THOUSANDSSEP``
-  The character that is used to separate thousands. Defaults to the empty string.
-
-``BOOLSTYlE``
-  The string literal format for boolean values.  Defaults to ``True,False``.
-
-``NUMPROCESSES``
-  The number of child worker processes to create for ``COPY`` tasks.  Defaults to a max of 4 for ``COPY FROM`` and 16
-  for ``COPY TO``.  However, at most (num_cores - 1) processes will be created.
-
-``MAXATTEMPTS``
-  The maximum number of failed attempts to fetch a range of data (when using ``COPY TO``) or insert a chunk of data
-  (when using ``COPY FROM``) before giving up. Defaults to 5.
-
-``REPORTFREQUENCY``
-  How often status updates are refreshed, in seconds.  Defaults to 0.25.
-
-``RATEFILE``
-  An optional file to output rate statistics to.  By default, statistics are not output to a file.
diff --git a/src/doc/3.10/_sources/tools/index.txt b/src/doc/3.10/_sources/tools/index.txt
deleted file mode 100644
index 5a5e4d5..0000000
--- a/src/doc/3.10/_sources/tools/index.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Cassandra Tools
-===============
-
-This section describes the command line tools provided with Apache Cassandra.
-
-.. toctree::
-   :maxdepth: 1
-
-   cqlsh
-   nodetool
diff --git a/src/doc/3.10/_sources/tools/nodetool.txt b/src/doc/3.10/_sources/tools/nodetool.txt
deleted file mode 100644
index e373031..0000000
--- a/src/doc/3.10/_sources/tools/nodetool.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-.. _nodetool:
-
-Nodetool
---------
-
-.. todo:: Try to autogenerate this from Nodetool’s help.
diff --git a/src/doc/3.10/_sources/troubleshooting/index.txt b/src/doc/3.10/_sources/troubleshooting/index.txt
deleted file mode 100644
index 2e5cf10..0000000
--- a/src/doc/3.10/_sources/troubleshooting/index.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-.. or more contributor license agreements.  See the NOTICE file
-.. distributed with this work for additional information
-.. regarding copyright ownership.  The ASF licenses this file
-.. to you 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.
-
-Troubleshooting
-===============
-
-.. TODO: todo
diff --git a/src/doc/3.10/_static/ajax-loader.gif b/src/doc/3.10/_static/ajax-loader.gif
deleted file mode 100644
index 61faf8c..0000000
--- a/src/doc/3.10/_static/ajax-loader.gif
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/basic.css b/src/doc/3.10/_static/basic.css
deleted file mode 100644
index 2b513f0..0000000
--- a/src/doc/3.10/_static/basic.css
+++ /dev/null
@@ -1,604 +0,0 @@
-/*
- * basic.css
- * ~~~~~~~~~
- *
- * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/* -- main layout ----------------------------------------------------------- */
-
-div.clearer {
-    clear: both;
-}
-
-/* -- relbar ---------------------------------------------------------------- */
-
-div.related {
-    width: 100%;
-    font-size: 90%;
-}
-
-div.related h3 {
-    display: none;
-}
-
-div.related ul {
-    margin: 0;
-    padding: 0 0 0 10px;
-    list-style: none;
-}
-
-div.related li {
-    display: inline;
-}
-
-div.related li.right {
-    float: right;
-    margin-right: 5px;
-}
-
-/* -- sidebar --------------------------------------------------------------- */
-
-div.sphinxsidebarwrapper {
-    padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
-    float: left;
-    width: 230px;
-    margin-left: -100%;
-    font-size: 90%;
-    word-wrap: break-word;
-    overflow-wrap : break-word;
-}
-
-div.sphinxsidebar ul {
-    list-style: none;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
-    margin-left: 20px;
-    list-style: square;
-}
-
-div.sphinxsidebar ul ul {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-div.sphinxsidebar form {
-    margin-top: 10px;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar #searchbox input[type="text"] {
-    width: 170px;
-}
-
-img {
-    border: 0;
-    max-width: 100%;
-}
-
-/* -- search page ----------------------------------------------------------- */
-
-ul.search {
-    margin: 10px 0 0 20px;
-    padding: 0;
-}
-
-ul.search li {
-    padding: 5px 0 5px 20px;
-    background-image: url(file.png);
-    background-repeat: no-repeat;
-    background-position: 0 7px;
-}
-
-ul.search li a {
-    font-weight: bold;
-}
-
-ul.search li div.context {
-    color: #888;
-    margin: 2px 0 0 30px;
-    text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
-    font-weight: bold;
-}
-
-/* -- index page ------------------------------------------------------------ */
-
-table.contentstable {
-    width: 90%;
-}
-
-table.contentstable p.biglink {
-    line-height: 150%;
-}
-
-a.biglink {
-    font-size: 1.3em;
-}
-
-span.linkdescr {
-    font-style: italic;
-    padding-top: 5px;
-    font-size: 90%;
-}
-
-/* -- general index --------------------------------------------------------- */
-
-table.indextable {
-    width: 100%;
-}
-
-table.indextable td {
-    text-align: left;
-    vertical-align: top;
-}
-
-table.indextable dl, table.indextable dd {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-table.indextable tr.pcap {
-    height: 10px;
-}
-
-table.indextable tr.cap {
-    margin-top: 10px;
-    background-color: #f2f2f2;
-}
-
-img.toggler {
-    margin-right: 3px;
-    margin-top: 3px;
-    cursor: pointer;
-}
-
-div.modindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-div.genindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-/* -- general body styles --------------------------------------------------- */
-
-div.body p, div.body dd, div.body li, div.body blockquote {
-    -moz-hyphens: auto;
-    -ms-hyphens: auto;
-    -webkit-hyphens: auto;
-    hyphens: auto;
-}
-
-a.headerlink {
-    visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink,
-caption:hover > a.headerlink,
-p.caption:hover > a.headerlink,
-div.code-block-caption:hover > a.headerlink {
-    visibility: visible;
-}
-
-div.body p.caption {
-    text-align: inherit;
-}
-
-div.body td {
-    text-align: left;
-}
-
-.field-list ul {
-    padding-left: 1em;
-}
-
-.first {
-    margin-top: 0 !important;
-}
-
-p.rubric {
-    margin-top: 30px;
-    font-weight: bold;
-}
-
-img.align-left, .figure.align-left, object.align-left {
-    clear: left;
-    float: left;
-    margin-right: 1em;
-}
-
-img.align-right, .figure.align-right, object.align-right {
-    clear: right;
-    float: right;
-    margin-left: 1em;
-}
-
-img.align-center, .figure.align-center, object.align-center {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.align-left {
-    text-align: left;
-}
-
-.align-center {
-    text-align: center;
-}
-
-.align-right {
-    text-align: right;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar {
-    margin: 0 0 0.5em 1em;
-    border: 1px solid #ddb;
-    padding: 7px 7px 0 7px;
-    background-color: #ffe;
-    width: 40%;
-    float: right;
-}
-
-p.sidebar-title {
-    font-weight: bold;
-}
-
-/* -- topics ---------------------------------------------------------------- */
-
-div.topic {
-    border: 1px solid #ccc;
-    padding: 7px 7px 0 7px;
-    margin: 10px 0 10px 0;
-}
-
-p.topic-title {
-    font-size: 1.1em;
-    font-weight: bold;
-    margin-top: 10px;
-}
-
-/* -- admonitions ----------------------------------------------------------- */
-
-div.admonition {
-    margin-top: 10px;
-    margin-bottom: 10px;
-    padding: 7px;
-}
-
-div.admonition dt {
-    font-weight: bold;
-}
-
-div.admonition dl {
-    margin-bottom: 0;
-}
-
-p.admonition-title {
-    margin: 0px 10px 5px 0px;
-    font-weight: bold;
-}
-
-div.body p.centered {
-    text-align: center;
-    margin-top: 25px;
-}
-
-/* -- tables ---------------------------------------------------------------- */
-
-table.docutils {
-    border: 0;
-    border-collapse: collapse;
-}
-
-table caption span.caption-number {
-    font-style: italic;
-}
-
-table caption span.caption-text {
-}
-
-table.docutils td, table.docutils th {
-    padding: 1px 8px 1px 5px;
-    border-top: 0;
-    border-left: 0;
-    border-right: 0;
-    border-bottom: 1px solid #aaa;
-}
-
-table.field-list td, table.field-list th {
-    border: 0 !important;
-}
-
-table.footnote td, table.footnote th {
-    border: 0 !important;
-}
-
-th {
-    text-align: left;
-    padding-right: 5px;
-}
-
-table.citation {
-    border-left: solid 1px gray;
-    margin-left: 1px;
-}
-
-table.citation td {
-    border-bottom: none;
-}
-
-/* -- figures --------------------------------------------------------------- */
-
-div.figure {
-    margin: 0.5em;
-    padding: 0.5em;
-}
-
-div.figure p.caption {
-    padding: 0.3em;
-}
-
-div.figure p.caption span.caption-number {
-    font-style: italic;
-}
-
-div.figure p.caption span.caption-text {
-}
-
-
-/* -- other body styles ----------------------------------------------------- */
-
-ol.arabic {
-    list-style: decimal;
-}
-
-ol.loweralpha {
-    list-style: lower-alpha;
-}
-
-ol.upperalpha {
-    list-style: upper-alpha;
-}
-
-ol.lowerroman {
-    list-style: lower-roman;
-}
-
-ol.upperroman {
-    list-style: upper-roman;
-}
-
-dl {
-    margin-bottom: 15px;
-}
-
-dd p {
-    margin-top: 0px;
-}
-
-dd ul, dd table {
-    margin-bottom: 10px;
-}
-
-dd {
-    margin-top: 3px;
-    margin-bottom: 10px;
-    margin-left: 30px;
-}
-
-dt:target, .highlighted {
-    background-color: #fbe54e;
-}
-
-dl.glossary dt {
-    font-weight: bold;
-    font-size: 1.1em;
-}
-
-.field-list ul {
-    margin: 0;
-    padding-left: 1em;
-}
-
-.field-list p {
-    margin: 0;
-}
-
-.optional {
-    font-size: 1.3em;
-}
-
-.sig-paren {
-    font-size: larger;
-}
-
-.versionmodified {
-    font-style: italic;
-}
-
-.system-message {
-    background-color: #fda;
-    padding: 5px;
-    border: 3px solid red;
-}
-
-.footnote:target  {
-    background-color: #ffa;
-}
-
-.line-block {
-    display: block;
-    margin-top: 1em;
-    margin-bottom: 1em;
-}
-
-.line-block .line-block {
-    margin-top: 0;
-    margin-bottom: 0;
-    margin-left: 1.5em;
-}
-
-.guilabel, .menuselection {
-    font-family: sans-serif;
-}
-
-.accelerator {
-    text-decoration: underline;
-}
-
-.classifier {
-    font-style: oblique;
-}
-
-abbr, acronym {
-    border-bottom: dotted 1px;
-    cursor: help;
-}
-
-/* -- code displays --------------------------------------------------------- */
-
-pre {
-    overflow: auto;
-    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
-}
-
-td.linenos pre {
-    padding: 5px 0px;
-    border: 0;
-    background-color: transparent;
-    color: #aaa;
-}
-
-table.highlighttable {
-    margin-left: 0.5em;
-}
-
-table.highlighttable td {
-    padding: 0 0.5em 0 0.5em;
-}
-
-div.code-block-caption {
-    padding: 2px 5px;
-    font-size: small;
-}
-
-div.code-block-caption code {
-    background-color: transparent;
-}
-
-div.code-block-caption + div > div.highlight > pre {
-    margin-top: 0;
-}
-
-div.code-block-caption span.caption-number {
-    padding: 0.1em 0.3em;
-    font-style: italic;
-}
-
-div.code-block-caption span.caption-text {
-}
-
-div.literal-block-wrapper {
-    padding: 1em 1em 0;
-}
-
-div.literal-block-wrapper div.highlight {
-    margin: 0;
-}
-
-code.descname {
-    background-color: transparent;
-    font-weight: bold;
-    font-size: 1.2em;
-}
-
-code.descclassname {
-    background-color: transparent;
-}
-
-code.xref, a code {
-    background-color: transparent;
-    font-weight: bold;
-}
-
-h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
-    background-color: transparent;
-}
-
-.viewcode-link {
-    float: right;
-}
-
-.viewcode-back {
-    float: right;
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    margin: -1px -10px;
-    padding: 0 10px;
-}
-
-/* -- math display ---------------------------------------------------------- */
-
-img.math {
-    vertical-align: middle;
-}
-
-div.body div.math p {
-    text-align: center;
-}
-
-span.eqno {
-    float: right;
-}
-
-/* -- printout stylesheet --------------------------------------------------- */
-
-@media print {
-    div.document,
-    div.documentwrapper,
-    div.bodywrapper {
-        margin: 0 !important;
-        width: 100%;
-    }
-
-    div.sphinxsidebar,
-    div.related,
-    div.footer,
-    #top-link {
-        display: none;
-    }
-}
\ No newline at end of file
diff --git a/src/doc/3.10/_static/comment-bright.png b/src/doc/3.10/_static/comment-bright.png
deleted file mode 100644
index 551517b..0000000
--- a/src/doc/3.10/_static/comment-bright.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/comment-close.png b/src/doc/3.10/_static/comment-close.png
deleted file mode 100644
index 09b54be..0000000
--- a/src/doc/3.10/_static/comment-close.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/comment.png b/src/doc/3.10/_static/comment.png
deleted file mode 100644
index 92feb52..0000000
--- a/src/doc/3.10/_static/comment.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/doctools.js b/src/doc/3.10/_static/doctools.js
deleted file mode 100644
index 8614442..0000000
--- a/src/doc/3.10/_static/doctools.js
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * doctools.js
- * ~~~~~~~~~~~
- *
- * Sphinx JavaScript utilities for all documentation.
- *
- * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/**
- * select a different prefix for underscore
- */
-$u = _.noConflict();
-
-/**
- * make the code below compatible with browsers without
- * an installed firebug like debugger
-if (!window.console || !console.firebug) {
-  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
-    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
-    "profile", "profileEnd"];
-  window.console = {};
-  for (var i = 0; i < names.length; ++i)
-    window.console[names[i]] = function() {};
-}
- */
-
-/**
- * small helper function to urldecode strings
- */
-jQuery.urldecode = function(x) {
-  return decodeURIComponent(x).replace(/\+/g, ' ');
-};
-
-/**
- * small helper function to urlencode strings
- */
-jQuery.urlencode = encodeURIComponent;
-
-/**
- * This function returns the parsed url parameters of the
- * current request. Multiple values per key are supported,
- * it will always return arrays of strings for the value parts.
- */
-jQuery.getQueryParameters = function(s) {
-  if (typeof s == 'undefined')
-    s = document.location.search;
-  var parts = s.substr(s.indexOf('?') + 1).split('&');
-  var result = {};
-  for (var i = 0; i < parts.length; i++) {
-    var tmp = parts[i].split('=', 2);
-    var key = jQuery.urldecode(tmp[0]);
-    var value = jQuery.urldecode(tmp[1]);
-    if (key in result)
-      result[key].push(value);
-    else
-      result[key] = [value];
-  }
-  return result;
-};
-
-/**
- * highlight a given string on a jquery object by wrapping it in
- * span elements with the given class name.
- */
-jQuery.fn.highlightText = function(text, className) {
-  function highlight(node) {
-    if (node.nodeType == 3) {
-      var val = node.nodeValue;
-      var pos = val.toLowerCase().indexOf(text);
-      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
-        var span = document.createElement("span");
-        span.className = className;
-        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
-        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
-          document.createTextNode(val.substr(pos + text.length)),
-          node.nextSibling));
-        node.nodeValue = val.substr(0, pos);
-      }
-    }
-    else if (!jQuery(node).is("button, select, textarea")) {
-      jQuery.each(node.childNodes, function() {
-        highlight(this);
-      });
-    }
-  }
-  return this.each(function() {
-    highlight(this);
-  });
-};
-
-/**
- * Small JavaScript module for the documentation.
- */
-var Documentation = {
-
-  init : function() {
-    this.fixFirefoxAnchorBug();
-    this.highlightSearchWords();
-    this.initIndexTable();
-  },
-
-  /**
-   * i18n support
-   */
-  TRANSLATIONS : {},
-  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
-  LOCALE : 'unknown',
-
-  // gettext and ngettext don't access this so that the functions
-  // can safely bound to a different name (_ = Documentation.gettext)
-  gettext : function(string) {
-    var translated = Documentation.TRANSLATIONS[string];
-    if (typeof translated == 'undefined')
-      return string;
-    return (typeof translated == 'string') ? translated : translated[0];
-  },
-
-  ngettext : function(singular, plural, n) {
-    var translated = Documentation.TRANSLATIONS[singular];
-    if (typeof translated == 'undefined')
-      return (n == 1) ? singular : plural;
-    return translated[Documentation.PLURALEXPR(n)];
-  },
-
-  addTranslations : function(catalog) {
-    for (var key in catalog.messages)
-      this.TRANSLATIONS[key] = catalog.messages[key];
-    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
-    this.LOCALE = catalog.locale;
-  },
-
-  /**
-   * add context elements like header anchor links
-   */
-  addContextElements : function() {
-    $('div[id] > :header:first').each(function() {
-      $('<a class="headerlink">\u00B6</a>').
-      attr('href', '#' + this.id).
-      attr('title', _('Permalink to this headline')).
-      appendTo(this);
-    });
-    $('dt[id]').each(function() {
-      $('<a class="headerlink">\u00B6</a>').
-      attr('href', '#' + this.id).
-      attr('title', _('Permalink to this definition')).
-      appendTo(this);
-    });
-  },
-
-  /**
-   * workaround a firefox stupidity
-   */
-  fixFirefoxAnchorBug : function() {
-    if (document.location.hash && $.browser.mozilla)
-      window.setTimeout(function() {
-        document.location.href += '';
-      }, 10);
-  },
-
-  /**
-   * highlight the search words provided in the url in the text
-   */
-  highlightSearchWords : function() {
-    var params = $.getQueryParameters();
-    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
-    if (terms.length) {
-      var body = $('div.body');
-      window.setTimeout(function() {
-        $.each(terms, function() {
-          body.highlightText(this.toLowerCase(), 'highlighted');
-        });
-      }, 10);
-      $('<p class="highlight-link"><a href="javascript:Documentation.' +
-        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
-          .appendTo($('#searchbox'));
-    }
-  },
-
-  /**
-   * init the domain index toggle buttons
-   */
-  initIndexTable : function() {
-    var togglers = $('img.toggler').click(function() {
-      var src = $(this).attr('src');
-      var idnum = $(this).attr('id').substr(7);
-      $('tr.cg-' + idnum).toggle();
-      if (src.substr(-9) == 'minus.png')
-        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
-      else
-        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
-    }).css('display', '');
-    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
-        togglers.click();
-    }
-  },
-
-  /**
-   * helper function to hide the search marks again
-   */
-  hideSearchWords : function() {
-    $('#searchbox .highlight-link').fadeOut(300);
-    $('span.highlighted').removeClass('highlighted');
-  },
-
-  /**
-   * make the url absolute
-   */
-  makeURL : function(relativeURL) {
-    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
-  },
-
-  /**
-   * get the current relative url
-   */
-  getCurrentURL : function() {
-    var path = document.location.pathname;
-    var parts = path.split(/\//);
-    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
-      if (this == '..')
-        parts.pop();
-    });
-    var url = parts.join('/');
-    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
-  }
-};
-
-// quick alias for translations
-_ = Documentation.gettext;
-
-$(document).ready(function() {
-  Documentation.init();
-});
diff --git a/src/doc/3.10/_static/down-pressed.png b/src/doc/3.10/_static/down-pressed.png
deleted file mode 100644
index 7c30d00..0000000
--- a/src/doc/3.10/_static/down-pressed.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/down.png b/src/doc/3.10/_static/down.png
deleted file mode 100644
index f48098a..0000000
--- a/src/doc/3.10/_static/down.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/extra.css b/src/doc/3.10/_static/extra.css
deleted file mode 100644
index fd3573f..0000000
--- a/src/doc/3.10/_static/extra.css
+++ /dev/null
@@ -1,52 +0,0 @@
-div:not(.highlight) > pre {
-    background: #fff;
-    border: 1px solid #e1e4e5;
-    color: #404040;
-    margin: 1px 0 24px 0;
-    overflow-x: auto;
-    padding: 12px 12px;
-    font-size: 12px;
-}
-
-a.reference.internal code.literal {
-    border: none;
-    font-size: 12px;
-    color: #2980B9;
-    padding: 0;
-    background: none;
-}
-
-a.reference.internal:visited code.literal {
-    color: #9B59B6;
-    padding: 0;
-    background: none;
-}
-
-
-/* override table width restrictions */
-.wy-table-responsive table td, .wy-table-responsive table th {
-    white-space: normal;
-}
-
-.wy-table-responsive {
-    margin-bottom: 24px;
-    max-width: 100%;
-    overflow: visible;
-}
-
-table.contentstable {
-    margin: 0;
-}
-
-td.rightcolumn {
-    padding-left: 30px;
-}
-
-div#wipwarning {
-    font-size: 14px;
-    border: 1px solid #ecc;
-    color: #f66;
-    background: #ffe8e8;
-    padding: 10px 30px;
-    margin-bottom: 30px;
-}
diff --git a/src/doc/3.10/_static/file.png b/src/doc/3.10/_static/file.png
deleted file mode 100644
index 254c60b..0000000
--- a/src/doc/3.10/_static/file.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/jquery-1.11.1.js b/src/doc/3.10/_static/jquery-1.11.1.js
deleted file mode 100644
index d4b67f7..0000000
--- a/src/doc/3.10/_static/jquery-1.11.1.js
+++ /dev/null
@@ -1,10308 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.11.1
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-05-01T17:42Z
- */
-
-(function( global, factory ) {
-
-	if ( typeof module === "object" && typeof module.exports === "object" ) {
-		// For CommonJS and CommonJS-like environments where a proper window is present,
-		// execute the factory and get jQuery
-		// For environments that do not inherently posses a window with a document
-		// (such as Node.js), expose a jQuery-making factory as module.exports
-		// This accentuates the need for the creation of a real window
-		// e.g. var jQuery = require("jquery")(window);
-		// See ticket #14549 for more info
-		module.exports = global.document ?
-			factory( global, true ) :
-			function( w ) {
-				if ( !w.document ) {
-					throw new Error( "jQuery requires a window with a document" );
-				}
-				return factory( w );
-			};
-	} else {
-		factory( global );
-	}
-
-// Pass this if window is not defined yet
-}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Can't do this because several apps including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-// Support: Firefox 18+
-//
-
-var deletedIds = [];
-
-var slice = deletedIds.slice;
-
-var concat = deletedIds.concat;
-
-var push = deletedIds.push;
-
-var indexOf = deletedIds.indexOf;
-
-var class2type = {};
-
-var toString = class2type.toString;
-
-var hasOwn = class2type.hasOwnProperty;
-
-var support = {};
-
-
-
-var
-	version = "1.11.1",
-
-	// Define a local copy of jQuery
-	jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		// Need init if jQuery is called (just allow error to be thrown if not included)
-		return new jQuery.fn.init( selector, context );
-	},
-
-	// Support: Android<4.1, IE<9
-	// Make sure we trim BOM and NBSP
-	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-	// Matches dashed string for camelizing
-	rmsPrefix = /^-ms-/,
-	rdashAlpha = /-([\da-z])/gi,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return letter.toUpperCase();
-	};
-
-jQuery.fn = jQuery.prototype = {
-	// The current version of jQuery being used
-	jquery: version,
-
-	constructor: jQuery,
-
-	// Start with an empty selector
-	selector: "",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	toArray: function() {
-		return slice.call( this );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num != null ?
-
-			// Return just the one element from the set
-			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
-
-			// Return all the elements in a clean array
-			slice.call( this );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems ) {
-
-		// Build a new jQuery matched element set
-		var ret = jQuery.merge( this.constructor(), elems );
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-		ret.context = this.context;
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (You can seed the arguments with an array of args, but this is
-	// only used internally.)
-	each: function( callback, args ) {
-		return jQuery.each( this, callback, args );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ) );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	eq: function( i ) {
-		var len = this.length,
-			j = +i + ( i < 0 ? len : 0 );
-		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: deletedIds.sort,
-	splice: deletedIds.splice
-};
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var src, copyIsArray, copy, name, options, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-
-		// skip the boolean and the target
-		target = arguments[ i ] || {};
-		i++;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( i === length ) {
-		target = this;
-		i--;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	// Unique for each copy of jQuery on the page
-	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
-	// Assume jQuery is ready without the ready module
-	isReady: true,
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	noop: function() {},
-
-	// See test/unit/core.js for details concerning isFunction.
-	// Since version 1.3, DOM methods and functions like alert
-	// aren't supported. They return false on IE (#2968).
-	isFunction: function( obj ) {
-		return jQuery.type(obj) === "function";
-	},
-
-	isArray: Array.isArray || function( obj ) {
-		return jQuery.type(obj) === "array";
-	},
-
-	isWindow: function( obj ) {
-		/* jshint eqeqeq: false */
-		return obj != null && obj == obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
-		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
-		// subtraction forces infinities to NaN
-		return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
-	},
-
-	isEmptyObject: function( obj ) {
-		var name;
-		for ( name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	isPlainObject: function( obj ) {
-		var key;
-
-		// Must be an Object.
-		// Because of IE, we also have to check the presence of the constructor property.
-		// Make sure that DOM nodes and window objects don't pass through, as well
-		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		try {
-			// Not own constructor property must be Object
-			if ( obj.constructor &&
-				!hasOwn.call(obj, "constructor") &&
-				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-				return false;
-			}
-		} catch ( e ) {
-			// IE8,9 Will throw exceptions on certain host objects #9897
-			return false;
-		}
-
-		// Support: IE<9
-		// Handle iteration over inherited properties before own properties.
-		if ( support.ownLast ) {
-			for ( key in obj ) {
-				return hasOwn.call( obj, key );
-			}
-		}
-
-		// Own properties are enumerated firstly, so to speed up,
-		// if last one is own, then all properties are own.
-		for ( key in obj ) {}
-
-		return key === undefined || hasOwn.call( obj, key );
-	},
-
-	type: function( obj ) {
-		if ( obj == null ) {
-			return obj + "";
-		}
-		return typeof obj === "object" || typeof obj === "function" ?
-			class2type[ toString.call(obj) ] || "object" :
-			typeof obj;
-	},
-
-	// Evaluates a script in a global context
-	// Workarounds based on findings by Jim Driscoll
-	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-	globalEval: function( data ) {
-		if ( data && jQuery.trim( data ) ) {
-			// We use execScript on Internet Explorer
-			// We use an anonymous function so that context is window
-			// rather than jQuery in Firefox
-			( window.execScript || function( data ) {
-				window[ "eval" ].call( window, data );
-			} )( data );
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// Microsoft forgot to hump their vendor prefix (#9572)
-	camelCase: function( string ) {
-		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-	},
-
-	// args is for internal usage only
-	each: function( obj, callback, args ) {
-		var value,
-			i = 0,
-			length = obj.length,
-			isArray = isArraylike( obj );
-
-		if ( args ) {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return obj;
-	},
-
-	// Support: Android<4.1, IE<9
-	trim: function( text ) {
-		return text == null ?
-			"" :
-			( text + "" ).replace( rtrim, "" );
-	},
-
-	// results is for internal usage only
-	makeArray: function( arr, results ) {
-		var ret = results || [];
-
-		if ( arr != null ) {
-			if ( isArraylike( Object(arr) ) ) {
-				jQuery.merge( ret,
-					typeof arr === "string" ?
-					[ arr ] : arr
-				);
-			} else {
-				push.call( ret, arr );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, arr, i ) {
-		var len;
-
-		if ( arr ) {
-			if ( indexOf ) {
-				return indexOf.call( arr, elem, i );
-			}
-
-			len = arr.length;
-			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-			for ( ; i < len; i++ ) {
-				// Skip accessing in sparse arrays
-				if ( i in arr && arr[ i ] === elem ) {
-					return i;
-				}
-			}
-		}
-
-		return -1;
-	},
-
-	merge: function( first, second ) {
-		var len = +second.length,
-			j = 0,
-			i = first.length;
-
-		while ( j < len ) {
-			first[ i++ ] = second[ j++ ];
-		}
-
-		// Support: IE<9
-		// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
-		if ( len !== len ) {
-			while ( second[j] !== undefined ) {
-				first[ i++ ] = second[ j++ ];
-			}
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, invert ) {
-		var callbackInverse,
-			matches = [],
-			i = 0,
-			length = elems.length,
-			callbackExpect = !invert;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( ; i < length; i++ ) {
-			callbackInverse = !callback( elems[ i ], i );
-			if ( callbackInverse !== callbackExpect ) {
-				matches.push( elems[ i ] );
-			}
-		}
-
-		return matches;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value,
-			i = 0,
-			length = elems.length,
-			isArray = isArraylike( elems ),
-			ret = [];
-
-		// Go through the array, translating each of the items to their new values
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( i in elems ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		var args, proxy, tmp;
-
-		if ( typeof context === "string" ) {
-			tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		args = slice.call( arguments, 2 );
-		proxy = function() {
-			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
-		};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	now: function() {
-		return +( new Date() );
-	},
-
-	// jQuery.support is not used in Core but other projects attach their
-	// properties to it so it needs to exist.
-	support: support
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-	var length = obj.length,
-		type = jQuery.type( obj );
-
-	if ( type === "function" || jQuery.isWindow( obj ) ) {
-		return false;
-	}
-
-	if ( obj.nodeType === 1 && length ) {
-		return true;
-	}
-
-	return type === "array" || length === 0 ||
-		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-}
-var Sizzle =
-/*!
- * Sizzle CSS Selector Engine v1.10.19
- * http://sizzlejs.com/
- *
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-04-18
- */
-(function( window ) {
-
-var i,
-	support,
-	Expr,
-	getText,
-	isXML,
-	tokenize,
-	compile,
-	select,
-	outermostContext,
-	sortInput,
-	hasDuplicate,
-
-	// Local document vars
-	setDocument,
-	document,
-	docElem,
-	documentIsHTML,
-	rbuggyQSA,
-	rbuggyMatches,
-	matches,
-	contains,
-
-	// Instance-specific data
-	expando = "sizzle" + -(new Date()),
-	preferredDoc = window.document,
-	dirruns = 0,
-	done = 0,
-	classCache = createCache(),
-	tokenCache = createCache(),
-	compilerCache = createCache(),
-	sortOrder = function( a, b ) {
-		if ( a === b ) {
-			hasDuplicate = true;
-		}
-		return 0;
-	},
-
-	// General-purpose constants
-	strundefined = typeof undefined,
-	MAX_NEGATIVE = 1 << 31,
-
-	// Instance methods
-	hasOwn = ({}).hasOwnProperty,
-	arr = [],
-	pop = arr.pop,
-	push_native = arr.push,
-	push = arr.push,
-	slice = arr.slice,
-	// Use a stripped-down indexOf if we can't use a native one
-	indexOf = arr.indexOf || function( elem ) {
-		var i = 0,
-			len = this.length;
-		for ( ; i < len; i++ ) {
-			if ( this[i] === elem ) {
-				return i;
-			}
-		}
-		return -1;
-	},
-
-	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-	// Regular expressions
-
-	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
-	whitespace = "[\\x20\\t\\r\\n\\f]",
-	// http://www.w3.org/TR/css3-syntax/#characters
-	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
-	// Loosely modeled on CSS identifier characters
-	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
-	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
-	identifier = characterEncoding.replace( "w", "w#" ),
-
-	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
-	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
-		// Operator (capture 2)
-		"*([*^$|!~]?=)" + whitespace +
-		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
-		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
-		"*\\]",
-
-	pseudos = ":(" + characterEncoding + ")(?:\\((" +
-		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
-		// 1. quoted (capture 3; capture 4 or capture 5)
-		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
-		// 2. simple (capture 6)
-		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
-		// 3. anything else (capture 2)
-		".*" +
-		")\\)|)",
-
-	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
-	rpseudo = new RegExp( pseudos ),
-	ridentifier = new RegExp( "^" + identifier + "$" ),
-
-	matchExpr = {
-		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
-		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-		"ATTR": new RegExp( "^" + attributes ),
-		"PSEUDO": new RegExp( "^" + pseudos ),
-		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-		// For use in libraries implementing .is()
-		// We use this for POS matching in `select`
-		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-	},
-
-	rinputs = /^(?:input|select|textarea|button)$/i,
-	rheader = /^h\d$/i,
-
-	rnative = /^[^{]+\{\s*\[native \w/,
-
-	// Easily-parseable/retrievable ID or TAG or CLASS selectors
-	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-	rsibling = /[+~]/,
-	rescape = /'|\\/g,
-
-	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-	funescape = function( _, escaped, escapedWhitespace ) {
-		var high = "0x" + escaped - 0x10000;
-		// NaN means non-codepoint
-		// Support: Firefox<24
-		// Workaround erroneous numeric interpretation of +"0x"
-		return high !== high || escapedWhitespace ?
-			escaped :
-			high < 0 ?
-				// BMP codepoint
-				String.fromCharCode( high + 0x10000 ) :
-				// Supplemental Plane codepoint (surrogate pair)
-				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-	};
-
-// Optimize for push.apply( _, NodeList )
-try {
-	push.apply(
-		(arr = slice.call( preferredDoc.childNodes )),
-		preferredDoc.childNodes
-	);
-	// Support: Android<4.0
-	// Detect silently failing push.apply
-	arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-	push = { apply: arr.length ?
-
-		// Leverage slice if possible
-		function( target, els ) {
-			push_native.apply( target, slice.call(els) );
-		} :
-
-		// Support: IE<9
-		// Otherwise append directly
-		function( target, els ) {
-			var j = target.length,
-				i = 0;
-			// Can't trust NodeList.length
-			while ( (target[j++] = els[i++]) ) {}
-			target.length = j - 1;
-		}
-	};
-}
-
-function Sizzle( selector, context, results, seed ) {
-	var match, elem, m, nodeType,
-		// QSA vars
-		i, groups, old, nid, newContext, newSelector;
-
-	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-		setDocument( context );
-	}
-
-	context = context || document;
-	results = results || [];
-
-	if ( !selector || typeof selector !== "string" ) {
-		return results;
-	}
-
-	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-		return [];
-	}
-
-	if ( documentIsHTML && !seed ) {
-
-		// Shortcuts
-		if ( (match = rquickExpr.exec( selector )) ) {
-			// Speed-up: Sizzle("#ID")
-			if ( (m = match[1]) ) {
-				if ( nodeType === 9 ) {
-					elem = context.getElementById( m );
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document (jQuery #6963)
-					if ( elem && elem.parentNode ) {
-						// Handle the case where IE, Opera, and Webkit return items
-						// by name instead of ID
-						if ( elem.id === m ) {
-							results.push( elem );
-							return results;
-						}
-					} else {
-						return results;
-					}
-				} else {
-					// Context is not a document
-					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
-						contains( context, elem ) && elem.id === m ) {
-						results.push( elem );
-						return results;
-					}
-				}
-
-			// Speed-up: Sizzle("TAG")
-			} else if ( match[2] ) {
-				push.apply( results, context.getElementsByTagName( selector ) );
-				return results;
-
-			// Speed-up: Sizzle(".CLASS")
-			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-				push.apply( results, context.getElementsByClassName( m ) );
-				return results;
-			}
-		}
-
-		// QSA path
-		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-			nid = old = expando;
-			newContext = context;
-			newSelector = nodeType === 9 && selector;
-
-			// qSA works strangely on Element-rooted queries
-			// We can work around this by specifying an extra ID on the root
-			// and working up from there (Thanks to Andrew Dupont for the technique)
-			// IE 8 doesn't work on object elements
-			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
-				groups = tokenize( selector );
-
-				if ( (old = context.getAttribute("id")) ) {
-					nid = old.replace( rescape, "\\$&" );
-				} else {
-					context.setAttribute( "id", nid );
-				}
-				nid = "[id='" + nid + "'] ";
-
-				i = groups.length;
-				while ( i-- ) {
-					groups[i] = nid + toSelector( groups[i] );
-				}
-				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
-				newSelector = groups.join(",");
-			}
-
-			if ( newSelector ) {
-				try {
-					push.apply( results,
-						newContext.querySelectorAll( newSelector )
-					);
-					return results;
-				} catch(qsaError) {
-				} finally {
-					if ( !old ) {
-						context.removeAttribute("id");
-					}
-				}
-			}
-		}
-	}
-
-	// All others
-	return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *	deleting the oldest entry
- */
-function createCache() {
-	var keys = [];
-
-	function cache( key, value ) {
-		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-		if ( keys.push( key + " " ) > Expr.cacheLength ) {
-			// Only keep the most recent entries
-			delete cache[ keys.shift() ];
-		}
-		return (cache[ key + " " ] = value);
-	}
-	return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-	fn[ expando ] = true;
-	return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-	var div = document.createElement("div");
-
-	try {
-		return !!fn( div );
-	} catch (e) {
-		return false;
-	} finally {
-		// Remove from its parent by default
-		if ( div.parentNode ) {
-			div.parentNode.removeChild( div );
-		}
-		// release memory in IE
-		div = null;
-	}
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-	var arr = attrs.split("|"),
-		i = attrs.length;
-
-	while ( i-- ) {
-		Expr.attrHandle[ arr[i] ] = handler;
-	}
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-	var cur = b && a,
-		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-			( ~b.sourceIndex || MAX_NEGATIVE ) -
-			( ~a.sourceIndex || MAX_NEGATIVE );
-
-	// Use IE sourceIndex if available on both nodes
-	if ( diff ) {
-		return diff;
-	}
-
-	// Check if b follows a
-	if ( cur ) {
-		while ( (cur = cur.nextSibling) ) {
-			if ( cur === b ) {
-				return -1;
-			}
-		}
-	}
-
-	return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return name === "input" && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return (name === "input" || name === "button") && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-	return markFunction(function( argument ) {
-		argument = +argument;
-		return markFunction(function( seed, matches ) {
-			var j,
-				matchIndexes = fn( [], seed.length, argument ),
-				i = matchIndexes.length;
-
-			// Match elements found at the specified indexes
-			while ( i-- ) {
-				if ( seed[ (j = matchIndexes[i]) ] ) {
-					seed[j] = !(matches[j] = seed[j]);
-				}
-			}
-		});
-	});
-}
-
-/**
- * Checks a node for validity as a Sizzle context
- * @param {Element|Object=} context
- * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
- */
-function testContext( context ) {
-	return context && typeof context.getElementsByTagName !== strundefined && context;
-}
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Detects XML nodes
- * @param {Element|Object} elem An element or a document
- * @returns {Boolean} True iff elem is a non-HTML XML node
- */
-isXML = Sizzle.isXML = function( elem ) {
-	// documentElement is verified for cases where it doesn't yet exist
-	// (such as loading iframes in IE - #4833)
-	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-	return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-	var hasCompare,
-		doc = node ? node.ownerDocument || node : preferredDoc,
-		parent = doc.defaultView;
-
-	// If no document and documentElement is available, return
-	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-		return document;
-	}
-
-	// Set our document
-	document = doc;
-	docElem = doc.documentElement;
-
-	// Support tests
-	documentIsHTML = !isXML( doc );
-
-	// Support: IE>8
-	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
-	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-	// IE6-8 do not support the defaultView property so parent will be undefined
-	if ( parent && parent !== parent.top ) {
-		// IE11 does not have attachEvent, so all must suffer
-		if ( parent.addEventListener ) {
-			parent.addEventListener( "unload", function() {
-				setDocument();
-			}, false );
-		} else if ( parent.attachEvent ) {
-			parent.attachEvent( "onunload", function() {
-				setDocument();
-			});
-		}
-	}
-
-	/* Attributes
-	---------------------------------------------------------------------- */
-
-	// Support: IE<8
-	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-	support.attributes = assert(function( div ) {
-		div.className = "i";
-		return !div.getAttribute("className");
-	});
-
-	/* getElement(s)By*
-	---------------------------------------------------------------------- */
-
-	// Check if getElementsByTagName("*") returns only elements
-	support.getElementsByTagName = assert(function( div ) {
-		div.appendChild( doc.createComment("") );
-		return !div.getElementsByTagName("*").length;
-	});
-
-	// Check if getElementsByClassName can be trusted
-	support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
-		div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
-		// Support: Safari<4
-		// Catch class over-caching
-		div.firstChild.className = "i";
-		// Support: Opera<10
-		// Catch gEBCN failure to find non-leading classes
-		return div.getElementsByClassName("i").length === 2;
-	});
-
-	// Support: IE<10
-	// Check if getElementById returns elements by name
-	// The broken getElementById methods don't pick up programatically-set names,
-	// so use a roundabout getElementsByName test
-	support.getById = assert(function( div ) {
-		docElem.appendChild( div ).id = expando;
-		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-	});
-
-	// ID find and filter
-	if ( support.getById ) {
-		Expr.find["ID"] = function( id, context ) {
-			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-				var m = context.getElementById( id );
-				// Check parentNode to catch when Blackberry 4.6 returns
-				// nodes that are no longer in the document #6963
-				return m && m.parentNode ? [ m ] : [];
-			}
-		};
-		Expr.filter["ID"] = function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				return elem.getAttribute("id") === attrId;
-			};
-		};
-	} else {
-		// Support: IE6/7
-		// getElementById is not reliable as a find shortcut
-		delete Expr.find["ID"];
-
-		Expr.filter["ID"] =  function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-				return node && node.value === attrId;
-			};
-		};
-	}
-
-	// Tag
-	Expr.find["TAG"] = support.getElementsByTagName ?
-		function( tag, context ) {
-			if ( typeof context.getElementsByTagName !== strundefined ) {
-				return context.getElementsByTagName( tag );
-			}
-		} :
-		function( tag, context ) {
-			var elem,
-				tmp = [],
-				i = 0,
-				results = context.getElementsByTagName( tag );
-
-			// Filter out possible comments
-			if ( tag === "*" ) {
-				while ( (elem = results[i++]) ) {
-					if ( elem.nodeType === 1 ) {
-						tmp.push( elem );
-					}
-				}
-
-				return tmp;
-			}
-			return results;
-		};
-
-	// Class
-	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-			return context.getElementsByClassName( className );
-		}
-	};
-
-	/* QSA/matchesSelector
-	---------------------------------------------------------------------- */
-
-	// QSA and matchesSelector support
-
-	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-	rbuggyMatches = [];
-
-	// qSa(:focus) reports false when true (Chrome 21)
-	// We allow this because of a bug in IE8/9 that throws an error
-	// whenever `document.activeElement` is accessed on an iframe
-	// So, we allow :focus to pass through QSA all the time to avoid the IE error
-	// See http://bugs.jquery.com/ticket/13378
-	rbuggyQSA = [];
-
-	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-		// Build QSA regex
-		// Regex strategy adopted from Diego Perini
-		assert(function( div ) {
-			// Select is set to empty string on purpose
-			// This is to test IE's treatment of not explicitly
-			// setting a boolean content attribute,
-			// since its presence should be enough
-			// http://bugs.jquery.com/ticket/12359
-			div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
-
-			// Support: IE8, Opera 11-12.16
-			// Nothing should be selected when empty strings follow ^= or $= or *=
-			// The test attribute must be unknown in Opera but "safe" for WinRT
-			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
-			if ( div.querySelectorAll("[msallowclip^='']").length ) {
-				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-			}
-
-			// Support: IE8
-			// Boolean attributes and "value" are not treated correctly
-			if ( !div.querySelectorAll("[selected]").length ) {
-				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-			}
-
-			// Webkit/Opera - :checked should return selected option elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":checked").length ) {
-				rbuggyQSA.push(":checked");
-			}
-		});
-
-		assert(function( div ) {
-			// Support: Windows 8 Native Apps
-			// The type and name attributes are restricted during .innerHTML assignment
-			var input = doc.createElement("input");
-			input.setAttribute( "type", "hidden" );
-			div.appendChild( input ).setAttribute( "name", "D" );
-
-			// Support: IE8
-			// Enforce case-sensitivity of name attribute
-			if ( div.querySelectorAll("[name=d]").length ) {
-				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
-			}
-
-			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":enabled").length ) {
-				rbuggyQSA.push( ":enabled", ":disabled" );
-			}
-
-			// Opera 10-11 does not throw on post-comma invalid pseudos
-			div.querySelectorAll("*,:x");
-			rbuggyQSA.push(",.*:");
-		});
-	}
-
-	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
-		docElem.webkitMatchesSelector ||
-		docElem.mozMatchesSelector ||
-		docElem.oMatchesSelector ||
-		docElem.msMatchesSelector) )) ) {
-
-		assert(function( div ) {
-			// Check to see if it's possible to do matchesSelector
-			// on a disconnected node (IE 9)
-			support.disconnectedMatch = matches.call( div, "div" );
-
-			// This should fail with an exception
-			// Gecko does not error, returns false instead
-			matches.call( div, "[s!='']:x" );
-			rbuggyMatches.push( "!=", pseudos );
-		});
-	}
-
-	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-	/* Contains
-	---------------------------------------------------------------------- */
-	hasCompare = rnative.test( docElem.compareDocumentPosition );
-
-	// Element contains another
-	// Purposefully does not implement inclusive descendent
-	// As in, an element does not contain itself
-	contains = hasCompare || rnative.test( docElem.contains ) ?
-		function( a, b ) {
-			var adown = a.nodeType === 9 ? a.documentElement : a,
-				bup = b && b.parentNode;
-			return a === bup || !!( bup && bup.nodeType === 1 && (
-				adown.contains ?
-					adown.contains( bup ) :
-					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-			));
-		} :
-		function( a, b ) {
-			if ( b ) {
-				while ( (b = b.parentNode) ) {
-					if ( b === a ) {
-						return true;
-					}
-				}
-			}
-			return false;
-		};
-
-	/* Sorting
-	---------------------------------------------------------------------- */
-
-	// Document order sorting
-	sortOrder = hasCompare ?
-	function( a, b ) {
-
-		// Flag for duplicate removal
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		// Sort on method existence if only one input has compareDocumentPosition
-		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
-		if ( compare ) {
-			return compare;
-		}
-
-		// Calculate position if both inputs belong to the same document
-		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
-			a.compareDocumentPosition( b ) :
-
-			// Otherwise we know they are disconnected
-			1;
-
-		// Disconnected nodes
-		if ( compare & 1 ||
-			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-			// Choose the first element that is related to our preferred document
-			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
-				return -1;
-			}
-			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
-				return 1;
-			}
-
-			// Maintain original order
-			return sortInput ?
-				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-				0;
-		}
-
-		return compare & 4 ? -1 : 1;
-	} :
-	function( a, b ) {
-		// Exit early if the nodes are identical
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		var cur,
-			i = 0,
-			aup = a.parentNode,
-			bup = b.parentNode,
-			ap = [ a ],
-			bp = [ b ];
-
-		// Parentless nodes are either documents or disconnected
-		if ( !aup || !bup ) {
-			return a === doc ? -1 :
-				b === doc ? 1 :
-				aup ? -1 :
-				bup ? 1 :
-				sortInput ?
-				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-				0;
-
-		// If the nodes are siblings, we can do a quick check
-		} else if ( aup === bup ) {
-			return siblingCheck( a, b );
-		}
-
-		// Otherwise we need full lists of their ancestors for comparison
-		cur = a;
-		while ( (cur = cur.parentNode) ) {
-			ap.unshift( cur );
-		}
-		cur = b;
-		while ( (cur = cur.parentNode) ) {
-			bp.unshift( cur );
-		}
-
-		// Walk down the tree looking for a discrepancy
-		while ( ap[i] === bp[i] ) {
-			i++;
-		}
-
-		return i ?
-			// Do a sibling check if the nodes have a common ancestor
-			siblingCheck( ap[i], bp[i] ) :
-
-			// Otherwise nodes in our document sort first
-			ap[i] === preferredDoc ? -1 :
-			bp[i] === preferredDoc ? 1 :
-			0;
-	};
-
-	return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-	return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	// Make sure that attribute selectors are quoted
-	expr = expr.replace( rattributeQuotes, "='$1']" );
-
-	if ( support.matchesSelector && documentIsHTML &&
-		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-		try {
-			var ret = matches.call( elem, expr );
-
-			// IE 9's matchesSelector returns false on disconnected nodes
-			if ( ret || support.disconnectedMatch ||
-					// As well, disconnected nodes are said to be in a document
-					// fragment in IE 9
-					elem.document && elem.document.nodeType !== 11 ) {
-				return ret;
-			}
-		} catch(e) {}
-	}
-
-	return Sizzle( expr, document, null, [ elem ] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-	// Set document vars if needed
-	if ( ( context.ownerDocument || context ) !== document ) {
-		setDocument( context );
-	}
-	return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	var fn = Expr.attrHandle[ name.toLowerCase() ],
-		// Don't get fooled by Object.prototype properties (jQuery #13807)
-		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-			fn( elem, name, !documentIsHTML ) :
-			undefined;
-
-	return val !== undefined ?
-		val :
-		support.attributes || !documentIsHTML ?
-			elem.getAttribute( name ) :
-			(val = elem.getAttributeNode(name)) && val.specified ?
-				val.value :
-				null;
-};
-
-Sizzle.error = function( msg ) {
-	throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-	var elem,
-		duplicates = [],
-		j = 0,
-		i = 0;
-
-	// Unless we *know* we can detect duplicates, assume their presence
-	hasDuplicate = !support.detectDuplicates;
-	sortInput = !support.sortStable && results.slice( 0 );
-	results.sort( sortOrder );
-
-	if ( hasDuplicate ) {
-		while ( (elem = results[i++]) ) {
-			if ( elem === results[ i ] ) {
-				j = duplicates.push( i );
-			}
-		}
-		while ( j-- ) {
-			results.splice( duplicates[ j ], 1 );
-		}
-	}
-
-	// Clear input after sorting to release objects
-	// See https://github.com/jquery/sizzle/pull/225
-	sortInput = null;
-
-	return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-	var node,
-		ret = "",
-		i = 0,
-		nodeType = elem.nodeType;
-
-	if ( !nodeType ) {
-		// If no nodeType, this is expected to be an array
-		while ( (node = elem[i++]) ) {
-			// Do not traverse comment nodes
-			ret += getText( node );
-		}
-	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-		// Use textContent for elements
-		// innerText usage removed for consistency of new lines (jQuery #11153)
-		if ( typeof elem.textContent === "string" ) {
-			return elem.textContent;
-		} else {
-			// Traverse its children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				ret += getText( elem );
-			}
-		}
-	} else if ( nodeType === 3 || nodeType === 4 ) {
-		return elem.nodeValue;
-	}
-	// Do not include comment or processing instruction nodes
-
-	return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-	// Can be adjusted by the user
-	cacheLength: 50,
-
-	createPseudo: markFunction,
-
-	match: matchExpr,
-
-	attrHandle: {},
-
-	find: {},
-
-	relative: {
-		">": { dir: "parentNode", first: true },
-		" ": { dir: "parentNode" },
-		"+": { dir: "previousSibling", first: true },
-		"~": { dir: "previousSibling" }
-	},
-
-	preFilter: {
-		"ATTR": function( match ) {
-			match[1] = match[1].replace( runescape, funescape );
-
-			// Move the given value to match[3] whether quoted or unquoted
-			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
-
-			if ( match[2] === "~=" ) {
-				match[3] = " " + match[3] + " ";
-			}
-
-			return match.slice( 0, 4 );
-		},
-
-		"CHILD": function( match ) {
-			/* matches from matchExpr["CHILD"]
-				1 type (only|nth|...)
-				2 what (child|of-type)
-				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-				4 xn-component of xn+y argument ([+-]?\d*n|)
-				5 sign of xn-component
-				6 x of xn-component
-				7 sign of y-component
-				8 y of y-component
-			*/
-			match[1] = match[1].toLowerCase();
-
-			if ( match[1].slice( 0, 3 ) === "nth" ) {
-				// nth-* requires argument
-				if ( !match[3] ) {
-					Sizzle.error( match[0] );
-				}
-
-				// numeric x and y parameters for Expr.filter.CHILD
-				// remember that false/true cast respectively to 0/1
-				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-			// other types prohibit arguments
-			} else if ( match[3] ) {
-				Sizzle.error( match[0] );
-			}
-
-			return match;
-		},
-
-		"PSEUDO": function( match ) {
-			var excess,
-				unquoted = !match[6] && match[2];
-
-			if ( matchExpr["CHILD"].test( match[0] ) ) {
-				return null;
-			}
-
-			// Accept quoted arguments as-is
-			if ( match[3] ) {
-				match[2] = match[4] || match[5] || "";
-
-			// Strip excess characters from unquoted arguments
-			} else if ( unquoted && rpseudo.test( unquoted ) &&
-				// Get excess from tokenize (recursively)
-				(excess = tokenize( unquoted, true )) &&
-				// advance to the next closing parenthesis
-				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-				// excess is a negative index
-				match[0] = match[0].slice( 0, excess );
-				match[2] = unquoted.slice( 0, excess );
-			}
-
-			// Return only captures needed by the pseudo filter method (type and argument)
-			return match.slice( 0, 3 );
-		}
-	},
-
-	filter: {
-
-		"TAG": function( nodeNameSelector ) {
-			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-			return nodeNameSelector === "*" ?
-				function() { return true; } :
-				function( elem ) {
-					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-				};
-		},
-
-		"CLASS": function( className ) {
-			var pattern = classCache[ className + " " ];
-
-			return pattern ||
-				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-				classCache( className, function( elem ) {
-					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
-				});
-		},
-
-		"ATTR": function( name, operator, check ) {
-			return function( elem ) {
-				var result = Sizzle.attr( elem, name );
-
-				if ( result == null ) {
-					return operator === "!=";
-				}
-				if ( !operator ) {
-					return true;
-				}
-
-				result += "";
-
-				return operator === "=" ? result === check :
-					operator === "!=" ? result !== check :
-					operator === "^=" ? check && result.indexOf( check ) === 0 :
-					operator === "*=" ? check && result.indexOf( check ) > -1 :
-					operator === "$=" ? check && result.slice( -check.length ) === check :
-					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
-					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-					false;
-			};
-		},
-
-		"CHILD": function( type, what, argument, first, last ) {
-			var simple = type.slice( 0, 3 ) !== "nth",
-				forward = type.slice( -4 ) !== "last",
-				ofType = what === "of-type";
-
-			return first === 1 && last === 0 ?
-
-				// Shortcut for :nth-*(n)
-				function( elem ) {
-					return !!elem.parentNode;
-				} :
-
-				function( elem, context, xml ) {
-					var cache, outerCache, node, diff, nodeIndex, start,
-						dir = simple !== forward ? "nextSibling" : "previousSibling",
-						parent = elem.parentNode,
-						name = ofType && elem.nodeName.toLowerCase(),
-						useCache = !xml && !ofType;
-
-					if ( parent ) {
-
-						// :(first|last|only)-(child|of-type)
-						if ( simple ) {
-							while ( dir ) {
-								node = elem;
-								while ( (node = node[ dir ]) ) {
-									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-										return false;
-									}
-								}
-								// Reverse direction for :only-* (if we haven't yet done so)
-								start = dir = type === "only" && !start && "nextSibling";
-							}
-							return true;
-						}
-
-						start = [ forward ? parent.firstChild : parent.lastChild ];
-
-						// non-xml :nth-child(...) stores cache data on `parent`
-						if ( forward && useCache ) {
-							// Seek `elem` from a previously-cached index
-							outerCache = parent[ expando ] || (parent[ expando ] = {});
-							cache = outerCache[ type ] || [];
-							nodeIndex = cache[0] === dirruns && cache[1];
-							diff = cache[0] === dirruns && cache[2];
-							node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-								// Fallback to seeking `elem` from the start
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								// When found, cache indexes on `parent` and break
-								if ( node.nodeType === 1 && ++diff && node === elem ) {
-									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-									break;
-								}
-							}
-
-						// Use previously-cached element index if available
-						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-							diff = cache[1];
-
-						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-						} else {
-							// Use the same loop as above to seek `elem` from the start
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-									// Cache the index of each encountered element
-									if ( useCache ) {
-										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-									}
-
-									if ( node === elem ) {
-										break;
-									}
-								}
-							}
-						}
-
-						// Incorporate the offset, then check against cycle size
-						diff -= last;
-						return diff === first || ( diff % first === 0 && diff / first >= 0 );
-					}
-				};
-		},
-
-		"PSEUDO": function( pseudo, argument ) {
-			// pseudo-class names are case-insensitive
-			// http://www.w3.org/TR/selectors/#pseudo-classes
-			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-			// Remember that setFilters inherits from pseudos
-			var args,
-				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-					Sizzle.error( "unsupported pseudo: " + pseudo );
-
-			// The user may use createPseudo to indicate that
-			// arguments are needed to create the filter function
-			// just as Sizzle does
-			if ( fn[ expando ] ) {
-				return fn( argument );
-			}
-
-			// But maintain support for old signatures
-			if ( fn.length > 1 ) {
-				args = [ pseudo, pseudo, "", argument ];
-				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-					markFunction(function( seed, matches ) {
-						var idx,
-							matched = fn( seed, argument ),
-							i = matched.length;
-						while ( i-- ) {
-							idx = indexOf.call( seed, matched[i] );
-							seed[ idx ] = !( matches[ idx ] = matched[i] );
-						}
-					}) :
-					function( elem ) {
-						return fn( elem, 0, args );
-					};
-			}
-
-			return fn;
-		}
-	},
-
-	pseudos: {
-		// Potentially complex pseudos
-		"not": markFunction(function( selector ) {
-			// Trim the selector passed to compile
-			// to avoid treating leading and trailing
-			// spaces as combinators
-			var input = [],
-				results = [],
-				matcher = compile( selector.replace( rtrim, "$1" ) );
-
-			return matcher[ expando ] ?
-				markFunction(function( seed, matches, context, xml ) {
-					var elem,
-						unmatched = matcher( seed, null, xml, [] ),
-						i = seed.length;
-
-					// Match elements unmatched by `matcher`
-					while ( i-- ) {
-						if ( (elem = unmatched[i]) ) {
-							seed[i] = !(matches[i] = elem);
-						}
-					}
-				}) :
-				function( elem, context, xml ) {
-					input[0] = elem;
-					matcher( input, null, xml, results );
-					return !results.pop();
-				};
-		}),
-
-		"has": markFunction(function( selector ) {
-			return function( elem ) {
-				return Sizzle( selector, elem ).length > 0;
-			};
-		}),
-
-		"contains": markFunction(function( text ) {
-			return function( elem ) {
-				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
-			};
-		}),
-
-		// "Whether an element is represented by a :lang() selector
-		// is based solely on the element's language value
-		// being equal to the identifier C,
-		// or beginning with the identifier C immediately followed by "-".
-		// The matching of C against the element's language value is performed case-insensitively.
-		// The identifier C does not have to be a valid language name."
-		// http://www.w3.org/TR/selectors/#lang-pseudo
-		"lang": markFunction( function( lang ) {
-			// lang value must be a valid identifier
-			if ( !ridentifier.test(lang || "") ) {
-				Sizzle.error( "unsupported lang: " + lang );
-			}
-			lang = lang.replace( runescape, funescape ).toLowerCase();
-			return function( elem ) {
-				var elemLang;
-				do {
-					if ( (elemLang = documentIsHTML ?
-						elem.lang :
-						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-						elemLang = elemLang.toLowerCase();
-						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-					}
-				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-				return false;
-			};
-		}),
-
-		// Miscellaneous
-		"target": function( elem ) {
-			var hash = window.location && window.location.hash;
-			return hash && hash.slice( 1 ) === elem.id;
-		},
-
-		"root": function( elem ) {
-			return elem === docElem;
-		},
-
-		"focus": function( elem ) {
-			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-		},
-
-		// Boolean properties
-		"enabled": function( elem ) {
-			return elem.disabled === false;
-		},
-
-		"disabled": function( elem ) {
-			return elem.disabled === true;
-		},
-
-		"checked": function( elem ) {
-			// In CSS3, :checked should return both checked and selected elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			var nodeName = elem.nodeName.toLowerCase();
-			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-		},
-
-		"selected": function( elem ) {
-			// Accessing this property makes selected-by-default
-			// options in Safari work properly
-			if ( elem.parentNode ) {
-				elem.parentNode.selectedIndex;
-			}
-
-			return elem.selected === true;
-		},
-
-		// Contents
-		"empty": function( elem ) {
-			// http://www.w3.org/TR/selectors/#empty-pseudo
-			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
-			//   but not by others (comment: 8; processing instruction: 7; etc.)
-			// nodeType < 6 works because attributes (2) do not appear as children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				if ( elem.nodeType < 6 ) {
-					return false;
-				}
-			}
-			return true;
-		},
-
-		"parent": function( elem ) {
-			return !Expr.pseudos["empty"]( elem );
-		},
-
-		// Element/input types
-		"header": function( elem ) {
-			return rheader.test( elem.nodeName );
-		},
-
-		"input": function( elem ) {
-			return rinputs.test( elem.nodeName );
-		},
-
-		"button": function( elem ) {
-			var name = elem.nodeName.toLowerCase();
-			return name === "input" && elem.type === "button" || name === "button";
-		},
-
-		"text": function( elem ) {
-			var attr;
-			return elem.nodeName.toLowerCase() === "input" &&
-				elem.type === "text" &&
-
-				// Support: IE<8
-				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
-				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
-		},
-
-		// Position-in-collection
-		"first": createPositionalPseudo(function() {
-			return [ 0 ];
-		}),
-
-		"last": createPositionalPseudo(function( matchIndexes, length ) {
-			return [ length - 1 ];
-		}),
-
-		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			return [ argument < 0 ? argument + length : argument ];
-		}),
-
-		"even": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 0;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"odd": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 1;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; --i >= 0; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; ++i < length; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		})
-	}
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-	Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-	Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
-	var matched, match, tokens, type,
-		soFar, groups, preFilters,
-		cached = tokenCache[ selector + " " ];
-
-	if ( cached ) {
-		return parseOnly ? 0 : cached.slice( 0 );
-	}
-
-	soFar = selector;
-	groups = [];
-	preFilters = Expr.preFilter;
-
-	while ( soFar ) {
-
-		// Comma and first run
-		if ( !matched || (match = rcomma.exec( soFar )) ) {
-			if ( match ) {
-				// Don't consume trailing commas as valid
-				soFar = soFar.slice( match[0].length ) || soFar;
-			}
-			groups.push( (tokens = []) );
-		}
-
-		matched = false;
-
-		// Combinators
-		if ( (match = rcombinators.exec( soFar )) ) {
-			matched = match.shift();
-			tokens.push({
-				value: matched,
-				// Cast descendant combinators to space
-				type: match[0].replace( rtrim, " " )
-			});
-			soFar = soFar.slice( matched.length );
-		}
-
-		// Filters
-		for ( type in Expr.filter ) {
-			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-				(match = preFilters[ type ]( match ))) ) {
-				matched = match.shift();
-				tokens.push({
-					value: matched,
-					type: type,
-					matches: match
-				});
-				soFar = soFar.slice( matched.length );
-			}
-		}
-
-		if ( !matched ) {
-			break;
-		}
-	}
-
-	// Return the length of the invalid excess
-	// if we're just parsing
-	// Otherwise, throw an error or return tokens
-	return parseOnly ?
-		soFar.length :
-		soFar ?
-			Sizzle.error( selector ) :
-			// Cache the tokens
-			tokenCache( selector, groups ).slice( 0 );
-};
-
-function toSelector( tokens ) {
-	var i = 0,
-		len = tokens.length,
-		selector = "";
-	for ( ; i < len; i++ ) {
-		selector += tokens[i].value;
-	}
-	return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-	var dir = combinator.dir,
-		checkNonElements = base && dir === "parentNode",
-		doneName = done++;
-
-	return combinator.first ?
-		// Check against closest ancestor/preceding element
-		function( elem, context, xml ) {
-			while ( (elem = elem[ dir ]) ) {
-				if ( elem.nodeType === 1 || checkNonElements ) {
-					return matcher( elem, context, xml );
-				}
-			}
-		} :
-
-		// Check against all ancestor/preceding elements
-		function( elem, context, xml ) {
-			var oldCache, outerCache,
-				newCache = [ dirruns, doneName ];
-
-			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-			if ( xml ) {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						if ( matcher( elem, context, xml ) ) {
-							return true;
-						}
-					}
-				}
-			} else {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						outerCache = elem[ expando ] || (elem[ expando ] = {});
-						if ( (oldCache = outerCache[ dir ]) &&
-							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
-
-							// Assign to newCache so results back-propagate to previous elements
-							return (newCache[ 2 ] = oldCache[ 2 ]);
-						} else {
-							// Reuse newcache so results back-propagate to previous elements
-							outerCache[ dir ] = newCache;
-
-							// A match means we're done; a fail means we have to keep checking
-							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
-								return true;
-							}
-						}
-					}
-				}
-			}
-		};
-}
-
-function elementMatcher( matchers ) {
-	return matchers.length > 1 ?
-		function( elem, context, xml ) {
-			var i = matchers.length;
-			while ( i-- ) {
-				if ( !matchers[i]( elem, context, xml ) ) {
-					return false;
-				}
-			}
-			return true;
-		} :
-		matchers[0];
-}
-
-function multipleContexts( selector, contexts, results ) {
-	var i = 0,
-		len = contexts.length;
-	for ( ; i < len; i++ ) {
-		Sizzle( selector, contexts[i], results );
-	}
-	return results;
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-	var elem,
-		newUnmatched = [],
-		i = 0,
-		len = unmatched.length,
-		mapped = map != null;
-
-	for ( ; i < len; i++ ) {
-		if ( (elem = unmatched[i]) ) {
-			if ( !filter || filter( elem, context, xml ) ) {
-				newUnmatched.push( elem );
-				if ( mapped ) {
-					map.push( i );
-				}
-			}
-		}
-	}
-
-	return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-	if ( postFilter && !postFilter[ expando ] ) {
-		postFilter = setMatcher( postFilter );
-	}
-	if ( postFinder && !postFinder[ expando ] ) {
-		postFinder = setMatcher( postFinder, postSelector );
-	}
-	return markFunction(function( seed, results, context, xml ) {
-		var temp, i, elem,
-			preMap = [],
-			postMap = [],
-			preexisting = results.length,
-
-			// Get initial elements from seed or context
-			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-			// Prefilter to get matcher input, preserving a map for seed-results synchronization
-			matcherIn = preFilter && ( seed || !selector ) ?
-				condense( elems, preMap, preFilter, context, xml ) :
-				elems,
-
-			matcherOut = matcher ?
-				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-					// ...intermediate processing is necessary
-					[] :
-
-					// ...otherwise use results directly
-					results :
-				matcherIn;
-
-		// Find primary matches
-		if ( matcher ) {
-			matcher( matcherIn, matcherOut, context, xml );
-		}
-
-		// Apply postFilter
-		if ( postFilter ) {
-			temp = condense( matcherOut, postMap );
-			postFilter( temp, [], context, xml );
-
-			// Un-match failing elements by moving them back to matcherIn
-			i = temp.length;
-			while ( i-- ) {
-				if ( (elem = temp[i]) ) {
-					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-				}
-			}
-		}
-
-		if ( seed ) {
-			if ( postFinder || preFilter ) {
-				if ( postFinder ) {
-					// Get the final matcherOut by condensing this intermediate into postFinder contexts
-					temp = [];
-					i = matcherOut.length;
-					while ( i-- ) {
-						if ( (elem = matcherOut[i]) ) {
-							// Restore matcherIn since elem is not yet a final match
-							temp.push( (matcherIn[i] = elem) );
-						}
-					}
-					postFinder( null, (matcherOut = []), temp, xml );
-				}
-
-				// Move matched elements from seed to results to keep them synchronized
-				i = matcherOut.length;
-				while ( i-- ) {
-					if ( (elem = matcherOut[i]) &&
-						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
-
-						seed[temp] = !(results[temp] = elem);
-					}
-				}
-			}
-
-		// Add elements to results, through postFinder if defined
-		} else {
-			matcherOut = condense(
-				matcherOut === results ?
-					matcherOut.splice( preexisting, matcherOut.length ) :
-					matcherOut
-			);
-			if ( postFinder ) {
-				postFinder( null, results, matcherOut, xml );
-			} else {
-				push.apply( results, matcherOut );
-			}
-		}
-	});
-}
-
-function matcherFromTokens( tokens ) {
-	var checkContext, matcher, j,
-		len = tokens.length,
-		leadingRelative = Expr.relative[ tokens[0].type ],
-		implicitRelative = leadingRelative || Expr.relative[" "],
-		i = leadingRelative ? 1 : 0,
-
-		// The foundational matcher ensures that elements are reachable from top-level context(s)
-		matchContext = addCombinator( function( elem ) {
-			return elem === checkContext;
-		}, implicitRelative, true ),
-		matchAnyContext = addCombinator( function( elem ) {
-			return indexOf.call( checkContext, elem ) > -1;
-		}, implicitRelative, true ),
-		matchers = [ function( elem, context, xml ) {
-			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
-				(checkContext = context).nodeType ?
-					matchContext( elem, context, xml ) :
-					matchAnyContext( elem, context, xml ) );
-		} ];
-
-	for ( ; i < len; i++ ) {
-		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
-			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
-		} else {
-			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
-			// Return special upon seeing a positional matcher
-			if ( matcher[ expando ] ) {
-				// Find the next relative operator (if any) for proper handling
-				j = ++i;
-				for ( ; j < len; j++ ) {
-					if ( Expr.relative[ tokens[j].type ] ) {
-						break;
-					}
-				}
-				return setMatcher(
-					i > 1 && elementMatcher( matchers ),
-					i > 1 && toSelector(
-						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
-						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-					).replace( rtrim, "$1" ),
-					matcher,
-					i < j && matcherFromTokens( tokens.slice( i, j ) ),
-					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-					j < len && toSelector( tokens )
-				);
-			}
-			matchers.push( matcher );
-		}
-	}
-
-	return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-	var bySet = setMatchers.length > 0,
-		byElement = elementMatchers.length > 0,
-		superMatcher = function( seed, context, xml, results, outermost ) {
-			var elem, j, matcher,
-				matchedCount = 0,
-				i = "0",
-				unmatched = seed && [],
-				setMatched = [],
-				contextBackup = outermostContext,
-				// We must always have either seed elements or outermost context
-				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
-				// Use integer dirruns iff this is the outermost matcher
-				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
-				len = elems.length;
-
-			if ( outermost ) {
-				outermostContext = context !== document && context;
-			}
-
-			// Add elements passing elementMatchers directly to results
-			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-			// Support: IE<9, Safari
-			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
-			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
-				if ( byElement && elem ) {
-					j = 0;
-					while ( (matcher = elementMatchers[j++]) ) {
-						if ( matcher( elem, context, xml ) ) {
-							results.push( elem );
-							break;
-						}
-					}
-					if ( outermost ) {
-						dirruns = dirrunsUnique;
-					}
-				}
-
-				// Track unmatched elements for set filters
-				if ( bySet ) {
-					// They will have gone through all possible matchers
-					if ( (elem = !matcher && elem) ) {
-						matchedCount--;
-					}
-
-					// Lengthen the array for every element, matched or not
-					if ( seed ) {
-						unmatched.push( elem );
-					}
-				}
-			}
-
-			// Apply set filters to unmatched elements
-			matchedCount += i;
-			if ( bySet && i !== matchedCount ) {
-				j = 0;
-				while ( (matcher = setMatchers[j++]) ) {
-					matcher( unmatched, setMatched, context, xml );
-				}
-
-				if ( seed ) {
-					// Reintegrate element matches to eliminate the need for sorting
-					if ( matchedCount > 0 ) {
-						while ( i-- ) {
-							if ( !(unmatched[i] || setMatched[i]) ) {
-								setMatched[i] = pop.call( results );
-							}
-						}
-					}
-
-					// Discard index placeholder values to get only actual matches
-					setMatched = condense( setMatched );
-				}
-
-				// Add matches to results
-				push.apply( results, setMatched );
-
-				// Seedless set matches succeeding multiple successful matchers stipulate sorting
-				if ( outermost && !seed && setMatched.length > 0 &&
-					( matchedCount + setMatchers.length ) > 1 ) {
-
-					Sizzle.uniqueSort( results );
-				}
-			}
-
-			// Override manipulation of globals by nested matchers
-			if ( outermost ) {
-				dirruns = dirrunsUnique;
-				outermostContext = contextBackup;
-			}
-
-			return unmatched;
-		};
-
-	return bySet ?
-		markFunction( superMatcher ) :
-		superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
-	var i,
-		setMatchers = [],
-		elementMatchers = [],
-		cached = compilerCache[ selector + " " ];
-
-	if ( !cached ) {
-		// Generate a function of recursive functions that can be used to check each element
-		if ( !match ) {
-			match = tokenize( selector );
-		}
-		i = match.length;
-		while ( i-- ) {
-			cached = matcherFromTokens( match[i] );
-			if ( cached[ expando ] ) {
-				setMatchers.push( cached );
-			} else {
-				elementMatchers.push( cached );
-			}
-		}
-
-		// Cache the compiled function
-		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-
-		// Save selector and tokenization
-		cached.selector = selector;
-	}
-	return cached;
-};
-
-/**
- * A low-level selection function that works with Sizzle's compiled
- *  selector functions
- * @param {String|Function} selector A selector or a pre-compiled
- *  selector function built with Sizzle.compile
- * @param {Element} context
- * @param {Array} [results]
- * @param {Array} [seed] A set of elements to match against
- */
-select = Sizzle.select = function( selector, context, results, seed ) {
-	var i, tokens, token, type, find,
-		compiled = typeof selector === "function" && selector,
-		match = !seed && tokenize( (selector = compiled.selector || selector) );
-
-	results = results || [];
-
-	// Try to minimize operations if there is no seed and only one group
-	if ( match.length === 1 ) {
-
-		// Take a shortcut and set the context if the root selector is an ID
-		tokens = match[0] = match[0].slice( 0 );
-		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
-				support.getById && context.nodeType === 9 && documentIsHTML &&
-				Expr.relative[ tokens[1].type ] ) {
-
-			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-			if ( !context ) {
-				return results;
-
-			// Precompiled matchers will still verify ancestry, so step up a level
-			} else if ( compiled ) {
-				context = context.parentNode;
-			}
-
-			selector = selector.slice( tokens.shift().value.length );
-		}
-
-		// Fetch a seed set for right-to-left matching
-		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-		while ( i-- ) {
-			token = tokens[i];
-
-			// Abort if we hit a combinator
-			if ( Expr.relative[ (type = token.type) ] ) {
-				break;
-			}
-			if ( (find = Expr.find[ type ]) ) {
-				// Search, expanding context for leading sibling combinators
-				if ( (seed = find(
-					token.matches[0].replace( runescape, funescape ),
-					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
-				)) ) {
-
-					// If seed is empty or no tokens remain, we can return early
-					tokens.splice( i, 1 );
-					selector = seed.length && toSelector( tokens );
-					if ( !selector ) {
-						push.apply( results, seed );
-						return results;
-					}
-
-					break;
-				}
-			}
-		}
-	}
-
-	// Compile and execute a filtering function if one is not provided
-	// Provide `match` to avoid retokenization if we modified the selector above
-	( compiled || compile( selector, match ) )(
-		seed,
-		context,
-		!documentIsHTML,
-		results,
-		rsibling.test( selector ) && testContext( context.parentNode ) || context
-	);
-	return results;
-};
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome<14
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = !!hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-	// Should return 1, but returns 4 (following)
-	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-	div.innerHTML = "<a href='#'></a>";
-	return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-	addHandle( "type|href|height|width", function( elem, name, isXML ) {
-		if ( !isXML ) {
-			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-		}
-	});
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-	div.innerHTML = "<input/>";
-	div.firstChild.setAttribute( "value", "" );
-	return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-	addHandle( "value", function( elem, name, isXML ) {
-		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-			return elem.defaultValue;
-		}
-	});
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-	return div.getAttribute("disabled") == null;
-}) ) {
-	addHandle( booleans, function( elem, name, isXML ) {
-		var val;
-		if ( !isXML ) {
-			return elem[ name ] === true ? name.toLowerCase() :
-					(val = elem.getAttributeNode( name )) && val.specified ?
-					val.value :
-				null;
-		}
-	});
-}
-
-return Sizzle;
-
-})( window );
-
-
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-
-var rneedsContext = jQuery.expr.match.needsContext;
-
-var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
-
-
-
-var risSimple = /^.[^:#\[\.,]*$/;
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
-	if ( jQuery.isFunction( qualifier ) ) {
-		return jQuery.grep( elements, function( elem, i ) {
-			/* jshint -W018 */
-			return !!qualifier.call( elem, i, elem ) !== not;
-		});
-
-	}
-
-	if ( qualifier.nodeType ) {
-		return jQuery.grep( elements, function( elem ) {
-			return ( elem === qualifier ) !== not;
-		});
-
-	}
-
-	if ( typeof qualifier === "string" ) {
-		if ( risSimple.test( qualifier ) ) {
-			return jQuery.filter( qualifier, elements, not );
-		}
-
-		qualifier = jQuery.filter( qualifier, elements );
-	}
-
-	return jQuery.grep( elements, function( elem ) {
-		return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
-	});
-}
-
-jQuery.filter = function( expr, elems, not ) {
-	var elem = elems[ 0 ];
-
-	if ( not ) {
-		expr = ":not(" + expr + ")";
-	}
-
-	return elems.length === 1 && elem.nodeType === 1 ?
-		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
-		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
-			return elem.nodeType === 1;
-		}));
-};
-
-jQuery.fn.extend({
-	find: function( selector ) {
-		var i,
-			ret = [],
-			self = this,
-			len = self.length;
-
-		if ( typeof selector !== "string" ) {
-			return this.pushStack( jQuery( selector ).filter(function() {
-				for ( i = 0; i < len; i++ ) {
-					if ( jQuery.contains( self[ i ], this ) ) {
-						return true;
-					}
-				}
-			}) );
-		}
-
-		for ( i = 0; i < len; i++ ) {
-			jQuery.find( selector, self[ i ], ret );
-		}
-
-		// Needed because $( selector, context ) becomes $( context ).find( selector )
-		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
-		ret.selector = this.selector ? this.selector + " " + selector : selector;
-		return ret;
-	},
-	filter: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], false) );
-	},
-	not: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], true) );
-	},
-	is: function( selector ) {
-		return !!winnow(
-			this,
-
-			// If this is a positional/relative selector, check membership in the returned set
-			// so $("p:first").is("p:last") won't return true for a doc with two "p".
-			typeof selector === "string" && rneedsContext.test( selector ) ?
-				jQuery( selector ) :
-				selector || [],
-			false
-		).length;
-	}
-});
-
-
-// Initialize a jQuery object
-
-
-// A central reference to the root jQuery(document)
-var rootjQuery,
-
-	// Use the correct document accordingly with window argument (sandbox)
-	document = window.document,
-
-	// A simple way to check for HTML strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	// Strict HTML recognition (#11290: must start with <)
-	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-	init = jQuery.fn.init = function( selector, context ) {
-		var match, elem;
-
-		// HANDLE: $(""), $(null), $(undefined), $(false)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = rquickExpr.exec( selector );
-			}
-
-			// Match html or make sure no context is specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-
-					// scripts is true for back-compat
-					// Intentionally let the error be thrown if parseHTML is not present
-					jQuery.merge( this, jQuery.parseHTML(
-						match[1],
-						context && context.nodeType ? context.ownerDocument || context : document,
-						true
-					) );
-
-					// HANDLE: $(html, props)
-					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-						for ( match in context ) {
-							// Properties of context are called as methods if possible
-							if ( jQuery.isFunction( this[ match ] ) ) {
-								this[ match ]( context[ match ] );
-
-							// ...and otherwise set as attributes
-							} else {
-								this.attr( match, context[ match ] );
-							}
-						}
-					}
-
-					return this;
-
-				// HANDLE: $(#id)
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document #6963
-					if ( elem && elem.parentNode ) {
-						// Handle the case where IE and Opera return items
-						// by name instead of ID
-						if ( elem.id !== match[2] ) {
-							return rootjQuery.find( selector );
-						}
-
-						// Otherwise, we inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(DOMElement)
-		} else if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return typeof rootjQuery.ready !== "undefined" ?
-				rootjQuery.ready( selector ) :
-				// Execute immediately if ready is not present
-				selector( jQuery );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	};
-
-// Give the init function the jQuery prototype for later instantiation
-init.prototype = jQuery.fn;
-
-// Initialize central reference
-rootjQuery = jQuery( document );
-
-
-var rparentsprev = /^(?:parents|prev(?:Until|All))/,
-	// methods guaranteed to produce a unique set when starting from a unique set
-	guaranteedUnique = {
-		children: true,
-		contents: true,
-		next: true,
-		prev: true
-	};
-
-jQuery.extend({
-	dir: function( elem, dir, until ) {
-		var matched = [],
-			cur = elem[ dir ];
-
-		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
-			if ( cur.nodeType === 1 ) {
-				matched.push( cur );
-			}
-			cur = cur[dir];
-		}
-		return matched;
-	},
-
-	sibling: function( n, elem ) {
-		var r = [];
-
-		for ( ; n; n = n.nextSibling ) {
-			if ( n.nodeType === 1 && n !== elem ) {
-				r.push( n );
-			}
-		}
-
-		return r;
-	}
-});
-
-jQuery.fn.extend({
-	has: function( target ) {
-		var i,
-			targets = jQuery( target, this ),
-			len = targets.length;
-
-		return this.filter(function() {
-			for ( i = 0; i < len; i++ ) {
-				if ( jQuery.contains( this, targets[i] ) ) {
-					return true;
-				}
-			}
-		});
-	},
-
-	closest: function( selectors, context ) {
-		var cur,
-			i = 0,
-			l = this.length,
-			matched = [],
-			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
-				jQuery( selectors, context || this.context ) :
-				0;
-
-		for ( ; i < l; i++ ) {
-			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
-				// Always skip document fragments
-				if ( cur.nodeType < 11 && (pos ?
-					pos.index(cur) > -1 :
-
-					// Don't pass non-elements to Sizzle
-					cur.nodeType === 1 &&
-						jQuery.find.matchesSelector(cur, selectors)) ) {
-
-					matched.push( cur );
-					break;
-				}
-			}
-		}
-
-		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
-	},
-
-	// Determine the position of an element within
-	// the matched set of elements
-	index: function( elem ) {
-
-		// No argument, return index in parent
-		if ( !elem ) {
-			return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
-		}
-
-		// index in selector
-		if ( typeof elem === "string" ) {
-			return jQuery.inArray( this[0], jQuery( elem ) );
-		}
-
-		// Locate the position of the desired element
-		return jQuery.inArray(
-			// If it receives a jQuery object, the first element is used
-			elem.jquery ? elem[0] : elem, this );
-	},
-
-	add: function( selector, context ) {
-		return this.pushStack(
-			jQuery.unique(
-				jQuery.merge( this.get(), jQuery( selector, context ) )
-			)
-		);
-	},
-
-	addBack: function( selector ) {
-		return this.add( selector == null ?
-			this.prevObject : this.prevObject.filter(selector)
-		);
-	}
-});
-
-function sibling( cur, dir ) {
-	do {
-		cur = cur[ dir ];
-	} while ( cur && cur.nodeType !== 1 );
-
-	return cur;
-}
-
-jQuery.each({
-	parent: function( elem ) {
-		var parent = elem.parentNode;
-		return parent && parent.nodeType !== 11 ? parent : null;
-	},
-	parents: function( elem ) {
-		return jQuery.dir( elem, "parentNode" );
-	},
-	parentsUntil: function( elem, i, until ) {
-		return jQuery.dir( elem, "parentNode", until );
-	},
-	next: function( elem ) {
-		return sibling( elem, "nextSibling" );
-	},
-	prev: function( elem ) {
-		return sibling( elem, "previousSibling" );
-	},
-	nextAll: function( elem ) {
-		return jQuery.dir( elem, "nextSibling" );
-	},
-	prevAll: function( elem ) {
-		return jQuery.dir( elem, "previousSibling" );
-	},
-	nextUntil: function( elem, i, until ) {
-		return jQuery.dir( elem, "nextSibling", until );
-	},
-	prevUntil: function( elem, i, until ) {
-		return jQuery.dir( elem, "previousSibling", until );
-	},
-	siblings: function( elem ) {
-		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
-	},
-	children: function( elem ) {
-		return jQuery.sibling( elem.firstChild );
-	},
-	contents: function( elem ) {
-		return jQuery.nodeName( elem, "iframe" ) ?
-			elem.contentDocument || elem.contentWindow.document :
-			jQuery.merge( [], elem.childNodes );
-	}
-}, function( name, fn ) {
-	jQuery.fn[ name ] = function( until, selector ) {
-		var ret = jQuery.map( this, fn, until );
-
-		if ( name.slice( -5 ) !== "Until" ) {
-			selector = until;
-		}
-
-		if ( selector && typeof selector === "string" ) {
-			ret = jQuery.filter( selector, ret );
-		}
-
-		if ( this.length > 1 ) {
-			// Remove duplicates
-			if ( !guaranteedUnique[ name ] ) {
-				ret = jQuery.unique( ret );
-			}
-
-			// Reverse order for parents* and prev-derivatives
-			if ( rparentsprev.test( name ) ) {
-				ret = ret.reverse();
-			}
-		}
-
-		return this.pushStack( ret );
-	};
-});
-var rnotwhite = (/\S+/g);
-
-
-
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
-	var object = optionsCache[ options ] = {};
-	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
-		object[ flag ] = true;
-	});
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	options: an optional list of space-separated options that will change how
- *			the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-	// Convert options from String-formatted to Object-formatted if needed
-	// (we check in cache first)
-	options = typeof options === "string" ?
-		( optionsCache[ options ] || createOptions( options ) ) :
-		jQuery.extend( {}, options );
-
-	var // Flag to know if list is currently firing
-		firing,
-		// Last fire value (for non-forgettable lists)
-		memory,
-		// Flag to know if list was already fired
-		fired,
-		// End of the loop when firing
-		firingLength,
-		// Index of currently firing callback (modified by remove if needed)
-		firingIndex,
-		// First callback to fire (used internally by add and fireWith)
-		firingStart,
-		// Actual callback list
-		list = [],
-		// Stack of fire calls for repeatable lists
-		stack = !options.once && [],
-		// Fire callbacks
-		fire = function( data ) {
-			memory = options.memory && data;
-			fired = true;
-			firingIndex = firingStart || 0;
-			firingStart = 0;
-			firingLength = list.length;
-			firing = true;
-			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
-					memory = false; // To prevent further calls using add
-					break;
-				}
-			}
-			firing = false;
-			if ( list ) {
-				if ( stack ) {
-					if ( stack.length ) {
-						fire( stack.shift() );
-					}
-				} else if ( memory ) {
-					list = [];
-				} else {
-					self.disable();
-				}
-			}
-		},
-		// Actual Callbacks object
-		self = {
-			// Add a callback or a collection of callbacks to the list
-			add: function() {
-				if ( list ) {
-					// First, we save the current length
-					var start = list.length;
-					(function add( args ) {
-						jQuery.each( args, function( _, arg ) {
-							var type = jQuery.type( arg );
-							if ( type === "function" ) {
-								if ( !options.unique || !self.has( arg ) ) {
-									list.push( arg );
-								}
-							} else if ( arg && arg.length && type !== "string" ) {
-								// Inspect recursively
-								add( arg );
-							}
-						});
-					})( arguments );
-					// Do we need to add the callbacks to the
-					// current firing batch?
-					if ( firing ) {
-						firingLength = list.length;
-					// With memory, if we're not firing then
-					// we should call right away
-					} else if ( memory ) {
-						firingStart = start;
-						fire( memory );
-					}
-				}
-				return this;
-			},
-			// Remove a callback from the list
-			remove: function() {
-				if ( list ) {
-					jQuery.each( arguments, function( _, arg ) {
-						var index;
-						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
-							list.splice( index, 1 );
-							// Handle firing indexes
-							if ( firing ) {
-								if ( index <= firingLength ) {
-									firingLength--;
-								}
-								if ( index <= firingIndex ) {
-									firingIndex--;
-								}
-							}
-						}
-					});
-				}
-				return this;
-			},
-			// Check if a given callback is in the list.
-			// If no argument is given, return whether or not list has callbacks attached.
-			has: function( fn ) {
-				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				firingLength = 0;
-				return this;
-			},
-			// Have the list do nothing anymore
-			disable: function() {
-				list = stack = memory = undefined;
-				return this;
-			},
-			// Is it disabled?
-			disabled: function() {
-				return !list;
-			},
-			// Lock the list in its current state
-			lock: function() {
-				stack = undefined;
-				if ( !memory ) {
-					self.disable();
-				}
-				return this;
-			},
-			// Is it locked?
-			locked: function() {
-				return !stack;
-			},
-			// Call all callbacks with the given context and arguments
-			fireWith: function( context, args ) {
-				if ( list && ( !fired || stack ) ) {
-					args = args || [];
-					args = [ context, args.slice ? args.slice() : args ];
-					if ( firing ) {
-						stack.push( args );
-					} else {
-						fire( args );
-					}
-				}
-				return this;
-			},
-			// Call all the callbacks with the given arguments
-			fire: function() {
-				self.fireWith( this, arguments );
-				return this;
-			},
-			// To know if the callbacks have already been called at least once
-			fired: function() {
-				return !!fired;
-			}
-		};
-
-	return self;
-};
-
-
-jQuery.extend({
-
-	Deferred: function( func ) {
-		var tuples = [
-				// action, add listener, listener list, final state
-				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
-				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
-				[ "notify", "progress", jQuery.Callbacks("memory") ]
-			],
-			state = "pending",
-			promise = {
-				state: function() {
-					return state;
-				},
-				always: function() {
-					deferred.done( arguments ).fail( arguments );
-					return this;
-				},
-				then: function( /* fnDone, fnFail, fnProgress */ ) {
-					var fns = arguments;
-					return jQuery.Deferred(function( newDefer ) {
-						jQuery.each( tuples, function( i, tuple ) {
-							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-							// deferred[ done | fail | progress ] for forwarding actions to newDefer
-							deferred[ tuple[1] ](function() {
-								var returned = fn && fn.apply( this, arguments );
-								if ( returned && jQuery.isFunction( returned.promise ) ) {
-									returned.promise()
-										.done( newDefer.resolve )
-										.fail( newDefer.reject )
-										.progress( newDefer.notify );
-								} else {
-									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
-								}
-							});
-						});
-						fns = null;
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					return obj != null ? jQuery.extend( obj, promise ) : promise;
-				}
-			},
-			deferred = {};
-
-		// Keep pipe for back-compat
-		promise.pipe = promise.then;
-
-		// Add list-specific methods
-		jQuery.each( tuples, function( i, tuple ) {
-			var list = tuple[ 2 ],
-				stateString = tuple[ 3 ];
-
-			// promise[ done | fail | progress ] = list.add
-			promise[ tuple[1] ] = list.add;
-
-			// Handle state
-			if ( stateString ) {
-				list.add(function() {
-					// state = [ resolved | rejected ]
-					state = stateString;
-
-				// [ reject_list | resolve_list ].disable; progress_list.lock
-				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-			}
-
-			// deferred[ resolve | reject | notify ]
-			deferred[ tuple[0] ] = function() {
-				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
-				return this;
-			};
-			deferred[ tuple[0] + "With" ] = list.fireWith;
-		});
-
-		// Make the deferred a promise
-		promise.promise( deferred );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( subordinate /* , ..., subordinateN */ ) {
-		var i = 0,
-			resolveValues = slice.call( arguments ),
-			length = resolveValues.length,
-
-			// the count of uncompleted subordinates
-			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-			// Update function for both resolve and progress values
-			updateFunc = function( i, contexts, values ) {
-				return function( value ) {
-					contexts[ i ] = this;
-					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
-					if ( values === progressValues ) {
-						deferred.notifyWith( contexts, values );
-
-					} else if ( !(--remaining) ) {
-						deferred.resolveWith( contexts, values );
-					}
-				};
-			},
-
-			progressValues, progressContexts, resolveContexts;
-
-		// add listeners to Deferred subordinates; treat others as resolved
-		if ( length > 1 ) {
-			progressValues = new Array( length );
-			progressContexts = new Array( length );
-			resolveContexts = new Array( length );
-			for ( ; i < length; i++ ) {
-				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-					resolveValues[ i ].promise()
-						.done( updateFunc( i, resolveContexts, resolveValues ) )
-						.fail( deferred.reject )
-						.progress( updateFunc( i, progressContexts, progressValues ) );
-				} else {
-					--remaining;
-				}
-			}
-		}
-
-		// if we're not waiting on anything, resolve the master
-		if ( !remaining ) {
-			deferred.resolveWith( resolveContexts, resolveValues );
-		}
-
-		return deferred.promise();
-	}
-});
-
-
-// The deferred used on DOM ready
-var readyList;
-
-jQuery.fn.ready = function( fn ) {
-	// Add the callback
-	jQuery.ready.promise().done( fn );
-
-	return this;
-};
-
-jQuery.extend({
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-
-		// Abort if there are pending holds or we're already ready
-		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-			return;
-		}
-
-		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-		if ( !document.body ) {
-			return setTimeout( jQuery.ready );
-		}
-
-		// Remember that the DOM is ready
-		jQuery.isReady = true;
-
-		// If a normal DOM Ready event fired, decrement, and wait if need be
-		if ( wait !== true && --jQuery.readyWait > 0 ) {
-			return;
-		}
-
-		// If there are functions bound, to execute
-		readyList.resolveWith( document, [ jQuery ] );
-
-		// Trigger any bound ready events
-		if ( jQuery.fn.triggerHandler ) {
-			jQuery( document ).triggerHandler( "ready" );
-			jQuery( document ).off( "ready" );
-		}
-	}
-});
-
-/**
- * Clean-up method for dom ready events
- */
-function detach() {
-	if ( document.addEventListener ) {
-		document.removeEventListener( "DOMContentLoaded", completed, false );
-		window.removeEventListener( "load", completed, false );
-
-	} else {
-		document.detachEvent( "onreadystatechange", completed );
-		window.detachEvent( "onload", completed );
-	}
-}
-
-/**
- * The ready event handler and self cleanup method
- */
-function completed() {
-	// readyState === "complete" is good enough for us to call the dom ready in oldIE
-	if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
-		detach();
-		jQuery.ready();
-	}
-}
-
-jQuery.ready.promise = function( obj ) {
-	if ( !readyList ) {
-
-		readyList = jQuery.Deferred();
-
-		// Catch cases where $(document).ready() is called after the browser event has already occurred.
-		// we once tried to use readyState "interactive" here, but it caused issues like the one
-		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
-		if ( document.readyState === "complete" ) {
-			// Handle it asynchronously to allow scripts the opportunity to delay ready
-			setTimeout( jQuery.ready );
-
-		// Standards-based browsers support DOMContentLoaded
-		} else if ( document.addEventListener ) {
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", completed, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", completed, false );
-
-		// If IE event model is used
-		} else {
-			// Ensure firing before onload, maybe late but safe also for iframes
-			document.attachEvent( "onreadystatechange", completed );
-
-			// A fallback to window.onload, that will always work
-			window.attachEvent( "onload", completed );
-
-			// If IE and not a frame
-			// continually check to see if the document is ready
-			var top = false;
-
-			try {
-				top = window.frameElement == null && document.documentElement;
-			} catch(e) {}
-
-			if ( top && top.doScroll ) {
-				(function doScrollCheck() {
-					if ( !jQuery.isReady ) {
-
-						try {
-							// Use the trick by Diego Perini
-							// http://javascript.nwbox.com/IEContentLoaded/
-							top.doScroll("left");
-						} catch(e) {
-							return setTimeout( doScrollCheck, 50 );
-						}
-
-						// detach all dom ready events
-						detach();
-
-						// and execute any waiting functions
-						jQuery.ready();
-					}
-				})();
-			}
-		}
-	}
-	return readyList.promise( obj );
-};
-
-
-var strundefined = typeof undefined;
-
-
-
-// Support: IE<9
-// Iteration over object's inherited properties before its own
-var i;
-for ( i in jQuery( support ) ) {
-	break;
-}
-support.ownLast = i !== "0";
-
-// Note: most support tests are defined in their respective modules.
-// false until the test is run
-support.inlineBlockNeedsLayout = false;
-
-// Execute ASAP in case we need to set body.style.zoom
-jQuery(function() {
-	// Minified: var a,b,c,d
-	var val, div, body, container;
-
-	body = document.getElementsByTagName( "body" )[ 0 ];
-	if ( !body || !body.style ) {
-		// Return for frameset docs that don't have a body
-		return;
-	}
-
-	// Setup
-	div = document.createElement( "div" );
-	container = document.createElement( "div" );
-	container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
-	body.appendChild( container ).appendChild( div );
-
-	if ( typeof div.style.zoom !== strundefined ) {
-		// Support: IE<8
-		// Check if natively block-level elements act like inline-block
-		// elements when setting their display to 'inline' and giving
-		// them layout
-		div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";
-
-		support.inlineBlockNeedsLayout = val = div.offsetWidth === 3;
-		if ( val ) {
-			// Prevent IE 6 from affecting layout for positioned elements #11048
-			// Prevent IE from shrinking the body in IE 7 mode #12869
-			// Support: IE<8
-			body.style.zoom = 1;
-		}
-	}
-
-	body.removeChild( container );
-});
-
-
-
-
-(function() {
-	var div = document.createElement( "div" );
-
-	// Execute the test only if not already executed in another module.
-	if (support.deleteExpando == null) {
-		// Support: IE<9
-		support.deleteExpando = true;
-		try {
-			delete div.test;
-		} catch( e ) {
-			support.deleteExpando = false;
-		}
-	}
-
-	// Null elements to avoid leaks in IE.
-	div = null;
-})();
-
-
-/**
- * Determines whether an object can have data
- */
-jQuery.acceptData = function( elem ) {
-	var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ],
-		nodeType = +elem.nodeType || 1;
-
-	// Do not set data on non-element DOM nodes because it will not be cleared (#8335).
-	return nodeType !== 1 && nodeType !== 9 ?
-		false :
-
-		// Nodes accept data unless otherwise specified; rejection can be conditional
-		!noData || noData !== true && elem.getAttribute("classid") === noData;
-};
-
-
-var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-function dataAttr( elem, key, data ) {
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-
-		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
-		data = elem.getAttribute( name );
-
-		if ( typeof data === "string" ) {
-			try {
-				data = data === "true" ? true :
-					data === "false" ? false :
-					data === "null" ? null :
-					// Only convert to a number if it doesn't change the string
-					+data + "" === data ? +data :
-					rbrace.test( data ) ? jQuery.parseJSON( data ) :
-					data;
-			} catch( e ) {}
-
-			// Make sure we set the data so it isn't changed later
-			jQuery.data( elem, key, data );
-
-		} else {
-			data = undefined;
-		}
-	}
-
-	return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
-	var name;
-	for ( name in obj ) {
-
-		// if the public data object is empty, the private is still empty
-		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
-			continue;
-		}
-		if ( name !== "toJSON" ) {
-			return false;
-		}
-	}
-
-	return true;
-}
-
-function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
-	if ( !jQuery.acceptData( elem ) ) {
-		return;
-	}
-
-	var ret, thisCache,
-		internalKey = jQuery.expando,
-
-		// We have to handle DOM nodes and JS objects differently because IE6-7
-		// can't GC object references properly across the DOM-JS boundary
-		isNode = elem.nodeType,
-
-		// Only DOM nodes need the global jQuery cache; JS object data is
-		// attached directly to the object so GC can occur automatically
-		cache = isNode ? jQuery.cache : elem,
-
-		// Only defining an ID for JS objects if its cache already exists allows
-		// the code to shortcut on the same path as a DOM node with no cache
-		id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
-
-	// Avoid doing any more work than we need to when trying to get data on an
-	// object that has no data at all
-	if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
-		return;
-	}
-
-	if ( !id ) {
-		// Only DOM nodes need a new unique ID for each element since their data
-		// ends up in the global cache
-		if ( isNode ) {
-			id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;
-		} else {
-			id = internalKey;
-		}
-	}
-
-	if ( !cache[ id ] ) {
-		// Avoid exposing jQuery metadata on plain JS objects when the object
-		// is serialized using JSON.stringify
-		cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
-	}
-
-	// An object can be passed to jQuery.data instead of a key/value pair; this gets
-	// shallow copied over onto the existing cache
-	if ( typeof name === "object" || typeof name === "function" ) {
-		if ( pvt ) {
-			cache[ id ] = jQuery.extend( cache[ id ], name );
-		} else {
-			cache[ id ].data = jQuery.extend( cache[ id ].data, name );
-		}
-	}
-
-	thisCache = cache[ id ];
-
-	// jQuery data() is stored in a separate object inside the object's internal data
-	// cache in order to avoid key collisions between internal data and user-defined
-	// data.
-	if ( !pvt ) {
-		if ( !thisCache.data ) {
-			thisCache.data = {};
-		}
-
-		thisCache = thisCache.data;
-	}
-
-	if ( data !== undefined ) {
-		thisCache[ jQuery.camelCase( name ) ] = data;
-	}
-
-	// Check for both converted-to-camel and non-converted data property names
-	// If a data property was specified
-	if ( typeof name === "string" ) {
-
-		// First Try to find as-is property data
-		ret = thisCache[ name ];
-
-		// Test for null|undefined property data
-		if ( ret == null ) {
-
-			// Try to find the camelCased property
-			ret = thisCache[ jQuery.camelCase( name ) ];
-		}
-	} else {
-		ret = thisCache;
-	}
-
-	return ret;
-}
-
-function internalRemoveData( elem, name, pvt ) {
-	if ( !jQuery.acceptData( elem ) ) {
-		return;
-	}
-
-	var thisCache, i,
-		isNode = elem.nodeType,
-
-		// See jQuery.data for more information
-		cache = isNode ? jQuery.cache : elem,
-		id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
-
-	// If there is already no cache entry for this object, there is no
-	// purpose in continuing
-	if ( !cache[ id ] ) {
-		return;
-	}
-
-	if ( name ) {
-
-		thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
-		if ( thisCache ) {
-
-			// Support array or space separated string names for data keys
-			if ( !jQuery.isArray( name ) ) {
-
-				// try the string as a key before any manipulation
-				if ( name in thisCache ) {
-					name = [ name ];
-				} else {
-
-					// split the camel cased version by spaces unless a key with the spaces exists
-					name = jQuery.camelCase( name );
-					if ( name in thisCache ) {
-						name = [ name ];
-					} else {
-						name = name.split(" ");
-					}
-				}
-			} else {
-				// If "name" is an array of keys...
-				// When data is initially created, via ("key", "val") signature,
-				// keys will be converted to camelCase.
-				// Since there is no way to tell _how_ a key was added, remove
-				// both plain key and camelCase key. #12786
-				// This will only penalize the array argument path.
-				name = name.concat( jQuery.map( name, jQuery.camelCase ) );
-			}
-
-			i = name.length;
-			while ( i-- ) {
-				delete thisCache[ name[i] ];
-			}
-
-			// If there is no data left in the cache, we want to continue
-			// and let the cache object itself get destroyed
-			if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
-				return;
-			}
-		}
-	}
-
-	// See jQuery.data for more information
-	if ( !pvt ) {
-		delete cache[ id ].data;
-
-		// Don't destroy the parent cache unless the internal data object
-		// had been the only thing left in it
-		if ( !isEmptyDataObject( cache[ id ] ) ) {
-			return;
-		}
-	}
-
-	// Destroy the cache
-	if ( isNode ) {
-		jQuery.cleanData( [ elem ], true );
-
-	// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
-	/* jshint eqeqeq: false */
-	} else if ( support.deleteExpando || cache != cache.window ) {
-		/* jshint eqeqeq: true */
-		delete cache[ id ];
-
-	// When all else fails, null
-	} else {
-		cache[ id ] = null;
-	}
-}
-
-jQuery.extend({
-	cache: {},
-
-	// The following elements (space-suffixed to avoid Object.prototype collisions)
-	// throw uncatchable exceptions if you attempt to set expando properties
-	noData: {
-		"applet ": true,
-		"embed ": true,
-		// ...but Flash objects (which have this classid) *can* handle expandos
-		"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
-	},
-
-	hasData: function( elem ) {
-		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
-		return !!elem && !isEmptyDataObject( elem );
-	},
-
-	data: function( elem, name, data ) {
-		return internalData( elem, name, data );
-	},
-
-	removeData: function( elem, name ) {
-		return internalRemoveData( elem, name );
-	},
-
-	// For internal use only.
-	_data: function( elem, name, data ) {
-		return internalData( elem, name, data, true );
-	},
-
-	_removeData: function( elem, name ) {
-		return internalRemoveData( elem, name, true );
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var i, name, data,
-			elem = this[0],
-			attrs = elem && elem.attributes;
-
-		// Special expections of .data basically thwart jQuery.access,
-		// so implement the relevant behavior ourselves
-
-		// Gets all values
-		if ( key === undefined ) {
-			if ( this.length ) {
-				data = jQuery.data( elem );
-
-				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
-					i = attrs.length;
-					while ( i-- ) {
-
-						// Support: IE11+
-						// The attrs elements can be null (#14894)
-						if ( attrs[ i ] ) {
-							name = attrs[ i ].name;
-							if ( name.indexOf( "data-" ) === 0 ) {
-								name = jQuery.camelCase( name.slice(5) );
-								dataAttr( elem, name, data[ name ] );
-							}
-						}
-					}
-					jQuery._data( elem, "parsedAttrs", true );
-				}
-			}
-
-			return data;
-		}
-
-		// Sets multiple values
-		if ( typeof key === "object" ) {
-			return this.each(function() {
-				jQuery.data( this, key );
-			});
-		}
-
-		return arguments.length > 1 ?
-
-			// Sets one value
-			this.each(function() {
-				jQuery.data( this, key, value );
-			}) :
-
-			// Gets one value
-			// Try to fetch any internally stored data first
-			elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			jQuery.removeData( this, key );
-		});
-	}
-});
-
-
-jQuery.extend({
-	queue: function( elem, type, data ) {
-		var queue;
-
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			queue = jQuery._data( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !queue || jQuery.isArray(data) ) {
-					queue = jQuery._data( elem, type, jQuery.makeArray(data) );
-				} else {
-					queue.push( data );
-				}
-			}
-			return queue || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			startLength = queue.length,
-			fn = queue.shift(),
-			hooks = jQuery._queueHooks( elem, type ),
-			next = function() {
-				jQuery.dequeue( elem, type );
-			};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-			startLength--;
-		}
-
-		if ( fn ) {
-
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			// clear up the last queue stop function
-			delete hooks.stop;
-			fn.call( elem, next, hooks );
-		}
-
-		if ( !startLength && hooks ) {
-			hooks.empty.fire();
-		}
-	},
-
-	// not intended for public consumption - generates a queueHooks object, or returns the current one
-	_queueHooks: function( elem, type ) {
-		var key = type + "queueHooks";
-		return jQuery._data( elem, key ) || jQuery._data( elem, key, {
-			empty: jQuery.Callbacks("once memory").add(function() {
-				jQuery._removeData( elem, type + "queue" );
-				jQuery._removeData( elem, key );
-			})
-		});
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		var setter = 2;
-
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-			setter--;
-		}
-
-		if ( arguments.length < setter ) {
-			return jQuery.queue( this[0], type );
-		}
-
-		return data === undefined ?
-			this :
-			this.each(function() {
-				var queue = jQuery.queue( this, type, data );
-
-				// ensure a hooks for this queue
-				jQuery._queueHooks( this, type );
-
-				if ( type === "fx" && queue[0] !== "inprogress" ) {
-					jQuery.dequeue( this, type );
-				}
-			});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, obj ) {
-		var tmp,
-			count = 1,
-			defer = jQuery.Deferred(),
-			elements = this,
-			i = this.length,
-			resolve = function() {
-				if ( !( --count ) ) {
-					defer.resolveWith( elements, [ elements ] );
-				}
-			};
-
-		if ( typeof type !== "string" ) {
-			obj = type;
-			type = undefined;
-		}
-		type = type || "fx";
-
-		while ( i-- ) {
-			tmp = jQuery._data( elements[ i ], type + "queueHooks" );
-			if ( tmp && tmp.empty ) {
-				count++;
-				tmp.empty.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise( obj );
-	}
-});
-var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
-
-var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
-
-var isHidden = function( elem, el ) {
-		// isHidden might be called from jQuery#filter function;
-		// in that case, element will be second argument
-		elem = el || elem;
-		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-	};
-
-
-
-// Multifunctional method to get and set values of a collection
-// The value/s can optionally be executed if it's a function
-var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
-	var i = 0,
-		length = elems.length,
-		bulk = key == null;
-
-	// Sets many values
-	if ( jQuery.type( key ) === "object" ) {
-		chainable = true;
-		for ( i in key ) {
-			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-		}
-
-	// Sets one value
-	} else if ( value !== undefined ) {
-		chainable = true;
-
-		if ( !jQuery.isFunction( value ) ) {
-			raw = true;
-		}
-
-		if ( bulk ) {
-			// Bulk operations run against the entire set
-			if ( raw ) {
-				fn.call( elems, value );
-				fn = null;
-
-			// ...except when executing function values
-			} else {
-				bulk = fn;
-				fn = function( elem, key, value ) {
-					return bulk.call( jQuery( elem ), value );
-				};
-			}
-		}
-
-		if ( fn ) {
-			for ( ; i < length; i++ ) {
-				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-			}
-		}
-	}
-
-	return chainable ?
-		elems :
-
-		// Gets
-		bulk ?
-			fn.call( elems ) :
-			length ? fn( elems[0], key ) : emptyGet;
-};
-var rcheckableType = (/^(?:checkbox|radio)$/i);
-
-
-
-(function() {
-	// Minified: var a,b,c
-	var input = document.createElement( "input" ),
-		div = document.createElement( "div" ),
-		fragment = document.createDocumentFragment();
-
-	// Setup
-	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
-
-	// IE strips leading whitespace when .innerHTML is used
-	support.leadingWhitespace = div.firstChild.nodeType === 3;
-
-	// Make sure that tbody elements aren't automatically inserted
-	// IE will insert them into empty tables
-	support.tbody = !div.getElementsByTagName( "tbody" ).length;
-
-	// Make sure that link elements get serialized correctly by innerHTML
-	// This requires a wrapper element in IE
-	support.htmlSerialize = !!div.getElementsByTagName( "link" ).length;
-
-	// Makes sure cloning an html5 element does not cause problems
-	// Where outerHTML is undefined, this still works
-	support.html5Clone =
-		document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>";
-
-	// Check if a disconnected checkbox will retain its checked
-	// value of true after appended to the DOM (IE6/7)
-	input.type = "checkbox";
-	input.checked = true;
-	fragment.appendChild( input );
-	support.appendChecked = input.checked;
-
-	// Make sure textarea (and checkbox) defaultValue is properly cloned
-	// Support: IE6-IE11+
-	div.innerHTML = "<textarea>x</textarea>";
-	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-
-	// #11217 - WebKit loses check when the name is after the checked attribute
-	fragment.appendChild( div );
-	div.innerHTML = "<input type='radio' checked='checked' name='t'/>";
-
-	// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
-	// old WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Support: IE<9
-	// Opera does not clone events (and typeof div.attachEvent === undefined).
-	// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
-	support.noCloneEvent = true;
-	if ( div.attachEvent ) {
-		div.attachEvent( "onclick", function() {
-			support.noCloneEvent = false;
-		});
-
-		div.cloneNode( true ).click();
-	}
-
-	// Execute the test only if not already executed in another module.
-	if (support.deleteExpando == null) {
-		// Support: IE<9
-		support.deleteExpando = true;
-		try {
-			delete div.test;
-		} catch( e ) {
-			support.deleteExpando = false;
-		}
-	}
-})();
-
-
-(function() {
-	var i, eventName,
-		div = document.createElement( "div" );
-
-	// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)
-	for ( i in { submit: true, change: true, focusin: true }) {
-		eventName = "on" + i;
-
-		if ( !(support[ i + "Bubbles" ] = eventName in window) ) {
-			// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
-			div.setAttribute( eventName, "t" );
-			support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false;
-		}
-	}
-
-	// Null elements to avoid leaks in IE.
-	div = null;
-})();
-
-
-var rformElems = /^(?:input|select|textarea)$/i,
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
-	return true;
-}
-
-function returnFalse() {
-	return false;
-}
-
-function safeActiveElement() {
-	try {
-		return document.activeElement;
-	} catch ( err ) { }
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	global: {},
-
-	add: function( elem, types, handler, data, selector ) {
-		var tmp, events, t, handleObjIn,
-			special, eventHandle, handleObj,
-			handlers, type, namespaces, origType,
-			elemData = jQuery._data( elem );
-
-		// Don't attach events to noData or text/comment nodes (but allow plain objects)
-		if ( !elemData ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-			selector = handleObjIn.selector;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		if ( !(events = elemData.events) ) {
-			events = elemData.events = {};
-		}
-		if ( !(eventHandle = elemData.handle) ) {
-			eventHandle = elemData.handle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?
-					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
-					undefined;
-			};
-			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
-			eventHandle.elem = elem;
-		}
-
-		// Handle multiple events separated by a space
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// There *must* be a type, no attaching namespace-only handlers
-			if ( !type ) {
-				continue;
-			}
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: origType,
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			if ( !(handlers = events[ type ]) ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener/attachEvent if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					// Bind the global event handler to the element
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-
-					} else if ( elem.attachEvent ) {
-						elem.attachEvent( "on" + type, eventHandle );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-		// Nullify elem to prevent memory leaks in IE
-		elem = null;
-	},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-		var j, handleObj, tmp,
-			origCount, t, events,
-			special, handlers, type,
-			namespaces, origType,
-			elemData = jQuery.hasData( elem ) && jQuery._data( elem );
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-			handlers = events[ type ] || [];
-			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
-			// Remove matching events
-			origCount = j = handlers.length;
-			while ( j-- ) {
-				handleObj = handlers[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					( !handler || handler.guid === handleObj.guid ) &&
-					( !tmp || tmp.test( handleObj.namespace ) ) &&
-					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					handlers.splice( j, 1 );
-
-					if ( handleObj.selector ) {
-						handlers.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( origCount && !handlers.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			delete elemData.handle;
-
-			// removeData also checks for emptiness and clears the expando if empty
-			// so use it instead of delete
-			jQuery._removeData( elem, "events" );
-		}
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-		var handle, ontype, cur,
-			bubbleType, special, tmp, i,
-			eventPath = [ elem || document ],
-			type = hasOwn.call( event, "type" ) ? event.type : event,
-			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
-		cur = tmp = elem = elem || document;
-
-		// Don't do events on text and comment nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
-			return;
-		}
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf(".") >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-		ontype = type.indexOf(":") < 0 && "on" + type;
-
-		// Caller can pass in a jQuery.Event object, Object, or just an event type string
-		event = event[ jQuery.expando ] ?
-			event :
-			new jQuery.Event( type, typeof event === "object" && event );
-
-		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
-		event.isTrigger = onlyHandlers ? 2 : 3;
-		event.namespace = namespaces.join(".");
-		event.namespace_re = event.namespace ?
-			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
-			null;
-
-		// Clean up the event in case it is being reused
-		event.result = undefined;
-		if ( !event.target ) {
-			event.target = elem;
-		}
-
-		// Clone any incoming data and prepend the event, creating the handler arg list
-		data = data == null ?
-			[ event ] :
-			jQuery.makeArray( data, [ event ] );
-
-		// Allow special events to draw outside the lines
-		special = jQuery.event.special[ type ] || {};
-		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
-			return;
-		}
-
-		// Determine event propagation path in advance, per W3C events spec (#9951)
-		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-			bubbleType = special.delegateType || type;
-			if ( !rfocusMorph.test( bubbleType + type ) ) {
-				cur = cur.parentNode;
-			}
-			for ( ; cur; cur = cur.parentNode ) {
-				eventPath.push( cur );
-				tmp = cur;
-			}
-
-			// Only add window if we got to document (e.g., not plain obj or detached DOM)
-			if ( tmp === (elem.ownerDocument || document) ) {
-				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
-			}
-		}
-
-		// Fire handlers on the event path
-		i = 0;
-		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
-			event.type = i > 1 ?
-				bubbleType :
-				special.bindType || type;
-
-			// jQuery handler
-			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
-			if ( handle ) {
-				handle.apply( cur, data );
-			}
-
-			// Native handler
-			handle = ontype && cur[ ontype ];
-			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
-				event.result = handle.apply( cur, data );
-				if ( event.result === false ) {
-					event.preventDefault();
-				}
-			}
-		}
-		event.type = type;
-
-		// If nobody prevented the default action, do it now
-		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
-			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
-				jQuery.acceptData( elem ) ) {
-
-				// Call a native DOM method on the target with the same name name as the event.
-				// Can't use an .isFunction() check here because IE6/7 fails that test.
-				// Don't do default actions on window, that's where global variables be (#6170)
-				if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
-
-					// Don't re-trigger an onFOO event when we call its FOO() method
-					tmp = elem[ ontype ];
-
-					if ( tmp ) {
-						elem[ ontype ] = null;
-					}
-
-					// Prevent re-triggering of the same event, since we already bubbled it above
-					jQuery.event.triggered = type;
-					try {
-						elem[ type ]();
-					} catch ( e ) {
-						// IE<9 dies on focus/blur to hidden element (#1486,#12518)
-						// only reproducible on winXP IE8 native, not IE9 in IE8 mode
-					}
-					jQuery.event.triggered = undefined;
-
-					if ( tmp ) {
-						elem[ ontype ] = tmp;
-					}
-				}
-			}
-		}
-
-		return event.result;
-	},
-
-	dispatch: function( event ) {
-
-		// Make a writable jQuery.Event from the native event object
-		event = jQuery.event.fix( event );
-
-		var i, ret, handleObj, matched, j,
-			handlerQueue = [],
-			args = slice.call( arguments ),
-			handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
-			special = jQuery.event.special[ event.type ] || {};
-
-		// Use the fix-ed jQuery.Event rather than the (read-only) native event
-		args[0] = event;
-		event.delegateTarget = this;
-
-		// Call the preDispatch hook for the mapped type, and let it bail if desired
-		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
-			return;
-		}
-
-		// Determine handlers
-		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
-		// Run delegates first; they may want to stop propagation beneath us
-		i = 0;
-		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
-			event.currentTarget = matched.elem;
-
-			j = 0;
-			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
-				// Triggered event must either 1) have no namespace, or
-				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
-				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
-					event.handleObj = handleObj;
-					event.data = handleObj.data;
-
-					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
-							.apply( matched.elem, args );
-
-					if ( ret !== undefined ) {
-						if ( (event.result = ret) === false ) {
-							event.preventDefault();
-							event.stopPropagation();
-						}
-					}
-				}
-			}
-		}
-
-		// Call the postDispatch hook for the mapped type
-		if ( special.postDispatch ) {
-			special.postDispatch.call( this, event );
-		}
-
-		return event.result;
-	},
-
-	handlers: function( event, handlers ) {
-		var sel, handleObj, matches, i,
-			handlerQueue = [],
-			delegateCount = handlers.delegateCount,
-			cur = event.target;
-
-		// Find delegate handlers
-		// Black-hole SVG <use> instance trees (#13180)
-		// Avoid non-left-click bubbling in Firefox (#3861)
-		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
-			/* jshint eqeqeq: false */
-			for ( ; cur != this; cur = cur.parentNode || this ) {
-				/* jshint eqeqeq: true */
-
-				// Don't check non-elements (#13208)
-				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
-				if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
-					matches = [];
-					for ( i = 0; i < delegateCount; i++ ) {
-						handleObj = handlers[ i ];
-
-						// Don't conflict with Object.prototype properties (#13203)
-						sel = handleObj.selector + " ";
-
-						if ( matches[ sel ] === undefined ) {
-							matches[ sel ] = handleObj.needsContext ?
-								jQuery( sel, this ).index( cur ) >= 0 :
-								jQuery.find( sel, this, null, [ cur ] ).length;
-						}
-						if ( matches[ sel ] ) {
-							matches.push( handleObj );
-						}
-					}
-					if ( matches.length ) {
-						handlerQueue.push({ elem: cur, handlers: matches });
-					}
-				}
-			}
-		}
-
-		// Add the remaining (directly-bound) handlers
-		if ( delegateCount < handlers.length ) {
-			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
-		}
-
-		return handlerQueue;
-	},
-
-	fix: function( event ) {
-		if ( event[ jQuery.expando ] ) {
-			return event;
-		}
-
-		// Create a writable copy of the event object and normalize some properties
-		var i, prop, copy,
-			type = event.type,
-			originalEvent = event,
-			fixHook = this.fixHooks[ type ];
-
-		if ( !fixHook ) {
-			this.fixHooks[ type ] = fixHook =
-				rmouseEvent.test( type ) ? this.mouseHooks :
-				rkeyEvent.test( type ) ? this.keyHooks :
-				{};
-		}
-		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
-		event = new jQuery.Event( originalEvent );
-
-		i = copy.length;
-		while ( i-- ) {
-			prop = copy[ i ];
-			event[ prop ] = originalEvent[ prop ];
-		}
-
-		// Support: IE<9
-		// Fix target property (#1925)
-		if ( !event.target ) {
-			event.target = originalEvent.srcElement || document;
-		}
-
-		// Support: Chrome 23+, Safari?
-		// Target should not be a text node (#504, #13143)
-		if ( event.target.nodeType === 3 ) {
-			event.target = event.target.parentNode;
-		}
-
-		// Support: IE<9
-		// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
-		event.metaKey = !!event.metaKey;
-
-		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
-	},
-
-	// Includes some event props shared by KeyEvent and MouseEvent
-	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
-	fixHooks: {},
-
-	keyHooks: {
-		props: "char charCode key keyCode".split(" "),
-		filter: function( event, original ) {
-
-			// Add which for key events
-			if ( event.which == null ) {
-				event.which = original.charCode != null ? original.charCode : original.keyCode;
-			}
-
-			return event;
-		}
-	},
-
-	mouseHooks: {
-		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-		filter: function( event, original ) {
-			var body, eventDoc, doc,
-				button = original.button,
-				fromElement = original.fromElement;
-
-			// Calculate pageX/Y if missing and clientX/Y available
-			if ( event.pageX == null && original.clientX != null ) {
-				eventDoc = event.target.ownerDocument || document;
-				doc = eventDoc.documentElement;
-				body = eventDoc.body;
-
-				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
-				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
-			}
-
-			// Add relatedTarget, if necessary
-			if ( !event.relatedTarget && fromElement ) {
-				event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
-			}
-
-			// Add which for click: 1 === left; 2 === middle; 3 === right
-			// Note: button is not normalized, so don't use it
-			if ( !event.which && button !== undefined ) {
-				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
-			}
-
-			return event;
-		}
-	},
-
-	special: {
-		load: {
-			// Prevent triggered image.load events from bubbling to window.load
-			noBubble: true
-		},
-		focus: {
-			// Fire native event if possible so blur/focus sequence is correct
-			trigger: function() {
-				if ( this !== safeActiveElement() && this.focus ) {
-					try {
-						this.focus();
-						return false;
-					} catch ( e ) {
-						// Support: IE<9
-						// If we error on focus to hidden element (#1486, #12518),
-						// let .trigger() run the handlers
-					}
-				}
-			},
-			delegateType: "focusin"
-		},
-		blur: {
-			trigger: function() {
-				if ( this === safeActiveElement() && this.blur ) {
-					this.blur();
-					return false;
-				}
-			},
-			delegateType: "focusout"
-		},
-		click: {
-			// For checkbox, fire native event so checked state will be right
-			trigger: function() {
-				if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
-					this.click();
-					return false;
-				}
-			},
-
-			// For cross-browser consistency, don't fire native .click() on links
-			_default: function( event ) {
-				return jQuery.nodeName( event.target, "a" );
-			}
-		},
-
-		beforeunload: {
-			postDispatch: function( event ) {
-
-				// Support: Firefox 20+
-				// Firefox doesn't alert if the returnValue field is not set.
-				if ( event.result !== undefined && event.originalEvent ) {
-					event.originalEvent.returnValue = event.result;
-				}
-			}
-		}
-	},
-
-	simulate: function( type, elem, event, bubble ) {
-		// Piggyback on a donor event to simulate a different one.
-		// Fake originalEvent to avoid donor's stopPropagation, but if the
-		// simulated event prevents default then we do the same on the donor.
-		var e = jQuery.extend(
-			new jQuery.Event(),
-			event,
-			{
-				type: type,
-				isSimulated: true,
-				originalEvent: {}
-			}
-		);
-		if ( bubble ) {
-			jQuery.event.trigger( e, null, elem );
-		} else {
-			jQuery.event.dispatch.call( elem, e );
-		}
-		if ( e.isDefaultPrevented() ) {
-			event.preventDefault();
-		}
-	}
-};
-
-jQuery.removeEvent = document.removeEventListener ?
-	function( elem, type, handle ) {
-		if ( elem.removeEventListener ) {
-			elem.removeEventListener( type, handle, false );
-		}
-	} :
-	function( elem, type, handle ) {
-		var name = "on" + type;
-
-		if ( elem.detachEvent ) {
-
-			// #8545, #7054, preventing memory leaks for custom events in IE6-8
-			// detachEvent needed property on element, by name of that event, to properly expose it to GC
-			if ( typeof elem[ name ] === strundefined ) {
-				elem[ name ] = null;
-			}
-
-			elem.detachEvent( name, handle );
-		}
-	};
-
-jQuery.Event = function( src, props ) {
-	// Allow instantiation without the 'new' keyword
-	if ( !(this instanceof jQuery.Event) ) {
-		return new jQuery.Event( src, props );
-	}
-
-	// Event object
-	if ( src && src.type ) {
-		this.originalEvent = src;
-		this.type = src.type;
-
-		// Events bubbling up the document may have been marked as prevented
-		// by a handler lower down the tree; reflect the correct value.
-		this.isDefaultPrevented = src.defaultPrevented ||
-				src.defaultPrevented === undefined &&
-				// Support: IE < 9, Android < 4.0
-				src.returnValue === false ?
-			returnTrue :
-			returnFalse;
-
-	// Event type
-	} else {
-		this.type = src;
-	}
-
-	// Put explicitly provided properties onto the event object
-	if ( props ) {
-		jQuery.extend( this, props );
-	}
-
-	// Create a timestamp if incoming event doesn't have one
-	this.timeStamp = src && src.timeStamp || jQuery.now();
-
-	// Mark it as fixed
-	this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-	isDefaultPrevented: returnFalse,
-	isPropagationStopped: returnFalse,
-	isImmediatePropagationStopped: returnFalse,
-
-	preventDefault: function() {
-		var e = this.originalEvent;
-
-		this.isDefaultPrevented = returnTrue;
-		if ( !e ) {
-			return;
-		}
-
-		// If preventDefault exists, run it on the original event
-		if ( e.preventDefault ) {
-			e.preventDefault();
-
-		// Support: IE
-		// Otherwise set the returnValue property of the original event to false
-		} else {
-			e.returnValue = false;
-		}
-	},
-	stopPropagation: function() {
-		var e = this.originalEvent;
-
-		this.isPropagationStopped = returnTrue;
-		if ( !e ) {
-			return;
-		}
-		// If stopPropagation exists, run it on the original event
-		if ( e.stopPropagation ) {
-			e.stopPropagation();
-		}
-
-		// Support: IE
-		// Set the cancelBubble property of the original event to true
-		e.cancelBubble = true;
-	},
-	stopImmediatePropagation: function() {
-		var e = this.originalEvent;
-
-		this.isImmediatePropagationStopped = returnTrue;
-
-		if ( e && e.stopImmediatePropagation ) {
-			e.stopImmediatePropagation();
-		}
-
-		this.stopPropagation();
-	}
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
-	mouseenter: "mouseover",
-	mouseleave: "mouseout",
-	pointerenter: "pointerover",
-	pointerleave: "pointerout"
-}, function( orig, fix ) {
-	jQuery.event.special[ orig ] = {
-		delegateType: fix,
-		bindType: fix,
-
-		handle: function( event ) {
-			var ret,
-				target = this,
-				related = event.relatedTarget,
-				handleObj = event.handleObj;
-
-			// For mousenter/leave call the handler if related is outside the target.
-			// NB: No relatedTarget if the mouse left/entered the browser window
-			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
-				event.type = handleObj.origType;
-				ret = handleObj.handler.apply( this, arguments );
-				event.type = fix;
-			}
-			return ret;
-		}
-	};
-});
-
-// IE submit delegation
-if ( !support.submitBubbles ) {
-
-	jQuery.event.special.submit = {
-		setup: function() {
-			// Only need this for delegated form submit events
-			if ( jQuery.nodeName( this, "form" ) ) {
-				return false;
-			}
-
-			// Lazy-add a submit handler when a descendant form may potentially be submitted
-			jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
-				// Node name check avoids a VML-related crash in IE (#9807)
-				var elem = e.target,
-					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
-				if ( form && !jQuery._data( form, "submitBubbles" ) ) {
-					jQuery.event.add( form, "submit._submit", function( event ) {
-						event._submit_bubble = true;
-					});
-					jQuery._data( form, "submitBubbles", true );
-				}
-			});
-			// return undefined since we don't need an event listener
-		},
-
-		postDispatch: function( event ) {
-			// If form was submitted by the user, bubble the event up the tree
-			if ( event._submit_bubble ) {
-				delete event._submit_bubble;
-				if ( this.parentNode && !event.isTrigger ) {
-					jQuery.event.simulate( "submit", this.parentNode, event, true );
-				}
-			}
-		},
-
-		teardown: function() {
-			// Only need this for delegated form submit events
-			if ( jQuery.nodeName( this, "form" ) ) {
-				return false;
-			}
-
-			// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
-			jQuery.event.remove( this, "._submit" );
-		}
-	};
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !support.changeBubbles ) {
-
-	jQuery.event.special.change = {
-
-		setup: function() {
-
-			if ( rformElems.test( this.nodeName ) ) {
-				// IE doesn't fire change on a check/radio until blur; trigger it on click
-				// after a propertychange. Eat the blur-change in special.change.handle.
-				// This still fires onchange a second time for check/radio after blur.
-				if ( this.type === "checkbox" || this.type === "radio" ) {
-					jQuery.event.add( this, "propertychange._change", function( event ) {
-						if ( event.originalEvent.propertyName === "checked" ) {
-							this._just_changed = true;
-						}
-					});
-					jQuery.event.add( this, "click._change", function( event ) {
-						if ( this._just_changed && !event.isTrigger ) {
-							this._just_changed = false;
-						}
-						// Allow triggered, simulated change events (#11500)
-						jQuery.event.simulate( "change", this, event, true );
-					});
-				}
-				return false;
-			}
-			// Delegated event; lazy-add a change handler on descendant inputs
-			jQuery.event.add( this, "beforeactivate._change", function( e ) {
-				var elem = e.target;
-
-				if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
-					jQuery.event.add( elem, "change._change", function( event ) {
-						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
-							jQuery.event.simulate( "change", this.parentNode, event, true );
-						}
-					});
-					jQuery._data( elem, "changeBubbles", true );
-				}
-			});
-		},
-
-		handle: function( event ) {
-			var elem = event.target;
-
-			// Swallow native change events from checkbox/radio, we already triggered them above
-			if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
-				return event.handleObj.handler.apply( this, arguments );
-			}
-		},
-
-		teardown: function() {
-			jQuery.event.remove( this, "._change" );
-
-			return !rformElems.test( this.nodeName );
-		}
-	};
-}
-
-// Create "bubbling" focus and blur events
-if ( !support.focusinBubbles ) {
-	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
-		// Attach a single capturing handler on the document while someone wants focusin/focusout
-		var handler = function( event ) {
-				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-			};
-
-		jQuery.event.special[ fix ] = {
-			setup: function() {
-				var doc = this.ownerDocument || this,
-					attaches = jQuery._data( doc, fix );
-
-				if ( !attaches ) {
-					doc.addEventListener( orig, handler, true );
-				}
-				jQuery._data( doc, fix, ( attaches || 0 ) + 1 );
-			},
-			teardown: function() {
-				var doc = this.ownerDocument || this,
-					attaches = jQuery._data( doc, fix ) - 1;
-
-				if ( !attaches ) {
-					doc.removeEventListener( orig, handler, true );
-					jQuery._removeData( doc, fix );
-				} else {
-					jQuery._data( doc, fix, attaches );
-				}
-			}
-		};
-	});
-}
-
-jQuery.fn.extend({
-
-	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
-		var type, origFn;
-
-		// Types can be a map of types/handlers
-		if ( typeof types === "object" ) {
-			// ( types-Object, selector, data )
-			if ( typeof selector !== "string" ) {
-				// ( types-Object, data )
-				data = data || selector;
-				selector = undefined;
-			}
-			for ( type in types ) {
-				this.on( type, selector, data, types[ type ], one );
-			}
-			return this;
-		}
-
-		if ( data == null && fn == null ) {
-			// ( types, fn )
-			fn = selector;
-			data = selector = undefined;
-		} else if ( fn == null ) {
-			if ( typeof selector === "string" ) {
-				// ( types, selector, fn )
-				fn = data;
-				data = undefined;
-			} else {
-				// ( types, data, fn )
-				fn = data;
-				data = selector;
-				selector = undefined;
-			}
-		}
-		if ( fn === false ) {
-			fn = returnFalse;
-		} else if ( !fn ) {
-			return this;
-		}
-
-		if ( one === 1 ) {
-			origFn = fn;
-			fn = function( event ) {
-				// Can use an empty set, since event contains the info
-				jQuery().off( event );
-				return origFn.apply( this, arguments );
-			};
-			// Use same guid so caller can remove using origFn
-			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
-		}
-		return this.each( function() {
-			jQuery.event.add( this, types, fn, data, selector );
-		});
-	},
-	one: function( types, selector, data, fn ) {
-		return this.on( types, selector, data, fn, 1 );
-	},
-	off: function( types, selector, fn ) {
-		var handleObj, type;
-		if ( types && types.preventDefault && types.handleObj ) {
-			// ( event )  dispatched jQuery.Event
-			handleObj = types.handleObj;
-			jQuery( types.delegateTarget ).off(
-				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
-				handleObj.selector,
-				handleObj.handler
-			);
-			return this;
-		}
-		if ( typeof types === "object" ) {
-			// ( types-object [, selector] )
-			for ( type in types ) {
-				this.off( type, selector, types[ type ] );
-			}
-			return this;
-		}
-		if ( selector === false || typeof selector === "function" ) {
-			// ( types [, fn] )
-			fn = selector;
-			selector = undefined;
-		}
-		if ( fn === false ) {
-			fn = returnFalse;
-		}
-		return this.each(function() {
-			jQuery.event.remove( this, types, fn, selector );
-		});
-	},
-
-	trigger: function( type, data ) {
-		return this.each(function() {
-			jQuery.event.trigger( type, data, this );
-		});
-	},
-	triggerHandler: function( type, data ) {
-		var elem = this[0];
-		if ( elem ) {
-			return jQuery.event.trigger( type, data, elem, true );
-		}
-	}
-});
-
-
-function createSafeFragment( document ) {
-	var list = nodeNames.split( "|" ),
-		safeFrag = document.createDocumentFragment();
-
-	if ( safeFrag.createElement ) {
-		while ( list.length ) {
-			safeFrag.createElement(
-				list.pop()
-			);
-		}
-	}
-	return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
-		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
-	rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
-	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
-	rleadingWhitespace = /^\s+/,
-	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
-	rtagName = /<([\w:]+)/,
-	rtbody = /<tbody/i,
-	rhtml = /<|&#?\w+;/,
-	rnoInnerhtml = /<(?:script|style|link)/i,
-	// checked="checked" or checked
-	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
-	rscriptType = /^$|\/(?:java|ecma)script/i,
-	rscriptTypeMasked = /^true\/(.*)/,
-	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
-
-	// We have to close these tags to support XHTML (#13200)
-	wrapMap = {
-		option: [ 1, "<select multiple='multiple'>", "</select>" ],
-		legend: [ 1, "<fieldset>", "</fieldset>" ],
-		area: [ 1, "<map>", "</map>" ],
-		param: [ 1, "<object>", "</object>" ],
-		thead: [ 1, "<table>", "</table>" ],
-		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
-		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
-		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
-
-		// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
-		// unless wrapped in a div with non-breaking characters in front of it.
-		_default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
-	},
-	safeFragment = createSafeFragment( document ),
-	fragmentDiv = safeFragment.appendChild( document.createElement("div") );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-function getAll( context, tag ) {
-	var elems, elem,
-		i = 0,
-		found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) :
-			typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) :
-			undefined;
-
-	if ( !found ) {
-		for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
-			if ( !tag || jQuery.nodeName( elem, tag ) ) {
-				found.push( elem );
-			} else {
-				jQuery.merge( found, getAll( elem, tag ) );
-			}
-		}
-	}
-
-	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
-		jQuery.merge( [ context ], found ) :
-		found;
-}
-
-// Used in buildFragment, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
-	if ( rcheckableType.test( elem.type ) ) {
-		elem.defaultChecked = elem.checked;
-	}
-}
-
-// Support: IE<8
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
-	return jQuery.nodeName( elem, "table" ) &&
-		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
-
-		elem.getElementsByTagName("tbody")[0] ||
-			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
-		elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
-	elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
-	return elem;
-}
-function restoreScript( elem ) {
-	var match = rscriptTypeMasked.exec( elem.type );
-	if ( match ) {
-		elem.type = match[1];
-	} else {
-		elem.removeAttribute("type");
-	}
-	return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
-	var elem,
-		i = 0;
-	for ( ; (elem = elems[i]) != null; i++ ) {
-		jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
-	}
-}
-
-function cloneCopyEvent( src, dest ) {
-
-	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
-		return;
-	}
-
-	var type, i, l,
-		oldData = jQuery._data( src ),
-		curData = jQuery._data( dest, oldData ),
-		events = oldData.events;
-
-	if ( events ) {
-		delete curData.handle;
-		curData.events = {};
-
-		for ( type in events ) {
-			for ( i = 0, l = events[ type ].length; i < l; i++ ) {
-				jQuery.event.add( dest, type, events[ type ][ i ] );
-			}
-		}
-	}
-
-	// make the cloned public data object a copy from the original
-	if ( curData.data ) {
-		curData.data = jQuery.extend( {}, curData.data );
-	}
-}
-
-function fixCloneNodeIssues( src, dest ) {
-	var nodeName, e, data;
-
-	// We do not need to do anything for non-Elements
-	if ( dest.nodeType !== 1 ) {
-		return;
-	}
-
-	nodeName = dest.nodeName.toLowerCase();
-
-	// IE6-8 copies events bound via attachEvent when using cloneNode.
-	if ( !support.noCloneEvent && dest[ jQuery.expando ] ) {
-		data = jQuery._data( dest );
-
-		for ( e in data.events ) {
-			jQuery.removeEvent( dest, e, data.handle );
-		}
-
-		// Event data gets referenced instead of copied if the expando gets copied too
-		dest.removeAttribute( jQuery.expando );
-	}
-
-	// IE blanks contents when cloning scripts, and tries to evaluate newly-set text
-	if ( nodeName === "script" && dest.text !== src.text ) {
-		disableScript( dest ).text = src.text;
-		restoreScript( dest );
-
-	// IE6-10 improperly clones children of object elements using classid.
-	// IE10 throws NoModificationAllowedError if parent is null, #12132.
-	} else if ( nodeName === "object" ) {
-		if ( dest.parentNode ) {
-			dest.outerHTML = src.outerHTML;
-		}
-
-		// This path appears unavoidable for IE9. When cloning an object
-		// element in IE9, the outerHTML strategy above is not sufficient.
-		// If the src has innerHTML and the destination does not,
-		// copy the src.innerHTML into the dest.innerHTML. #10324
-		if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
-			dest.innerHTML = src.innerHTML;
-		}
-
-	} else if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
-		// IE6-8 fails to persist the checked state of a cloned checkbox
-		// or radio button. Worse, IE6-7 fail to give the cloned element
-		// a checked appearance if the defaultChecked value isn't also set
-
-		dest.defaultChecked = dest.checked = src.checked;
-
-		// IE6-7 get confused and end up setting the value of a cloned
-		// checkbox/radio button to an empty string instead of "on"
-		if ( dest.value !== src.value ) {
-			dest.value = src.value;
-		}
-
-	// IE6-8 fails to return the selected option to the default selected
-	// state when cloning options
-	} else if ( nodeName === "option" ) {
-		dest.defaultSelected = dest.selected = src.defaultSelected;
-
-	// IE6-8 fails to set the defaultValue to the correct value when
-	// cloning other types of input fields
-	} else if ( nodeName === "input" || nodeName === "textarea" ) {
-		dest.defaultValue = src.defaultValue;
-	}
-}
-
-jQuery.extend({
-	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
-		var destElements, node, clone, i, srcElements,
-			inPage = jQuery.contains( elem.ownerDocument, elem );
-
-		if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
-			clone = elem.cloneNode( true );
-
-		// IE<=8 does not properly clone detached, unknown element nodes
-		} else {
-			fragmentDiv.innerHTML = elem.outerHTML;
-			fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
-		}
-
-		if ( (!support.noCloneEvent || !support.noCloneChecked) &&
-				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
-
-			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
-			destElements = getAll( clone );
-			srcElements = getAll( elem );
-
-			// Fix all IE cloning issues
-			for ( i = 0; (node = srcElements[i]) != null; ++i ) {
-				// Ensure that the destination node is not null; Fixes #9587
-				if ( destElements[i] ) {
-					fixCloneNodeIssues( node, destElements[i] );
-				}
-			}
-		}
-
-		// Copy the events from the original to the clone
-		if ( dataAndEvents ) {
-			if ( deepDataAndEvents ) {
-				srcElements = srcElements || getAll( elem );
-				destElements = destElements || getAll( clone );
-
-				for ( i = 0; (node = srcElements[i]) != null; i++ ) {
-					cloneCopyEvent( node, destElements[i] );
-				}
-			} else {
-				cloneCopyEvent( elem, clone );
-			}
-		}
-
-		// Preserve script evaluation history
-		destElements = getAll( clone, "script" );
-		if ( destElements.length > 0 ) {
-			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
-		}
-
-		destElements = srcElements = node = null;
-
-		// Return the cloned set
-		return clone;
-	},
-
-	buildFragment: function( elems, context, scripts, selection ) {
-		var j, elem, contains,
-			tmp, tag, tbody, wrap,
-			l = elems.length,
-
-			// Ensure a safe fragment
-			safe = createSafeFragment( context ),
-
-			nodes = [],
-			i = 0;
-
-		for ( ; i < l; i++ ) {
-			elem = elems[ i ];
-
-			if ( elem || elem === 0 ) {
-
-				// Add nodes directly
-				if ( jQuery.type( elem ) === "object" ) {
-					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
-				// Convert non-html into a text node
-				} else if ( !rhtml.test( elem ) ) {
-					nodes.push( context.createTextNode( elem ) );
-
-				// Convert html into DOM nodes
-				} else {
-					tmp = tmp || safe.appendChild( context.createElement("div") );
-
-					// Deserialize a standard representation
-					tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase();
-					wrap = wrapMap[ tag ] || wrapMap._default;
-
-					tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
-
-					// Descend through wrappers to the right content
-					j = wrap[0];
-					while ( j-- ) {
-						tmp = tmp.lastChild;
-					}
-
-					// Manually add leading whitespace removed by IE
-					if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
-						nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
-					}
-
-					// Remove IE's autoinserted <tbody> from table fragments
-					if ( !support.tbody ) {
-
-						// String was a <table>, *may* have spurious <tbody>
-						elem = tag === "table" && !rtbody.test( elem ) ?
-							tmp.firstChild :
-
-							// String was a bare <thead> or <tfoot>
-							wrap[1] === "<table>" && !rtbody.test( elem ) ?
-								tmp :
-								0;
-
-						j = elem && elem.childNodes.length;
-						while ( j-- ) {
-							if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
-								elem.removeChild( tbody );
-							}
-						}
-					}
-
-					jQuery.merge( nodes, tmp.childNodes );
-
-					// Fix #12392 for WebKit and IE > 9
-					tmp.textContent = "";
-
-					// Fix #12392 for oldIE
-					while ( tmp.firstChild ) {
-						tmp.removeChild( tmp.firstChild );
-					}
-
-					// Remember the top-level container for proper cleanup
-					tmp = safe.lastChild;
-				}
-			}
-		}
-
-		// Fix #11356: Clear elements from fragment
-		if ( tmp ) {
-			safe.removeChild( tmp );
-		}
-
-		// Reset defaultChecked for any radios and checkboxes
-		// about to be appended to the DOM in IE 6/7 (#8060)
-		if ( !support.appendChecked ) {
-			jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
-		}
-
-		i = 0;
-		while ( (elem = nodes[ i++ ]) ) {
-
-			// #4087 - If origin and destination elements are the same, and this is
-			// that element, do not do anything
-			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
-				continue;
-			}
-
-			contains = jQuery.contains( elem.ownerDocument, elem );
-
-			// Append to fragment
-			tmp = getAll( safe.appendChild( elem ), "script" );
-
-			// Preserve script evaluation history
-			if ( contains ) {
-				setGlobalEval( tmp );
-			}
-
-			// Capture executables
-			if ( scripts ) {
-				j = 0;
-				while ( (elem = tmp[ j++ ]) ) {
-					if ( rscriptType.test( elem.type || "" ) ) {
-						scripts.push( elem );
-					}
-				}
-			}
-		}
-
-		tmp = null;
-
-		return safe;
-	},
-
-	cleanData: function( elems, /* internal */ acceptData ) {
-		var elem, type, id, data,
-			i = 0,
-			internalKey = jQuery.expando,
-			cache = jQuery.cache,
-			deleteExpando = support.deleteExpando,
-			special = jQuery.event.special;
-
-		for ( ; (elem = elems[i]) != null; i++ ) {
-			if ( acceptData || jQuery.acceptData( elem ) ) {
-
-				id = elem[ internalKey ];
-				data = id && cache[ id ];
-
-				if ( data ) {
-					if ( data.events ) {
-						for ( type in data.events ) {
-							if ( special[ type ] ) {
-								jQuery.event.remove( elem, type );
-
-							// This is a shortcut to avoid jQuery.event.remove's overhead
-							} else {
-								jQuery.removeEvent( elem, type, data.handle );
-							}
-						}
-					}
-
-					// Remove cache only if it was not already removed by jQuery.event.remove
-					if ( cache[ id ] ) {
-
-						delete cache[ id ];
-
-						// IE does not allow us to delete expando properties from nodes,
-						// nor does it have a removeAttribute function on Document nodes;
-						// we must handle all of these cases
-						if ( deleteExpando ) {
-							delete elem[ internalKey ];
-
-						} else if ( typeof elem.removeAttribute !== strundefined ) {
-							elem.removeAttribute( internalKey );
-
-						} else {
-							elem[ internalKey ] = null;
-						}
-
-						deletedIds.push( id );
-					}
-				}
-			}
-		}
-	}
-});
-
-jQuery.fn.extend({
-	text: function( value ) {
-		return access( this, function( value ) {
-			return value === undefined ?
-				jQuery.text( this ) :
-				this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
-		}, null, value, arguments.length );
-	},
-
-	append: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.appendChild( elem );
-			}
-		});
-	},
-
-	prepend: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.insertBefore( elem, target.firstChild );
-			}
-		});
-	},
-
-	before: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this );
-			}
-		});
-	},
-
-	after: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this.nextSibling );
-			}
-		});
-	},
-
-	remove: function( selector, keepData /* Internal Use Only */ ) {
-		var elem,
-			elems = selector ? jQuery.filter( selector, this ) : this,
-			i = 0;
-
-		for ( ; (elem = elems[i]) != null; i++ ) {
-
-			if ( !keepData && elem.nodeType === 1 ) {
-				jQuery.cleanData( getAll( elem ) );
-			}
-
-			if ( elem.parentNode ) {
-				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
-					setGlobalEval( getAll( elem, "script" ) );
-				}
-				elem.parentNode.removeChild( elem );
-			}
-		}
-
-		return this;
-	},
-
-	empty: function() {
-		var elem,
-			i = 0;
-
-		for ( ; (elem = this[i]) != null; i++ ) {
-			// Remove element nodes and prevent memory leaks
-			if ( elem.nodeType === 1 ) {
-				jQuery.cleanData( getAll( elem, false ) );
-			}
-
-			// Remove any remaining nodes
-			while ( elem.firstChild ) {
-				elem.removeChild( elem.firstChild );
-			}
-
-			// If this is a select, ensure that it displays empty (#12336)
-			// Support: IE<9
-			if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
-				elem.options.length = 0;
-			}
-		}
-
-		return this;
-	},
-
-	clone: function( dataAndEvents, deepDataAndEvents ) {
-		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
-		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
-		return this.map(function() {
-			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
-		});
-	},
-
-	html: function( value ) {
-		return access( this, function( value ) {
-			var elem = this[ 0 ] || {},
-				i = 0,
-				l = this.length;
-
-			if ( value === undefined ) {
-				return elem.nodeType === 1 ?
-					elem.innerHTML.replace( rinlinejQuery, "" ) :
-					undefined;
-			}
-
-			// See if we can take a shortcut and just use innerHTML
-			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
-				( support.htmlSerialize || !rnoshimcache.test( value )  ) &&
-				( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
-				!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) {
-
-				value = value.replace( rxhtmlTag, "<$1></$2>" );
-
-				try {
-					for (; i < l; i++ ) {
-						// Remove element nodes and prevent memory leaks
-						elem = this[i] || {};
-						if ( elem.nodeType === 1 ) {
-							jQuery.cleanData( getAll( elem, false ) );
-							elem.innerHTML = value;
-						}
-					}
-
-					elem = 0;
-
-				// If using innerHTML throws an exception, use the fallback method
-				} catch(e) {}
-			}
-
-			if ( elem ) {
-				this.empty().append( value );
-			}
-		}, null, value, arguments.length );
-	},
-
-	replaceWith: function() {
-		var arg = arguments[ 0 ];
-
-		// Make the changes, replacing each context element with the new content
-		this.domManip( arguments, function( elem ) {
-			arg = this.parentNode;
-
-			jQuery.cleanData( getAll( this ) );
-
-			if ( arg ) {
-				arg.replaceChild( elem, this );
-			}
-		});
-
-		// Force removal if there was no new content (e.g., from empty arguments)
-		return arg && (arg.length || arg.nodeType) ? this : this.remove();
-	},
-
-	detach: function( selector ) {
-		return this.remove( selector, true );
-	},
-
-	domManip: function( args, callback ) {
-
-		// Flatten any nested arrays
-		args = concat.apply( [], args );
-
-		var first, node, hasScripts,
-			scripts, doc, fragment,
-			i = 0,
-			l = this.length,
-			set = this,
-			iNoClone = l - 1,
-			value = args[0],
-			isFunction = jQuery.isFunction( value );
-
-		// We can't cloneNode fragments that contain checked, in WebKit
-		if ( isFunction ||
-				( l > 1 && typeof value === "string" &&
-					!support.checkClone && rchecked.test( value ) ) ) {
-			return this.each(function( index ) {
-				var self = set.eq( index );
-				if ( isFunction ) {
-					args[0] = value.call( this, index, self.html() );
-				}
-				self.domManip( args, callback );
-			});
-		}
-
-		if ( l ) {
-			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
-			first = fragment.firstChild;
-
-			if ( fragment.childNodes.length === 1 ) {
-				fragment = first;
-			}
-
-			if ( first ) {
-				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
-				hasScripts = scripts.length;
-
-				// Use the original fragment for the last item instead of the first because it can end up
-				// being emptied incorrectly in certain situations (#8070).
-				for ( ; i < l; i++ ) {
-					node = fragment;
-
-					if ( i !== iNoClone ) {
-						node = jQuery.clone( node, true, true );
-
-						// Keep references to cloned scripts for later restoration
-						if ( hasScripts ) {
-							jQuery.merge( scripts, getAll( node, "script" ) );
-						}
-					}
-
-					callback.call( this[i], node, i );
-				}
-
-				if ( hasScripts ) {
-					doc = scripts[ scripts.length - 1 ].ownerDocument;
-
-					// Reenable scripts
-					jQuery.map( scripts, restoreScript );
-
-					// Evaluate executable scripts on first document insertion
-					for ( i = 0; i < hasScripts; i++ ) {
-						node = scripts[ i ];
-						if ( rscriptType.test( node.type || "" ) &&
-							!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
-							if ( node.src ) {
-								// Optional AJAX dependency, but won't run scripts if not present
-								if ( jQuery._evalUrl ) {
-									jQuery._evalUrl( node.src );
-								}
-							} else {
-								jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
-							}
-						}
-					}
-				}
-
-				// Fix #11809: Avoid leaking memory
-				fragment = first = null;
-			}
-		}
-
-		return this;
-	}
-});
-
-jQuery.each({
-	appendTo: "append",
-	prependTo: "prepend",
-	insertBefore: "before",
-	insertAfter: "after",
-	replaceAll: "replaceWith"
-}, function( name, original ) {
-	jQuery.fn[ name ] = function( selector ) {
-		var elems,
-			i = 0,
-			ret = [],
-			insert = jQuery( selector ),
-			last = insert.length - 1;
-
-		for ( ; i <= last; i++ ) {
-			elems = i === last ? this : this.clone(true);
-			jQuery( insert[i] )[ original ]( elems );
-
-			// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
-			push.apply( ret, elems.get() );
-		}
-
-		return this.pushStack( ret );
-	};
-});
-
-
-var iframe,
-	elemdisplay = {};
-
-/**
- * Retrieve the actual display of a element
- * @param {String} name nodeName of the element
- * @param {Object} doc Document object
- */
-// Called only from within defaultDisplay
-function actualDisplay( name, doc ) {
-	var style,
-		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-
-		// getDefaultComputedStyle might be reliably used only on attached element
-		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
-
-			// Use of this method is a temporary fix (more like optmization) until something better comes along,
-			// since it was removed from specification and supported only in FF
-			style.display : jQuery.css( elem[ 0 ], "display" );
-
-	// We don't have any data stored on the element,
-	// so use "detach" method as fast way to get rid of the element
-	elem.detach();
-
-	return display;
-}
-
-/**
- * Try to determine the default display value of an element
- * @param {String} nodeName
- */
-function defaultDisplay( nodeName ) {
-	var doc = document,
-		display = elemdisplay[ nodeName ];
-
-	if ( !display ) {
-		display = actualDisplay( nodeName, doc );
-
-		// If the simple way fails, read from inside an iframe
-		if ( display === "none" || !display ) {
-
-			// Use the already-created iframe if possible
-			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
-
-			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
-			doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document;
-
-			// Support: IE
-			doc.write();
-			doc.close();
-
-			display = actualDisplay( nodeName, doc );
-			iframe.detach();
-		}
-
-		// Store the correct default display
-		elemdisplay[ nodeName ] = display;
-	}
-
-	return display;
-}
-
-
-(function() {
-	var shrinkWrapBlocksVal;
-
-	support.shrinkWrapBlocks = function() {
-		if ( shrinkWrapBlocksVal != null ) {
-			return shrinkWrapBlocksVal;
-		}
-
-		// Will be changed later if needed.
-		shrinkWrapBlocksVal = false;
-
-		// Minified: var b,c,d
-		var div, body, container;
-
-		body = document.getElementsByTagName( "body" )[ 0 ];
-		if ( !body || !body.style ) {
-			// Test fired too early or in an unsupported environment, exit.
-			return;
-		}
-
-		// Setup
-		div = document.createElement( "div" );
-		container = document.createElement( "div" );
-		container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
-		body.appendChild( container ).appendChild( div );
-
-		// Support: IE6
-		// Check if elements with layout shrink-wrap their children
-		if ( typeof div.style.zoom !== strundefined ) {
-			// Reset CSS: box-sizing; display; margin; border
-			div.style.cssText =
-				// Support: Firefox<29, Android 2.3
-				// Vendor-prefix box-sizing
-				"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
-				"box-sizing:content-box;display:block;margin:0;border:0;" +
-				"padding:1px;width:1px;zoom:1";
-			div.appendChild( document.createElement( "div" ) ).style.width = "5px";
-			shrinkWrapBlocksVal = div.offsetWidth !== 3;
-		}
-
-		body.removeChild( container );
-
-		return shrinkWrapBlocksVal;
-	};
-
-})();
-var rmargin = (/^margin/);
-
-var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
-
-
-
-var getStyles, curCSS,
-	rposition = /^(top|right|bottom|left)$/;
-
-if ( window.getComputedStyle ) {
-	getStyles = function( elem ) {
-		return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
-	};
-
-	curCSS = function( elem, name, computed ) {
-		var width, minWidth, maxWidth, ret,
-			style = elem.style;
-
-		computed = computed || getStyles( elem );
-
-		// getPropertyValue is only needed for .css('filter') in IE9, see #12537
-		ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
-
-		if ( computed ) {
-
-			if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
-				ret = jQuery.style( elem, name );
-			}
-
-			// A tribute to the "awesome hack by Dean Edwards"
-			// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
-			// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
-			// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
-			if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
-
-				// Remember the original values
-				width = style.width;
-				minWidth = style.minWidth;
-				maxWidth = style.maxWidth;
-
-				// Put in the new values to get a computed value out
-				style.minWidth = style.maxWidth = style.width = ret;
-				ret = computed.width;
-
-				// Revert the changed values
-				style.width = width;
-				style.minWidth = minWidth;
-				style.maxWidth = maxWidth;
-			}
-		}
-
-		// Support: IE
-		// IE returns zIndex value as an integer.
-		return ret === undefined ?
-			ret :
-			ret + "";
-	};
-} else if ( document.documentElement.currentStyle ) {
-	getStyles = function( elem ) {
-		return elem.currentStyle;
-	};
-
-	curCSS = function( elem, name, computed ) {
-		var left, rs, rsLeft, ret,
-			style = elem.style;
-
-		computed = computed || getStyles( elem );
-		ret = computed ? computed[ name ] : undefined;
-
-		// Avoid setting ret to empty string here
-		// so we don't default to auto
-		if ( ret == null && style && style[ name ] ) {
-			ret = style[ name ];
-		}
-
-		// From the awesome hack by Dean Edwards
-		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
-		// If we're not dealing with a regular pixel number
-		// but a number that has a weird ending, we need to convert it to pixels
-		// but not position css attributes, as those are proportional to the parent element instead
-		// and we can't measure the parent instead because it might trigger a "stacking dolls" problem
-		if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
-
-			// Remember the original values
-			left = style.left;
-			rs = elem.runtimeStyle;
-			rsLeft = rs && rs.left;
-
-			// Put in the new values to get a computed value out
-			if ( rsLeft ) {
-				rs.left = elem.currentStyle.left;
-			}
-			style.left = name === "fontSize" ? "1em" : ret;
-			ret = style.pixelLeft + "px";
-
-			// Revert the changed values
-			style.left = left;
-			if ( rsLeft ) {
-				rs.left = rsLeft;
-			}
-		}
-
-		// Support: IE
-		// IE returns zIndex value as an integer.
-		return ret === undefined ?
-			ret :
-			ret + "" || "auto";
-	};
-}
-
-
-
-
-function addGetHookIf( conditionFn, hookFn ) {
-	// Define the hook, we'll check on the first run if it's really needed.
-	return {
-		get: function() {
-			var condition = conditionFn();
-
-			if ( condition == null ) {
-				// The test was not ready at this point; screw the hook this time
-				// but check again when needed next time.
-				return;
-			}
-
-			if ( condition ) {
-				// Hook not needed (or it's not possible to use it due to missing dependency),
-				// remove it.
-				// Since there are no other hooks for marginRight, remove the whole object.
-				delete this.get;
-				return;
-			}
-
-			// Hook needed; redefine it so that the support test is not executed again.
-
-			return (this.get = hookFn).apply( this, arguments );
-		}
-	};
-}
-
-
-(function() {
-	// Minified: var b,c,d,e,f,g, h,i
-	var div, style, a, pixelPositionVal, boxSizingReliableVal,
-		reliableHiddenOffsetsVal, reliableMarginRightVal;
-
-	// Setup
-	div = document.createElement( "div" );
-	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
-	a = div.getElementsByTagName( "a" )[ 0 ];
-	style = a && a.style;
-
-	// Finish early in limited (non-browser) environments
-	if ( !style ) {
-		return;
-	}
-
-	style.cssText = "float:left;opacity:.5";
-
-	// Support: IE<9
-	// Make sure that element opacity exists (as opposed to filter)
-	support.opacity = style.opacity === "0.5";
-
-	// Verify style float existence
-	// (IE uses styleFloat instead of cssFloat)
-	support.cssFloat = !!style.cssFloat;
-
-	div.style.backgroundClip = "content-box";
-	div.cloneNode( true ).style.backgroundClip = "";
-	support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
-	// Support: Firefox<29, Android 2.3
-	// Vendor-prefix box-sizing
-	support.boxSizing = style.boxSizing === "" || style.MozBoxSizing === "" ||
-		style.WebkitBoxSizing === "";
-
-	jQuery.extend(support, {
-		reliableHiddenOffsets: function() {
-			if ( reliableHiddenOffsetsVal == null ) {
-				computeStyleTests();
-			}
-			return reliableHiddenOffsetsVal;
-		},
-
-		boxSizingReliable: function() {
-			if ( boxSizingReliableVal == null ) {
-				computeStyleTests();
-			}
-			return boxSizingReliableVal;
-		},
-
-		pixelPosition: function() {
-			if ( pixelPositionVal == null ) {
-				computeStyleTests();
-			}
-			return pixelPositionVal;
-		},
-
-		// Support: Android 2.3
-		reliableMarginRight: function() {
-			if ( reliableMarginRightVal == null ) {
-				computeStyleTests();
-			}
-			return reliableMarginRightVal;
-		}
-	});
-
-	function computeStyleTests() {
-		// Minified: var b,c,d,j
-		var div, body, container, contents;
-
-		body = document.getElementsByTagName( "body" )[ 0 ];
-		if ( !body || !body.style ) {
-			// Test fired too early or in an unsupported environment, exit.
-			return;
-		}
-
-		// Setup
-		div = document.createElement( "div" );
-		container = document.createElement( "div" );
-		container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
-		body.appendChild( container ).appendChild( div );
-
-		div.style.cssText =
-			// Support: Firefox<29, Android 2.3
-			// Vendor-prefix box-sizing
-			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
-			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
-			"border:1px;padding:1px;width:4px;position:absolute";
-
-		// Support: IE<9
-		// Assume reasonable values in the absence of getComputedStyle
-		pixelPositionVal = boxSizingReliableVal = false;
-		reliableMarginRightVal = true;
-
-		// Check for getComputedStyle so that this code is not run in IE<9.
-		if ( window.getComputedStyle ) {
-			pixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
-			boxSizingReliableVal =
-				( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
-
-			// Support: Android 2.3
-			// Div with explicit width and no margin-right incorrectly
-			// gets computed margin-right based on width of container (#3333)
-			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-			contents = div.appendChild( document.createElement( "div" ) );
-
-			// Reset CSS: box-sizing; display; margin; border; padding
-			contents.style.cssText = div.style.cssText =
-				// Support: Firefox<29, Android 2.3
-				// Vendor-prefix box-sizing
-				"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
-				"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
-			contents.style.marginRight = contents.style.width = "0";
-			div.style.width = "1px";
-
-			reliableMarginRightVal =
-				!parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );
-		}
-
-		// Support: IE8
-		// Check if table cells still have offsetWidth/Height when they are set
-		// to display:none and there are still other visible table cells in a
-		// table row; if so, offsetWidth/Height are not reliable for use when
-		// determining if an element has been hidden directly using
-		// display:none (it is still safe to use offsets if a parent element is
-		// hidden; don safety goggles and see bug #4512 for more information).
-		div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
-		contents = div.getElementsByTagName( "td" );
-		contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none";
-		reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
-		if ( reliableHiddenOffsetsVal ) {
-			contents[ 0 ].style.display = "";
-			contents[ 1 ].style.display = "none";
-			reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
-		}
-
-		body.removeChild( container );
-	}
-
-})();
-
-
-// A method for quickly swapping in/out CSS properties to get correct calculations.
-jQuery.swap = function( elem, options, callback, args ) {
-	var ret, name,
-		old = {};
-
-	// Remember the old values, and insert the new ones
-	for ( name in options ) {
-		old[ name ] = elem.style[ name ];
-		elem.style[ name ] = options[ name ];
-	}
-
-	ret = callback.apply( elem, args || [] );
-
-	// Revert the old values
-	for ( name in options ) {
-		elem.style[ name ] = old[ name ];
-	}
-
-	return ret;
-};
-
-
-var
-		ralpha = /alpha\([^)]*\)/i,
-	ropacity = /opacity\s*=\s*([^)]*)/,
-
-	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
-	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
-	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
-	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
-	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
-
-	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
-	cssNormalTransform = {
-		letterSpacing: "0",
-		fontWeight: "400"
-	},
-
-	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-
-// return a css property mapped to a potentially vendor prefixed property
-function vendorPropName( style, name ) {
-
-	// shortcut for names that are not vendor prefixed
-	if ( name in style ) {
-		return name;
-	}
-
-	// check for vendor prefixed names
-	var capName = name.charAt(0).toUpperCase() + name.slice(1),
-		origName = name,
-		i = cssPrefixes.length;
-
-	while ( i-- ) {
-		name = cssPrefixes[ i ] + capName;
-		if ( name in style ) {
-			return name;
-		}
-	}
-
-	return origName;
-}
-
-function showHide( elements, show ) {
-	var display, elem, hidden,
-		values = [],
-		index = 0,
-		length = elements.length;
-
-	for ( ; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-
-		values[ index ] = jQuery._data( elem, "olddisplay" );
-		display = elem.style.display;
-		if ( show ) {
-			// Reset the inline display of this element to learn if it is
-			// being hidden by cascaded rules or not
-			if ( !values[ index ] && display === "none" ) {
-				elem.style.display = "";
-			}
-
-			// Set elements which have been overridden with display: none
-			// in a stylesheet to whatever the default browser style is
-			// for such an element
-			if ( elem.style.display === "" && isHidden( elem ) ) {
-				values[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
-			}
-		} else {
-			hidden = isHidden( elem );
-
-			if ( display && display !== "none" || !hidden ) {
-				jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
-			}
-		}
-	}
-
-	// Set the display of most of the elements in a second loop
-	// to avoid the constant reflow
-	for ( index = 0; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
-			elem.style.display = show ? values[ index ] || "" : "none";
-		}
-	}
-
-	return elements;
-}
-
-function setPositiveNumber( elem, value, subtract ) {
-	var matches = rnumsplit.exec( value );
-	return matches ?
-		// Guard against undefined "subtract", e.g., when used as in cssHooks
-		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
-		value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
-	var i = extra === ( isBorderBox ? "border" : "content" ) ?
-		// If we already have the right measurement, avoid augmentation
-		4 :
-		// Otherwise initialize for horizontal or vertical properties
-		name === "width" ? 1 : 0,
-
-		val = 0;
-
-	for ( ; i < 4; i += 2 ) {
-		// both box models exclude margin, so add it if we want it
-		if ( extra === "margin" ) {
-			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
-		}
-
-		if ( isBorderBox ) {
-			// border-box includes padding, so remove it if we want content
-			if ( extra === "content" ) {
-				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-			}
-
-			// at this point, extra isn't border nor margin, so remove border
-			if ( extra !== "margin" ) {
-				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		} else {
-			// at this point, extra isn't content, so add padding
-			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
-			// at this point, extra isn't content nor padding, so add border
-			if ( extra !== "padding" ) {
-				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		}
-	}
-
-	return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
-	// Start with offset property, which is equivalent to the border-box value
-	var valueIsBorderBox = true,
-		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
-		styles = getStyles( elem ),
-		isBorderBox = support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
-	// some non-html elements return undefined for offsetWidth, so check for null/undefined
-	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
-	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
-	if ( val <= 0 || val == null ) {
-		// Fall back to computed then uncomputed css if necessary
-		val = curCSS( elem, name, styles );
-		if ( val < 0 || val == null ) {
-			val = elem.style[ name ];
-		}
-
-		// Computed unit is not pixels. Stop here and return.
-		if ( rnumnonpx.test(val) ) {
-			return val;
-		}
-
-		// we need the check for style in case a browser which returns unreliable values
-		// for getComputedStyle silently falls back to the reliable elem.style
-		valueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] );
-
-		// Normalize "", auto, and prepare for extra
-		val = parseFloat( val ) || 0;
-	}
-
-	// use the active box-sizing model to add/subtract irrelevant styles
-	return ( val +
-		augmentWidthOrHeight(
-			elem,
-			name,
-			extra || ( isBorderBox ? "border" : "content" ),
-			valueIsBorderBox,
-			styles
-		)
-	) + "px";
-}
-
-jQuery.extend({
-	// Add in style property hooks for overriding the default
-	// behavior of getting and setting a style property
-	cssHooks: {
-		opacity: {
-			get: function( elem, computed ) {
-				if ( computed ) {
-					// We should always get a number back from opacity
-					var ret = curCSS( elem, "opacity" );
-					return ret === "" ? "1" : ret;
-				}
-			}
-		}
-	},
-
-	// Don't automatically add "px" to these possibly-unitless properties
-	cssNumber: {
-		"columnCount": true,
-		"fillOpacity": true,
-		"flexGrow": true,
-		"flexShrink": true,
-		"fontWeight": true,
-		"lineHeight": true,
-		"opacity": true,
-		"order": true,
-		"orphans": true,
-		"widows": true,
-		"zIndex": true,
-		"zoom": true
-	},
-
-	// Add in properties whose names you wish to fix before
-	// setting or getting the value
-	cssProps: {
-		// normalize float css property
-		"float": support.cssFloat ? "cssFloat" : "styleFloat"
-	},
-
-	// Get and set the style property on a DOM Node
-	style: function( elem, name, value, extra ) {
-		// Don't set styles on text and comment nodes
-		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
-			return;
-		}
-
-		// Make sure that we're working with the right name
-		var ret, type, hooks,
-			origName = jQuery.camelCase( name ),
-			style = elem.style;
-
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
-		// gets hook for the prefixed version
-		// followed by the unprefixed version
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// Check if we're setting a value
-		if ( value !== undefined ) {
-			type = typeof value;
-
-			// convert relative number strings (+= or -=) to relative numbers. #7345
-			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
-				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
-				// Fixes bug #9237
-				type = "number";
-			}
-
-			// Make sure that null and NaN values aren't set. See: #7116
-			if ( value == null || value !== value ) {
-				return;
-			}
-
-			// If a number was passed in, add 'px' to the (except for certain CSS properties)
-			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
-				value += "px";
-			}
-
-			// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
-			// but it would mean to define eight (for every problematic property) identical functions
-			if ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
-				style[ name ] = "inherit";
-			}
-
-			// If a hook was provided, use that value, otherwise just set the specified value
-			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-
-				// Support: IE
-				// Swallow errors from 'invalid' CSS values (#5509)
-				try {
-					style[ name ] = value;
-				} catch(e) {}
-			}
-
-		} else {
-			// If a hook was provided get the non-computed value from there
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
-				return ret;
-			}
-
-			// Otherwise just get the value from the style object
-			return style[ name ];
-		}
-	},
-
-	css: function( elem, name, extra, styles ) {
-		var num, val, hooks,
-			origName = jQuery.camelCase( name );
-
-		// Make sure that we're working with the right name
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
-		// gets hook for the prefixed version
-		// followed by the unprefixed version
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// If a hook was provided get the computed value from there
-		if ( hooks && "get" in hooks ) {
-			val = hooks.get( elem, true, extra );
-		}
-
-		// Otherwise, if a way to get the computed value exists, use that
-		if ( val === undefined ) {
-			val = curCSS( elem, name, styles );
-		}
-
-		//convert "normal" to computed value
-		if ( val === "normal" && name in cssNormalTransform ) {
-			val = cssNormalTransform[ name ];
-		}
-
-		// Return, converting to number if forced or a qualifier was provided and val looks numeric
-		if ( extra === "" || extra ) {
-			num = parseFloat( val );
-			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
-		}
-		return val;
-	}
-});
-
-jQuery.each([ "height", "width" ], function( i, name ) {
-	jQuery.cssHooks[ name ] = {
-		get: function( elem, computed, extra ) {
-			if ( computed ) {
-				// certain elements can have dimension info if we invisibly show them
-				// however, it must have a current display style that would benefit from this
-				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
-					jQuery.swap( elem, cssShow, function() {
-						return getWidthOrHeight( elem, name, extra );
-					}) :
-					getWidthOrHeight( elem, name, extra );
-			}
-		},
-
-		set: function( elem, value, extra ) {
-			var styles = extra && getStyles( elem );
-			return setPositiveNumber( elem, value, extra ?
-				augmentWidthOrHeight(
-					elem,
-					name,
-					extra,
-					support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
-					styles
-				) : 0
-			);
-		}
-	};
-});
-
-if ( !support.opacity ) {
-	jQuery.cssHooks.opacity = {
-		get: function( elem, computed ) {
-			// IE uses filters for opacity
-			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
-				( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
-				computed ? "1" : "";
-		},
-
-		set: function( elem, value ) {
-			var style = elem.style,
-				currentStyle = elem.currentStyle,
-				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
-				filter = currentStyle && currentStyle.filter || style.filter || "";
-
-			// IE has trouble with opacity if it does not have layout
-			// Force it by setting the zoom level
-			style.zoom = 1;
-
-			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
-			// if value === "", then remove inline opacity #12685
-			if ( ( value >= 1 || value === "" ) &&
-					jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
-					style.removeAttribute ) {
-
-				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
-				// if "filter:" is present at all, clearType is disabled, we want to avoid this
-				// style.removeAttribute is IE Only, but so apparently is this code path...
-				style.removeAttribute( "filter" );
-
-				// if there is no filter style applied in a css rule or unset inline opacity, we are done
-				if ( value === "" || currentStyle && !currentStyle.filter ) {
-					return;
-				}
-			}
-
-			// otherwise, set new filter values
-			style.filter = ralpha.test( filter ) ?
-				filter.replace( ralpha, opacity ) :
-				filter + " " + opacity;
-		}
-	};
-}
-
-jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
-	function( elem, computed ) {
-		if ( computed ) {
-			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-			// Work around by temporarily setting element display to inline-block
-			return jQuery.swap( elem, { "display": "inline-block" },
-				curCSS, [ elem, "marginRight" ] );
-		}
-	}
-);
-
-// These hooks are used by animate to expand properties
-jQuery.each({
-	margin: "",
-	padding: "",
-	border: "Width"
-}, function( prefix, suffix ) {
-	jQuery.cssHooks[ prefix + suffix ] = {
-		expand: function( value ) {
-			var i = 0,
-				expanded = {},
-
-				// assumes a single number if not a string
-				parts = typeof value === "string" ? value.split(" ") : [ value ];
-
-			for ( ; i < 4; i++ ) {
-				expanded[ prefix + cssExpand[ i ] + suffix ] =
-					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
-			}
-
-			return expanded;
-		}
-	};
-
-	if ( !rmargin.test( prefix ) ) {
-		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
-	}
-});
-
-jQuery.fn.extend({
-	css: function( name, value ) {
-		return access( this, function( elem, name, value ) {
-			var styles, len,
-				map = {},
-				i = 0;
-
-			if ( jQuery.isArray( name ) ) {
-				styles = getStyles( elem );
-				len = name.length;
-
-				for ( ; i < len; i++ ) {
-					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
-				}
-
-				return map;
-			}
-
-			return value !== undefined ?
-				jQuery.style( elem, name, value ) :
-				jQuery.css( elem, name );
-		}, name, value, arguments.length > 1 );
-	},
-	show: function() {
-		return showHide( this, true );
-	},
-	hide: function() {
-		return showHide( this );
-	},
-	toggle: function( state ) {
-		if ( typeof state === "boolean" ) {
-			return state ? this.show() : this.hide();
-		}
-
-		return this.each(function() {
-			if ( isHidden( this ) ) {
-				jQuery( this ).show();
-			} else {
-				jQuery( this ).hide();
-			}
-		});
-	}
-});
-
-
-function Tween( elem, options, prop, end, easing ) {
-	return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
-	constructor: Tween,
-	init: function( elem, options, prop, end, easing, unit ) {
-		this.elem = elem;
-		this.prop = prop;
-		this.easing = easing || "swing";
-		this.options = options;
-		this.start = this.now = this.cur();
-		this.end = end;
-		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
-	},
-	cur: function() {
-		var hooks = Tween.propHooks[ this.prop ];
-
-		return hooks && hooks.get ?
-			hooks.get( this ) :
-			Tween.propHooks._default.get( this );
-	},
-	run: function( percent ) {
-		var eased,
-			hooks = Tween.propHooks[ this.prop ];
-
-		if ( this.options.duration ) {
-			this.pos = eased = jQuery.easing[ this.easing ](
-				percent, this.options.duration * percent, 0, 1, this.options.duration
-			);
-		} else {
-			this.pos = eased = percent;
-		}
-		this.now = ( this.end - this.start ) * eased + this.start;
-
-		if ( this.options.step ) {
-			this.options.step.call( this.elem, this.now, this );
-		}
-
-		if ( hooks && hooks.set ) {
-			hooks.set( this );
-		} else {
-			Tween.propHooks._default.set( this );
-		}
-		return this;
-	}
-};
-
-Tween.prototype.init.prototype = Tween.prototype;
-
-Tween.propHooks = {
-	_default: {
-		get: function( tween ) {
-			var result;
-
-			if ( tween.elem[ tween.prop ] != null &&
-				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
-				return tween.elem[ tween.prop ];
-			}
-
-			// passing an empty string as a 3rd parameter to .css will automatically
-			// attempt a parseFloat and fallback to a string if the parse fails
-			// so, simple values such as "10px" are parsed to Float.
-			// complex values such as "rotate(1rad)" are returned as is.
-			result = jQuery.css( tween.elem, tween.prop, "" );
-			// Empty strings, null, undefined and "auto" are converted to 0.
-			return !result || result === "auto" ? 0 : result;
-		},
-		set: function( tween ) {
-			// use step hook for back compat - use cssHook if its there - use .style if its
-			// available and use plain properties where available
-			if ( jQuery.fx.step[ tween.prop ] ) {
-				jQuery.fx.step[ tween.prop ]( tween );
-			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
-				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
-			} else {
-				tween.elem[ tween.prop ] = tween.now;
-			}
-		}
-	}
-};
-
-// Support: IE <=9
-// Panic based approach to setting things on disconnected nodes
-
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
-	set: function( tween ) {
-		if ( tween.elem.nodeType && tween.elem.parentNode ) {
-			tween.elem[ tween.prop ] = tween.now;
-		}
-	}
-};
-
-jQuery.easing = {
-	linear: function( p ) {
-		return p;
-	},
-	swing: function( p ) {
-		return 0.5 - Math.cos( p * Math.PI ) / 2;
-	}
-};
-
-jQuery.fx = Tween.prototype.init;
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-
-
-
-var
-	fxNow, timerId,
-	rfxtypes = /^(?:toggle|show|hide)$/,
-	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
-	rrun = /queueHooks$/,
-	animationPrefilters = [ defaultPrefilter ],
-	tweeners = {
-		"*": [ function( prop, value ) {
-			var tween = this.createTween( prop, value ),
-				target = tween.cur(),
-				parts = rfxnum.exec( value ),
-				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
-				// Starting value computation is required for potential unit mismatches
-				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
-					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
-				scale = 1,
-				maxIterations = 20;
-
-			if ( start && start[ 3 ] !== unit ) {
-				// Trust units reported by jQuery.css
-				unit = unit || start[ 3 ];
-
-				// Make sure we update the tween properties later on
-				parts = parts || [];
-
-				// Iteratively approximate from a nonzero starting point
-				start = +target || 1;
-
-				do {
-					// If previous iteration zeroed out, double until we get *something*
-					// Use a string for doubling factor so we don't accidentally see scale as unchanged below
-					scale = scale || ".5";
-
-					// Adjust and apply
-					start = start / scale;
-					jQuery.style( tween.elem, prop, start + unit );
-
-				// Update scale, tolerating zero or NaN from tween.cur()
-				// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
-				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
-			}
-
-			// Update tween properties
-			if ( parts ) {
-				start = tween.start = +start || +target || 0;
-				tween.unit = unit;
-				// If a +=/-= token was provided, we're doing a relative animation
-				tween.end = parts[ 1 ] ?
-					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
-					+parts[ 2 ];
-			}
-
-			return tween;
-		} ]
-	};
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
-	setTimeout(function() {
-		fxNow = undefined;
-	});
-	return ( fxNow = jQuery.now() );
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
-	var which,
-		attrs = { height: type },
-		i = 0;
-
-	// if we include width, step value is 1 to do all cssExpand values,
-	// if we don't include width, step value is 2 to skip over Left and Right
-	includeWidth = includeWidth ? 1 : 0;
-	for ( ; i < 4 ; i += 2 - includeWidth ) {
-		which = cssExpand[ i ];
-		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
-	}
-
-	if ( includeWidth ) {
-		attrs.opacity = attrs.width = type;
-	}
-
-	return attrs;
-}
-
-function createTween( value, prop, animation ) {
-	var tween,
-		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
-		index = 0,
-		length = collection.length;
-	for ( ; index < length; index++ ) {
-		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
-
-			// we're done with this property
-			return tween;
-		}
-	}
-}
-
-function defaultPrefilter( elem, props, opts ) {
-	/* jshint validthis: true */
-	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
-		anim = this,
-		orig = {},
-		style = elem.style,
-		hidden = elem.nodeType && isHidden( elem ),
-		dataShow = jQuery._data( elem, "fxshow" );
-
-	// handle queue: false promises
-	if ( !opts.queue ) {
-		hooks = jQuery._queueHooks( elem, "fx" );
-		if ( hooks.unqueued == null ) {
-			hooks.unqueued = 0;
-			oldfire = hooks.empty.fire;
-			hooks.empty.fire = function() {
-				if ( !hooks.unqueued ) {
-					oldfire();
-				}
-			};
-		}
-		hooks.unqueued++;
-
-		anim.always(function() {
-			// doing this makes sure that the complete handler will be called
-			// before this completes
-			anim.always(function() {
-				hooks.unqueued--;
-				if ( !jQuery.queue( elem, "fx" ).length ) {
-					hooks.empty.fire();
-				}
-			});
-		});
-	}
-
-	// height/width overflow pass
-	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
-		// Make sure that nothing sneaks out
-		// Record all 3 overflow attributes because IE does not
-		// change the overflow attribute when overflowX and
-		// overflowY are set to the same value
-		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
-		// Set display property to inline-block for height/width
-		// animations on inline elements that are having width/height animated
-		display = jQuery.css( elem, "display" );
-
-		// Test default display if display is currently "none"
-		checkDisplay = display === "none" ?
-			jQuery._data( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
-
-		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
-
-			// inline-level elements accept inline-block;
-			// block-level elements need to be inline with layout
-			if ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) {
-				style.display = "inline-block";
-			} else {
-				style.zoom = 1;
-			}
-		}
-	}
-
-	if ( opts.overflow ) {
-		style.overflow = "hidden";
-		if ( !support.shrinkWrapBlocks() ) {
-			anim.always(function() {
-				style.overflow = opts.overflow[ 0 ];
-				style.overflowX = opts.overflow[ 1 ];
-				style.overflowY = opts.overflow[ 2 ];
-			});
-		}
-	}
-
-	// show/hide pass
-	for ( prop in props ) {
-		value = props[ prop ];
-		if ( rfxtypes.exec( value ) ) {
-			delete props[ prop ];
-			toggle = toggle || value === "toggle";
-			if ( value === ( hidden ? "hide" : "show" ) ) {
-
-				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
-				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
-					hidden = true;
-				} else {
-					continue;
-				}
-			}
-			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-
-		// Any non-fx value stops us from restoring the original display value
-		} else {
-			display = undefined;
-		}
-	}
-
-	if ( !jQuery.isEmptyObject( orig ) ) {
-		if ( dataShow ) {
-			if ( "hidden" in dataShow ) {
-				hidden = dataShow.hidden;
-			}
-		} else {
-			dataShow = jQuery._data( elem, "fxshow", {} );
-		}
-
-		// store state if its toggle - enables .stop().toggle() to "reverse"
-		if ( toggle ) {
-			dataShow.hidden = !hidden;
-		}
-		if ( hidden ) {
-			jQuery( elem ).show();
-		} else {
-			anim.done(function() {
-				jQuery( elem ).hide();
-			});
-		}
-		anim.done(function() {
-			var prop;
-			jQuery._removeData( elem, "fxshow" );
-			for ( prop in orig ) {
-				jQuery.style( elem, prop, orig[ prop ] );
-			}
-		});
-		for ( prop in orig ) {
-			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
-			if ( !( prop in dataShow ) ) {
-				dataShow[ prop ] = tween.start;
-				if ( hidden ) {
-					tween.end = tween.start;
-					tween.start = prop === "width" || prop === "height" ? 1 : 0;
-				}
-			}
-		}
-
-	// If this is a noop like .hide().hide(), restore an overwritten display value
-	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
-		style.display = display;
-	}
-}
-
-function propFilter( props, specialEasing ) {
-	var index, name, easing, value, hooks;
-
-	// camelCase, specialEasing and expand cssHook pass
-	for ( index in props ) {
-		name = jQuery.camelCase( index );
-		easing = specialEasing[ name ];
-		value = props[ index ];
-		if ( jQuery.isArray( value ) ) {
-			easing = value[ 1 ];
-			value = props[ index ] = value[ 0 ];
-		}
-
-		if ( index !== name ) {
-			props[ name ] = value;
-			delete props[ index ];
-		}
-
-		hooks = jQuery.cssHooks[ name ];
-		if ( hooks && "expand" in hooks ) {
-			value = hooks.expand( value );
-			delete props[ name ];
-
-			// not quite $.extend, this wont overwrite keys already present.
-			// also - reusing 'index' from above because we have the correct "name"
-			for ( index in value ) {
-				if ( !( index in props ) ) {
-					props[ index ] = value[ index ];
-					specialEasing[ index ] = easing;
-				}
-			}
-		} else {
-			specialEasing[ name ] = easing;
-		}
-	}
-}
-
-function Animation( elem, properties, options ) {
-	var result,
-		stopped,
-		index = 0,
-		length = animationPrefilters.length,
-		deferred = jQuery.Deferred().always( function() {
-			// don't match elem in the :animated selector
-			delete tick.elem;
-		}),
-		tick = function() {
-			if ( stopped ) {
-				return false;
-			}
-			var currentTime = fxNow || createFxNow(),
-				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
-				temp = remaining / animation.duration || 0,
-				percent = 1 - temp,
-				index = 0,
-				length = animation.tweens.length;
-
-			for ( ; index < length ; index++ ) {
-				animation.tweens[ index ].run( percent );
-			}
-
-			deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
-			if ( percent < 1 && length ) {
-				return remaining;
-			} else {
-				deferred.resolveWith( elem, [ animation ] );
-				return false;
-			}
-		},
-		animation = deferred.promise({
-			elem: elem,
-			props: jQuery.extend( {}, properties ),
-			opts: jQuery.extend( true, { specialEasing: {} }, options ),
-			originalProperties: properties,
-			originalOptions: options,
-			startTime: fxNow || createFxNow(),
-			duration: options.duration,
-			tweens: [],
-			createTween: function( prop, end ) {
-				var tween = jQuery.Tween( elem, animation.opts, prop, end,
-						animation.opts.specialEasing[ prop ] || animation.opts.easing );
-				animation.tweens.push( tween );
-				return tween;
-			},
-			stop: function( gotoEnd ) {
-				var index = 0,
-					// if we are going to the end, we want to run all the tweens
-					// otherwise we skip this part
-					length = gotoEnd ? animation.tweens.length : 0;
-				if ( stopped ) {
-					return this;
-				}
-				stopped = true;
-				for ( ; index < length ; index++ ) {
-					animation.tweens[ index ].run( 1 );
-				}
-
-				// resolve when we played the last frame
-				// otherwise, reject
-				if ( gotoEnd ) {
-					deferred.resolveWith( elem, [ animation, gotoEnd ] );
-				} else {
-					deferred.rejectWith( elem, [ animation, gotoEnd ] );
-				}
-				return this;
-			}
-		}),
-		props = animation.props;
-
-	propFilter( props, animation.opts.specialEasing );
-
-	for ( ; index < length ; index++ ) {
-		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
-		if ( result ) {
-			return result;
-		}
-	}
-
-	jQuery.map( props, createTween, animation );
-
-	if ( jQuery.isFunction( animation.opts.start ) ) {
-		animation.opts.start.call( elem, animation );
-	}
-
-	jQuery.fx.timer(
-		jQuery.extend( tick, {
-			elem: elem,
-			anim: animation,
-			queue: animation.opts.queue
-		})
-	);
-
-	// attach callbacks from options
-	return animation.progress( animation.opts.progress )
-		.done( animation.opts.done, animation.opts.complete )
-		.fail( animation.opts.fail )
-		.always( animation.opts.always );
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-	tweener: function( props, callback ) {
-		if ( jQuery.isFunction( props ) ) {
-			callback = props;
-			props = [ "*" ];
-		} else {
-			props = props.split(" ");
-		}
-
-		var prop,
-			index = 0,
-			length = props.length;
-
-		for ( ; index < length ; index++ ) {
-			prop = props[ index ];
-			tweeners[ prop ] = tweeners[ prop ] || [];
-			tweeners[ prop ].unshift( callback );
-		}
-	},
-
-	prefilter: function( callback, prepend ) {
-		if ( prepend ) {
-			animationPrefilters.unshift( callback );
-		} else {
-			animationPrefilters.push( callback );
-		}
-	}
-});
-
-jQuery.speed = function( speed, easing, fn ) {
-	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
-		complete: fn || !fn && easing ||
-			jQuery.isFunction( speed ) && speed,
-		duration: speed,
-		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
-	};
-
-	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
-	// normalize opt.queue - true/undefined/null -> "fx"
-	if ( opt.queue == null || opt.queue === true ) {
-		opt.queue = "fx";
-	}
-
-	// Queueing
-	opt.old = opt.complete;
-
-	opt.complete = function() {
-		if ( jQuery.isFunction( opt.old ) ) {
-			opt.old.call( this );
-		}
-
-		if ( opt.queue ) {
-			jQuery.dequeue( this, opt.queue );
-		}
-	};
-
-	return opt;
-};
-
-jQuery.fn.extend({
-	fadeTo: function( speed, to, easing, callback ) {
-
-		// show any hidden elements after setting opacity to 0
-		return this.filter( isHidden ).css( "opacity", 0 ).show()
-
-			// animate to the value specified
-			.end().animate({ opacity: to }, speed, easing, callback );
-	},
-	animate: function( prop, speed, easing, callback ) {
-		var empty = jQuery.isEmptyObject( prop ),
-			optall = jQuery.speed( speed, easing, callback ),
-			doAnimation = function() {
-				// Operate on a copy of prop so per-property easing won't be lost
-				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
-				// Empty animations, or finishing resolves immediately
-				if ( empty || jQuery._data( this, "finish" ) ) {
-					anim.stop( true );
-				}
-			};
-			doAnimation.finish = doAnimation;
-
-		return empty || optall.queue === false ?
-			this.each( doAnimation ) :
-			this.queue( optall.queue, doAnimation );
-	},
-	stop: function( type, clearQueue, gotoEnd ) {
-		var stopQueue = function( hooks ) {
-			var stop = hooks.stop;
-			delete hooks.stop;
-			stop( gotoEnd );
-		};
-
-		if ( typeof type !== "string" ) {
-			gotoEnd = clearQueue;
-			clearQueue = type;
-			type = undefined;
-		}
-		if ( clearQueue && type !== false ) {
-			this.queue( type || "fx", [] );
-		}
-
-		return this.each(function() {
-			var dequeue = true,
-				index = type != null && type + "queueHooks",
-				timers = jQuery.timers,
-				data = jQuery._data( this );
-
-			if ( index ) {
-				if ( data[ index ] && data[ index ].stop ) {
-					stopQueue( data[ index ] );
-				}
-			} else {
-				for ( index in data ) {
-					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
-						stopQueue( data[ index ] );
-					}
-				}
-			}
-
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
-					timers[ index ].anim.stop( gotoEnd );
-					dequeue = false;
-					timers.splice( index, 1 );
-				}
-			}
-
-			// start the next in the queue if the last step wasn't forced
-			// timers currently will call their complete callbacks, which will dequeue
-			// but only if they were gotoEnd
-			if ( dequeue || !gotoEnd ) {
-				jQuery.dequeue( this, type );
-			}
-		});
-	},
-	finish: function( type ) {
-		if ( type !== false ) {
-			type = type || "fx";
-		}
-		return this.each(function() {
-			var index,
-				data = jQuery._data( this ),
-				queue = data[ type + "queue" ],
-				hooks = data[ type + "queueHooks" ],
-				timers = jQuery.timers,
-				length = queue ? queue.length : 0;
-
-			// enable finishing flag on private data
-			data.finish = true;
-
-			// empty the queue first
-			jQuery.queue( this, type, [] );
-
-			if ( hooks && hooks.stop ) {
-				hooks.stop.call( this, true );
-			}
-
-			// look for any active animations, and finish them
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
-					timers[ index ].anim.stop( true );
-					timers.splice( index, 1 );
-				}
-			}
-
-			// look for any animations in the old queue and finish them
-			for ( index = 0; index < length; index++ ) {
-				if ( queue[ index ] && queue[ index ].finish ) {
-					queue[ index ].finish.call( this );
-				}
-			}
-
-			// turn off finishing flag
-			delete data.finish;
-		});
-	}
-});
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
-	var cssFn = jQuery.fn[ name ];
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return speed == null || typeof speed === "boolean" ?
-			cssFn.apply( this, arguments ) :
-			this.animate( genFx( name, true ), speed, easing, callback );
-	};
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
-	slideDown: genFx("show"),
-	slideUp: genFx("hide"),
-	slideToggle: genFx("toggle"),
-	fadeIn: { opacity: "show" },
-	fadeOut: { opacity: "hide" },
-	fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return this.animate( props, speed, easing, callback );
-	};
-});
-
-jQuery.timers = [];
-jQuery.fx.tick = function() {
-	var timer,
-		timers = jQuery.timers,
-		i = 0;
-
-	fxNow = jQuery.now();
-
-	for ( ; i < timers.length; i++ ) {
-		timer = timers[ i ];
-		// Checks the timer has not already been removed
-		if ( !timer() && timers[ i ] === timer ) {
-			timers.splice( i--, 1 );
-		}
-	}
-
-	if ( !timers.length ) {
-		jQuery.fx.stop();
-	}
-	fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
-	jQuery.timers.push( timer );
-	if ( timer() ) {
-		jQuery.fx.start();
-	} else {
-		jQuery.timers.pop();
-	}
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
-	if ( !timerId ) {
-		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
-	}
-};
-
-jQuery.fx.stop = function() {
-	clearInterval( timerId );
-	timerId = null;
-};
-
-jQuery.fx.speeds = {
-	slow: 600,
-	fast: 200,
-	// Default speed
-	_default: 400
-};
-
-
-// Based off of the plugin by Clint Helfers, with permission.
-// http://blindsignals.com/index.php/2009/07/jquery-delay/
-jQuery.fn.delay = function( time, type ) {
-	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-	type = type || "fx";
-
-	return this.queue( type, function( next, hooks ) {
-		var timeout = setTimeout( next, time );
-		hooks.stop = function() {
-			clearTimeout( timeout );
-		};
-	});
-};
-
-
-(function() {
-	// Minified: var a,b,c,d,e
-	var input, div, select, a, opt;
-
-	// Setup
-	div = document.createElement( "div" );
-	div.setAttribute( "className", "t" );
-	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
-	a = div.getElementsByTagName("a")[ 0 ];
-
-	// First batch of tests.
-	select = document.createElement("select");
-	opt = select.appendChild( document.createElement("option") );
-	input = div.getElementsByTagName("input")[ 0 ];
-
-	a.style.cssText = "top:1px";
-
-	// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
-	support.getSetAttribute = div.className !== "t";
-
-	// Get the style information from getAttribute
-	// (IE uses .cssText instead)
-	support.style = /top/.test( a.getAttribute("style") );
-
-	// Make sure that URLs aren't manipulated
-	// (IE normalizes it by default)
-	support.hrefNormalized = a.getAttribute("href") === "/a";
-
-	// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
-	support.checkOn = !!input.value;
-
-	// Make sure that a selected-by-default option has a working selected property.
-	// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-	support.optSelected = opt.selected;
-
-	// Tests for enctype support on a form (#6743)
-	support.enctype = !!document.createElement("form").enctype;
-
-	// Make sure that the options inside disabled selects aren't marked as disabled
-	// (WebKit marks them as disabled)
-	select.disabled = true;
-	support.optDisabled = !opt.disabled;
-
-	// Support: IE8 only
-	// Check if we can trust getAttribute("value")
-	input = document.createElement( "input" );
-	input.setAttribute( "value", "" );
-	support.input = input.getAttribute( "value" ) === "";
-
-	// Check if an input maintains its value after becoming a radio
-	input.value = "t";
-	input.setAttribute( "type", "radio" );
-	support.radioValue = input.value === "t";
-})();
-
-
-var rreturn = /\r/g;
-
-jQuery.fn.extend({
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// handle most common string cases
-					ret.replace(rreturn, "") :
-					// handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, jQuery( this ).val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-			} else if ( typeof val === "number" ) {
-				val += "";
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map( val, function( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				var val = jQuery.find.attr( elem, "value" );
-				return val != null ?
-					val :
-					// Support: IE10-11+
-					// option.text throws exceptions (#14686, #14858)
-					jQuery.trim( jQuery.text( elem ) );
-			}
-		},
-		select: {
-			get: function( elem ) {
-				var value, option,
-					options = elem.options,
-					index = elem.selectedIndex,
-					one = elem.type === "select-one" || index < 0,
-					values = one ? null : [],
-					max = one ? index + 1 : options.length,
-					i = index < 0 ?
-						max :
-						one ? index : 0;
-
-				// Loop through all the selected options
-				for ( ; i < max; i++ ) {
-					option = options[ i ];
-
-					// oldIE doesn't update selected after form reset (#2551)
-					if ( ( option.selected || i === index ) &&
-							// Don't return options that are disabled or in a disabled optgroup
-							( support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
-							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var optionSet, option,
-					options = elem.options,
-					values = jQuery.makeArray( value ),
-					i = options.length;
-
-				while ( i-- ) {
-					option = options[ i ];
-
-					if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {
-
-						// Support: IE6
-						// When new option element is added to select box we need to
-						// force reflow of newly added node in order to workaround delay
-						// of initialization properties
-						try {
-							option.selected = optionSet = true;
-
-						} catch ( _ ) {
-
-							// Will be executed only in IE6
-							option.scrollHeight;
-						}
-
-					} else {
-						option.selected = false;
-					}
-				}
-
-				// Force browsers to behave consistently when non-matching value is set
-				if ( !optionSet ) {
-					elem.selectedIndex = -1;
-				}
-
-				return options;
-			}
-		}
-	}
-});
-
-// Radios and checkboxes getter/setter
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	};
-	if ( !support.checkOn ) {
-		jQuery.valHooks[ this ].get = function( elem ) {
-			// Support: Webkit
-			// "" is returned instead of "on" if a value isn't specified
-			return elem.getAttribute("value") === null ? "on" : elem.value;
-		};
-	}
-});
-
-
-
-
-var nodeHook, boolHook,
-	attrHandle = jQuery.expr.attrHandle,
-	ruseDefault = /^(?:checked|selected)$/i,
-	getSetAttribute = support.getSetAttribute,
-	getSetInput = support.input;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return access( this, jQuery.attr, name, value, arguments.length > 1 );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	}
-});
-
-jQuery.extend({
-	attr: function( elem, name, value ) {
-		var hooks, ret,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === strundefined ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] ||
-				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-
-			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, value + "" );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-			ret = jQuery.find.attr( elem, name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret == null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var name, propName,
-			i = 0,
-			attrNames = value && value.match( rnotwhite );
-
-		if ( attrNames && elem.nodeType === 1 ) {
-			while ( (name = attrNames[i++]) ) {
-				propName = jQuery.propFix[ name ] || name;
-
-				// Boolean attributes get special treatment (#10870)
-				if ( jQuery.expr.match.bool.test( name ) ) {
-					// Set corresponding property to false
-					if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
-						elem[ propName ] = false;
-					// Support: IE<9
-					// Also clear defaultChecked/defaultSelected (if appropriate)
-					} else {
-						elem[ jQuery.camelCase( "default-" + name ) ] =
-							elem[ propName ] = false;
-					}
-
-				// See #9699 for explanation of this approach (setting first, then removal)
-				} else {
-					jQuery.attr( elem, name, "" );
-				}
-
-				elem.removeAttribute( getSetAttribute ? name : propName );
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				if ( !support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
-					// Setting the type on a radio button after the value resets the value in IE6-9
-					// Reset value to default in case type is set after value during creation
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		}
-	}
-});
-
-// Hook for boolean attributes
-boolHook = {
-	set: function( elem, value, name ) {
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
-			// IE<8 needs the *property* name
-			elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
-
-		// Use defaultChecked and defaultSelected for oldIE
-		} else {
-			elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
-		}
-
-		return name;
-	}
-};
-
-// Retrieve booleans specially
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
-
-	var getter = attrHandle[ name ] || jQuery.find.attr;
-
-	attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
-		function( elem, name, isXML ) {
-			var ret, handle;
-			if ( !isXML ) {
-				// Avoid an infinite loop by temporarily removing this function from the getter
-				handle = attrHandle[ name ];
-				attrHandle[ name ] = ret;
-				ret = getter( elem, name, isXML ) != null ?
-					name.toLowerCase() :
-					null;
-				attrHandle[ name ] = handle;
-			}
-			return ret;
-		} :
-		function( elem, name, isXML ) {
-			if ( !isXML ) {
-				return elem[ jQuery.camelCase( "default-" + name ) ] ?
-					name.toLowerCase() :
-					null;
-			}
-		};
-});
-
-// fix oldIE attroperties
-if ( !getSetInput || !getSetAttribute ) {
-	jQuery.attrHooks.value = {
-		set: function( elem, value, name ) {
-			if ( jQuery.nodeName( elem, "input" ) ) {
-				// Does not return so that setAttribute is also used
-				elem.defaultValue = value;
-			} else {
-				// Use nodeHook if defined (#1954); otherwise setAttribute is fine
-				return nodeHook && nodeHook.set( elem, value, name );
-			}
-		}
-	};
-}
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
-	// Use this for any attribute in IE6/7
-	// This fixes almost every IE6/7 issue
-	nodeHook = {
-		set: function( elem, value, name ) {
-			// Set the existing or create a new attribute node
-			var ret = elem.getAttributeNode( name );
-			if ( !ret ) {
-				elem.setAttributeNode(
-					(ret = elem.ownerDocument.createAttribute( name ))
-				);
-			}
-
-			ret.value = value += "";
-
-			// Break association with cloned elements by also using setAttribute (#9646)
-			if ( name === "value" || value === elem.getAttribute( name ) ) {
-				return value;
-			}
-		}
-	};
-
-	// Some attributes are constructed with empty-string values when not defined
-	attrHandle.id = attrHandle.name = attrHandle.coords =
-		function( elem, name, isXML ) {
-			var ret;
-			if ( !isXML ) {
-				return (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
-					ret.value :
-					null;
-			}
-		};
-
-	// Fixing value retrieval on a button requires this module
-	jQuery.valHooks.button = {
-		get: function( elem, name ) {
-			var ret = elem.getAttributeNode( name );
-			if ( ret && ret.specified ) {
-				return ret.value;
-			}
-		},
-		set: nodeHook.set
-	};
-
-	// Set contenteditable to false on removals(#10429)
-	// Setting to empty string throws an error as an invalid value
-	jQuery.attrHooks.contenteditable = {
-		set: function( elem, value, name ) {
-			nodeHook.set( elem, value === "" ? false : value, name );
-		}
-	};
-
-	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
-	// This is for removals
-	jQuery.each([ "width", "height" ], function( i, name ) {
-		jQuery.attrHooks[ name ] = {
-			set: function( elem, value ) {
-				if ( value === "" ) {
-					elem.setAttribute( name, "auto" );
-					return value;
-				}
-			}
-		};
-	});
-}
-
-if ( !support.style ) {
-	jQuery.attrHooks.style = {
-		get: function( elem ) {
-			// Return undefined in the case of empty string
-			// Note: IE uppercases css property names, but if we were to .toLowerCase()
-			// .cssText, that would destroy case senstitivity in URL's, like in "background"
-			return elem.style.cssText || undefined;
-		},
-		set: function( elem, value ) {
-			return ( elem.style.cssText = value + "" );
-		}
-	};
-}
-
-
-
-
-var rfocusable = /^(?:input|select|textarea|button|object)$/i,
-	rclickable = /^(?:a|area)$/i;
-
-jQuery.fn.extend({
-	prop: function( name, value ) {
-		return access( this, jQuery.prop, name, value, arguments.length > 1 );
-	},
-
-	removeProp: function( name ) {
-		name = jQuery.propFix[ name ] || name;
-		return this.each(function() {
-			// try/catch handles cases where IE balks (such as removing a property on window)
-			try {
-				this[ name ] = undefined;
-				delete this[ name ];
-			} catch( e ) {}
-		});
-	}
-});
-
-jQuery.extend({
-	propFix: {
-		"for": "htmlFor",
-		"class": "className"
-	},
-
-	prop: function( elem, name, value ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set properties on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		if ( notxml ) {
-			// Fix name and attach hooks
-			name = jQuery.propFix[ name ] || name;
-			hooks = jQuery.propHooks[ name ];
-		}
-
-		if ( value !== undefined ) {
-			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
-				ret :
-				( elem[ name ] = value );
-
-		} else {
-			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
-				ret :
-				elem[ name ];
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-				// Use proper attribute retrieval(#12072)
-				var tabindex = jQuery.find.attr( elem, "tabindex" );
-
-				return tabindex ?
-					parseInt( tabindex, 10 ) :
-					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
-						0 :
-						-1;
-			}
-		}
-	}
-});
-
-// Some attributes require a special call on IE
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !support.hrefNormalized ) {
-	// href/src property should get the full normalized URL (#10299/#12915)
-	jQuery.each([ "href", "src" ], function( i, name ) {
-		jQuery.propHooks[ name ] = {
-			get: function( elem ) {
-				return elem.getAttribute( name, 4 );
-			}
-		};
-	});
-}
-
-// Support: Safari, IE9+
-// mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !support.optSelected ) {
-	jQuery.propHooks.selected = {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-
-			if ( parent ) {
-				parent.selectedIndex;
-
-				// Make sure that it also works with optgroups, see #5701
-				if ( parent.parentNode ) {
-					parent.parentNode.selectedIndex;
-				}
-			}
-			return null;
-		}
-	};
-}
-
-jQuery.each([
-	"tabIndex",
-	"readOnly",
-	"maxLength",
-	"cellSpacing",
-	"cellPadding",
-	"rowSpan",
-	"colSpan",
-	"useMap",
-	"frameBorder",
-	"contentEditable"
-], function() {
-	jQuery.propFix[ this.toLowerCase() ] = this;
-});
-
-// IE6/7 call enctype encoding
-if ( !support.enctype ) {
-	jQuery.propFix.enctype = "encoding";
-}
-
-
-
-
-var rclass = /[\t\r\n\f]/g;
-
-jQuery.fn.extend({
-	addClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			i = 0,
-			len = this.length,
-			proceed = typeof value === "string" && value;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call( this, j, this.className ) );
-			});
-		}
-
-		if ( proceed ) {
-			// The disjunction here is for better compressibility (see removeClass)
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					" "
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
-							cur += clazz + " ";
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = jQuery.trim( cur );
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			i = 0,
-			len = this.length,
-			proceed = arguments.length === 0 || typeof value === "string" && value;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call( this, j, this.className ) );
-			});
-		}
-		if ( proceed ) {
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				// This expression is here for better compressibility (see addClass)
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					""
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						// Remove *all* instances
-						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
-							cur = cur.replace( " " + clazz + " ", " " );
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = value ? jQuery.trim( cur ) : "";
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value;
-
-		if ( typeof stateVal === "boolean" && type === "string" ) {
-			return stateVal ? this.addClass( value ) : this.removeClass( value );
-		}
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					classNames = value.match( rnotwhite ) || [];
-
-				while ( (className = classNames[ i++ ]) ) {
-					// check each className given, space separated list
-					if ( self.hasClass( className ) ) {
-						self.removeClass( className );
-					} else {
-						self.addClass( className );
-					}
-				}
-
-			// Toggle whole class name
-			} else if ( type === strundefined || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					jQuery._data( this, "__className__", this.className );
-				}
-
-				// If the element has a class name or if we're passed "false",
-				// then remove the whole classname (if there was one, the above saved it).
-				// Otherwise bring back whatever was previously saved (if anything),
-				// falling back to the empty string if nothing was stored.
-				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
-			}
-		});
-	},
-
-	hasClass: function( selector ) {
-		var className = " " + selector + " ",
-			i = 0,
-			l = this.length;
-		for ( ; i < l; i++ ) {
-			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-});
-
-
-
-
-// Return jQuery for attributes-only inclusion
-
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
-	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
-	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
-	// Handle event binding
-	jQuery.fn[ name ] = function( data, fn ) {
-		return arguments.length > 0 ?
-			this.on( name, null, data, fn ) :
-			this.trigger( name );
-	};
-});
-
-jQuery.fn.extend({
-	hover: function( fnOver, fnOut ) {
-		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-	},
-
-	bind: function( types, data, fn ) {
-		return this.on( types, null, data, fn );
-	},
-	unbind: function( types, fn ) {
-		return this.off( types, null, fn );
-	},
-
-	delegate: function( selector, types, data, fn ) {
-		return this.on( types, selector, data, fn );
-	},
-	undelegate: function( selector, types, fn ) {
-		// ( namespace ) or ( selector, types [, fn] )
-		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-	}
-});
-
-
-var nonce = jQuery.now();
-
-var rquery = (/\?/);
-
-
-
-var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
-
-jQuery.parseJSON = function( data ) {
-	// Attempt to parse using the native JSON parser first
-	if ( window.JSON && window.JSON.parse ) {
-		// Support: Android 2.3
-		// Workaround failure to string-cast null input
-		return window.JSON.parse( data + "" );
-	}
-
-	var requireNonComma,
-		depth = null,
-		str = jQuery.trim( data + "" );
-
-	// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains
-	// after removing valid tokens
-	return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {
-
-		// Force termination if we see a misplaced comma
-		if ( requireNonComma && comma ) {
-			depth = 0;
-		}
-
-		// Perform no more replacements after returning to outermost depth
-		if ( depth === 0 ) {
-			return token;
-		}
-
-		// Commas must not follow "[", "{", or ","
-		requireNonComma = open || comma;
-
-		// Determine new depth
-		// array/object open ("[" or "{"): depth += true - false (increment)
-		// array/object close ("]" or "}"): depth += false - true (decrement)
-		// other cases ("," or primitive): depth += true - true (numeric cast)
-		depth += !close - !open;
-
-		// Remove this token
-		return "";
-	}) ) ?
-		( Function( "return " + str ) )() :
-		jQuery.error( "Invalid JSON: " + data );
-};
-
-
-// Cross-browser xml parsing
-jQuery.parseXML = function( data ) {
-	var xml, tmp;
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-	try {
-		if ( window.DOMParser ) { // Standard
-			tmp = new DOMParser();
-			xml = tmp.parseFromString( data, "text/xml" );
-		} else { // IE
-			xml = new ActiveXObject( "Microsoft.XMLDOM" );
-			xml.async = "false";
-			xml.loadXML( data );
-		}
-	} catch( e ) {
-		xml = undefined;
-	}
-	if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
-		jQuery.error( "Invalid XML: " + data );
-	}
-	return xml;
-};
-
-
-var
-	// Document location
-	ajaxLocParts,
-	ajaxLocation,
-
-	rhash = /#.*$/,
-	rts = /([?&])_=[^&]*/,
-	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
-	// #7653, #8125, #8152: local protocol detection
-	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
-	rnoContent = /^(?:GET|HEAD)$/,
-	rprotocol = /^\/\//,
-	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
-
-	/* Prefilters
-	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
-	 * 2) These are called:
-	 *    - BEFORE asking for a transport
-	 *    - AFTER param serialization (s.data is a string if s.processData is true)
-	 * 3) key is the dataType
-	 * 4) the catchall symbol "*" can be used
-	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
-	 */
-	prefilters = {},
-
-	/* Transports bindings
-	 * 1) key is the dataType
-	 * 2) the catchall symbol "*" can be used
-	 * 3) selection will start with transport dataType and THEN go to "*" if needed
-	 */
-	transports = {},
-
-	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
-	allTypes = "*/".concat("*");
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
-	ajaxLocation = location.href;
-} catch( e ) {
-	// Use the href attribute of an A element
-	// since IE will modify it given document.location
-	ajaxLocation = document.createElement( "a" );
-	ajaxLocation.href = "";
-	ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
-	// dataTypeExpression is optional and defaults to "*"
-	return function( dataTypeExpression, func ) {
-
-		if ( typeof dataTypeExpression !== "string" ) {
-			func = dataTypeExpression;
-			dataTypeExpression = "*";
-		}
-
-		var dataType,
-			i = 0,
-			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
-
-		if ( jQuery.isFunction( func ) ) {
-			// For each dataType in the dataTypeExpression
-			while ( (dataType = dataTypes[i++]) ) {
-				// Prepend if requested
-				if ( dataType.charAt( 0 ) === "+" ) {
-					dataType = dataType.slice( 1 ) || "*";
-					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
-				// Otherwise append
-				} else {
-					(structure[ dataType ] = structure[ dataType ] || []).push( func );
-				}
-			}
-		}
-	};
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
-	var inspected = {},
-		seekingTransport = ( structure === transports );
-
-	function inspect( dataType ) {
-		var selected;
-		inspected[ dataType ] = true;
-		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
-			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
-			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-				options.dataTypes.unshift( dataTypeOrTransport );
-				inspect( dataTypeOrTransport );
-				return false;
-			} else if ( seekingTransport ) {
-				return !( selected = dataTypeOrTransport );
-			}
-		});
-		return selected;
-	}
-
-	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
-	var deep, key,
-		flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
-	for ( key in src ) {
-		if ( src[ key ] !== undefined ) {
-			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
-		}
-	}
-	if ( deep ) {
-		jQuery.extend( true, target, deep );
-	}
-
-	return target;
-}
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-	var firstDataType, ct, finalDataType, type,
-		contents = s.contents,
-		dataTypes = s.dataTypes;
-
-	// Remove auto dataType and get content-type in the process
-	while ( dataTypes[ 0 ] === "*" ) {
-		dataTypes.shift();
-		if ( ct === undefined ) {
-			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
-		}
-	}
-
-	// Check if we're dealing with a known content-type
-	if ( ct ) {
-		for ( type in contents ) {
-			if ( contents[ type ] && contents[ type ].test( ct ) ) {
-				dataTypes.unshift( type );
-				break;
-			}
-		}
-	}
-
-	// Check to see if we have a response for the expected dataType
-	if ( dataTypes[ 0 ] in responses ) {
-		finalDataType = dataTypes[ 0 ];
-	} else {
-		// Try convertible dataTypes
-		for ( type in responses ) {
-			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
-				finalDataType = type;
-				break;
-			}
-			if ( !firstDataType ) {
-				firstDataType = type;
-			}
-		}
-		// Or just use first one
-		finalDataType = finalDataType || firstDataType;
-	}
-
-	// If we found a dataType
-	// We add the dataType to the list if needed
-	// and return the corresponding response
-	if ( finalDataType ) {
-		if ( finalDataType !== dataTypes[ 0 ] ) {
-			dataTypes.unshift( finalDataType );
-		}
-		return responses[ finalDataType ];
-	}
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
-	var conv2, current, conv, tmp, prev,
-		converters = {},
-		// Work with a copy of dataTypes in case we need to modify it for conversion
-		dataTypes = s.dataTypes.slice();
-
-	// Create converters map with lowercased keys
-	if ( dataTypes[ 1 ] ) {
-		for ( conv in s.converters ) {
-			converters[ conv.toLowerCase() ] = s.converters[ conv ];
-		}
-	}
-
-	current = dataTypes.shift();
-
-	// Convert to each sequential dataType
-	while ( current ) {
-
-		if ( s.responseFields[ current ] ) {
-			jqXHR[ s.responseFields[ current ] ] = response;
-		}
-
-		// Apply the dataFilter if provided
-		if ( !prev && isSuccess && s.dataFilter ) {
-			response = s.dataFilter( response, s.dataType );
-		}
-
-		prev = current;
-		current = dataTypes.shift();
-
-		if ( current ) {
-
-			// There's only work to do if current dataType is non-auto
-			if ( current === "*" ) {
-
-				current = prev;
-
-			// Convert response if prev dataType is non-auto and differs from current
-			} else if ( prev !== "*" && prev !== current ) {
-
-				// Seek a direct converter
-				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
-				// If none found, seek a pair
-				if ( !conv ) {
-					for ( conv2 in converters ) {
-
-						// If conv2 outputs current
-						tmp = conv2.split( " " );
-						if ( tmp[ 1 ] === current ) {
-
-							// If prev can be converted to accepted input
-							conv = converters[ prev + " " + tmp[ 0 ] ] ||
-								converters[ "* " + tmp[ 0 ] ];
-							if ( conv ) {
-								// Condense equivalence converters
-								if ( conv === true ) {
-									conv = converters[ conv2 ];
-
-								// Otherwise, insert the intermediate dataType
-								} else if ( converters[ conv2 ] !== true ) {
-									current = tmp[ 0 ];
-									dataTypes.unshift( tmp[ 1 ] );
-								}
-								break;
-							}
-						}
-					}
-				}
-
-				// Apply converter (if not an equivalence)
-				if ( conv !== true ) {
-
-					// Unless errors are allowed to bubble, catch and return them
-					if ( conv && s[ "throws" ] ) {
-						response = conv( response );
-					} else {
-						try {
-							response = conv( response );
-						} catch ( e ) {
-							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
-						}
-					}
-				}
-			}
-		}
-	}
-
-	return { state: "success", data: response };
-}
-
-jQuery.extend({
-
-	// Counter for holding the number of active queries
-	active: 0,
-
-	// Last-Modified header cache for next request
-	lastModified: {},
-	etag: {},
-
-	ajaxSettings: {
-		url: ajaxLocation,
-		type: "GET",
-		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
-		global: true,
-		processData: true,
-		async: true,
-		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-		/*
-		timeout: 0,
-		data: null,
-		dataType: null,
-		username: null,
-		password: null,
-		cache: null,
-		throws: false,
-		traditional: false,
-		headers: {},
-		*/
-
-		accepts: {
-			"*": allTypes,
-			text: "text/plain",
-			html: "text/html",
-			xml: "application/xml, text/xml",
-			json: "application/json, text/javascript"
-		},
-
-		contents: {
-			xml: /xml/,
-			html: /html/,
-			json: /json/
-		},
-
-		responseFields: {
-			xml: "responseXML",
-			text: "responseText",
-			json: "responseJSON"
-		},
-
-		// Data converters
-		// Keys separate source (or catchall "*") and destination types with a single space
-		converters: {
-
-			// Convert anything to text
-			"* text": String,
-
-			// Text to html (true = no transformation)
-			"text html": true,
-
-			// Evaluate text as a json expression
-			"text json": jQuery.parseJSON,
-
-			// Parse text as xml
-			"text xml": jQuery.parseXML
-		},
-
-		// For options that shouldn't be deep extended:
-		// you can add your own custom options here if
-		// and when you create one that shouldn't be
-		// deep extended (see ajaxExtend)
-		flatOptions: {
-			url: true,
-			context: true
-		}
-	},
-
-	// Creates a full fledged settings object into target
-	// with both ajaxSettings and settings fields.
-	// If target is omitted, writes into ajaxSettings.
-	ajaxSetup: function( target, settings ) {
-		return settings ?
-
-			// Building a settings object
-			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
-			// Extending ajaxSettings
-			ajaxExtend( jQuery.ajaxSettings, target );
-	},
-
-	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
-	ajaxTransport: addToPrefiltersOrTransports( transports ),
-
-	// Main method
-	ajax: function( url, options ) {
-
-		// If url is an object, simulate pre-1.5 signature
-		if ( typeof url === "object" ) {
-			options = url;
-			url = undefined;
-		}
-
-		// Force options to be an object
-		options = options || {};
-
-		var // Cross-domain detection vars
-			parts,
-			// Loop variable
-			i,
-			// URL without anti-cache param
-			cacheURL,
-			// Response headers as string
-			responseHeadersString,
-			// timeout handle
-			timeoutTimer,
-
-			// To know if global events are to be dispatched
-			fireGlobals,
-
-			transport,
-			// Response headers
-			responseHeaders,
-			// Create the final options object
-			s = jQuery.ajaxSetup( {}, options ),
-			// Callbacks context
-			callbackContext = s.context || s,
-			// Context for global events is callbackContext if it is a DOM node or jQuery collection
-			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
-				jQuery( callbackContext ) :
-				jQuery.event,
-			// Deferreds
-			deferred = jQuery.Deferred(),
-			completeDeferred = jQuery.Callbacks("once memory"),
-			// Status-dependent callbacks
-			statusCode = s.statusCode || {},
-			// Headers (they are sent all at once)
-			requestHeaders = {},
-			requestHeadersNames = {},
-			// The jqXHR state
-			state = 0,
-			// Default abort message
-			strAbort = "canceled",
-			// Fake xhr
-			jqXHR = {
-				readyState: 0,
-
-				// Builds headers hashtable if needed
-				getResponseHeader: function( key ) {
-					var match;
-					if ( state === 2 ) {
-						if ( !responseHeaders ) {
-							responseHeaders = {};
-							while ( (match = rheaders.exec( responseHeadersString )) ) {
-								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
-							}
-						}
-						match = responseHeaders[ key.toLowerCase() ];
-					}
-					return match == null ? null : match;
-				},
-
-				// Raw string
-				getAllResponseHeaders: function() {
-					return state === 2 ? responseHeadersString : null;
-				},
-
-				// Caches the header
-				setRequestHeader: function( name, value ) {
-					var lname = name.toLowerCase();
-					if ( !state ) {
-						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
-						requestHeaders[ name ] = value;
-					}
-					return this;
-				},
-
-				// Overrides response content-type header
-				overrideMimeType: function( type ) {
-					if ( !state ) {
-						s.mimeType = type;
-					}
-					return this;
-				},
-
-				// Status-dependent callbacks
-				statusCode: function( map ) {
-					var code;
-					if ( map ) {
-						if ( state < 2 ) {
-							for ( code in map ) {
-								// Lazy-add the new callback in a way that preserves old ones
-								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
-							}
-						} else {
-							// Execute the appropriate callbacks
-							jqXHR.always( map[ jqXHR.status ] );
-						}
-					}
-					return this;
-				},
-
-				// Cancel the request
-				abort: function( statusText ) {
-					var finalText = statusText || strAbort;
-					if ( transport ) {
-						transport.abort( finalText );
-					}
-					done( 0, finalText );
-					return this;
-				}
-			};
-
-		// Attach deferreds
-		deferred.promise( jqXHR ).complete = completeDeferred.add;
-		jqXHR.success = jqXHR.done;
-		jqXHR.error = jqXHR.fail;
-
-		// Remove hash character (#7531: and string promotion)
-		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
-		// Handle falsy url in the settings object (#10093: consistency with old signature)
-		// We also use the url parameter if available
-		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
-		// Alias method option to type as per ticket #12004
-		s.type = options.method || options.type || s.method || s.type;
-
-		// Extract dataTypes list
-		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
-
-		// A cross-domain request is in order when we have a protocol:host:port mismatch
-		if ( s.crossDomain == null ) {
-			parts = rurl.exec( s.url.toLowerCase() );
-			s.crossDomain = !!( parts &&
-				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
-					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
-						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
-			);
-		}
-
-		// Convert data if not already a string
-		if ( s.data && s.processData && typeof s.data !== "string" ) {
-			s.data = jQuery.param( s.data, s.traditional );
-		}
-
-		// Apply prefilters
-		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
-		// If request was aborted inside a prefilter, stop there
-		if ( state === 2 ) {
-			return jqXHR;
-		}
-
-		// We can fire global events as of now if asked to
-		fireGlobals = s.global;
-
-		// Watch for a new set of requests
-		if ( fireGlobals && jQuery.active++ === 0 ) {
-			jQuery.event.trigger("ajaxStart");
-		}
-
-		// Uppercase the type
-		s.type = s.type.toUpperCase();
-
-		// Determine if request has content
-		s.hasContent = !rnoContent.test( s.type );
-
-		// Save the URL in case we're toying with the If-Modified-Since
-		// and/or If-None-Match header later on
-		cacheURL = s.url;
-
-		// More options handling for requests with no content
-		if ( !s.hasContent ) {
-
-			// If data is available, append data to url
-			if ( s.data ) {
-				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-				// #9682: remove data so that it's not used in an eventual retry
-				delete s.data;
-			}
-
-			// Add anti-cache in url if needed
-			if ( s.cache === false ) {
-				s.url = rts.test( cacheURL ) ?
-
-					// If there is already a '_' parameter, set its value
-					cacheURL.replace( rts, "$1_=" + nonce++ ) :
-
-					// Otherwise add one to the end
-					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
-			}
-		}
-
-		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-		if ( s.ifModified ) {
-			if ( jQuery.lastModified[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
-			}
-			if ( jQuery.etag[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
-			}
-		}
-
-		// Set the correct header, if data is being sent
-		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
-			jqXHR.setRequestHeader( "Content-Type", s.contentType );
-		}
-
-		// Set the Accepts header for the server, depending on the dataType
-		jqXHR.setRequestHeader(
-			"Accept",
-			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
-				s.accepts[ "*" ]
-		);
-
-		// Check for headers option
-		for ( i in s.headers ) {
-			jqXHR.setRequestHeader( i, s.headers[ i ] );
-		}
-
-		// Allow custom headers/mimetypes and early abort
-		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-			// Abort if not done already and return
-			return jqXHR.abort();
-		}
-
-		// aborting is no longer a cancellation
-		strAbort = "abort";
-
-		// Install callbacks on deferreds
-		for ( i in { success: 1, error: 1, complete: 1 } ) {
-			jqXHR[ i ]( s[ i ] );
-		}
-
-		// Get transport
-		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
-		// If no transport, we auto-abort
-		if ( !transport ) {
-			done( -1, "No Transport" );
-		} else {
-			jqXHR.readyState = 1;
-
-			// Send global event
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
-			}
-			// Timeout
-			if ( s.async && s.timeout > 0 ) {
-				timeoutTimer = setTimeout(function() {
-					jqXHR.abort("timeout");
-				}, s.timeout );
-			}
-
-			try {
-				state = 1;
-				transport.send( requestHeaders, done );
-			} catch ( e ) {
-				// Propagate exception as error if not done
-				if ( state < 2 ) {
-					done( -1, e );
-				// Simply rethrow otherwise
-				} else {
-					throw e;
-				}
-			}
-		}
-
-		// Callback for when everything is done
-		function done( status, nativeStatusText, responses, headers ) {
-			var isSuccess, success, error, response, modified,
-				statusText = nativeStatusText;
-
-			// Called once
-			if ( state === 2 ) {
-				return;
-			}
-
-			// State is "done" now
-			state = 2;
-
-			// Clear timeout if it exists
-			if ( timeoutTimer ) {
-				clearTimeout( timeoutTimer );
-			}
-
-			// Dereference transport for early garbage collection
-			// (no matter how long the jqXHR object will be used)
-			transport = undefined;
-
-			// Cache response headers
-			responseHeadersString = headers || "";
-
-			// Set readyState
-			jqXHR.readyState = status > 0 ? 4 : 0;
-
-			// Determine if successful
-			isSuccess = status >= 200 && status < 300 || status === 304;
-
-			// Get response data
-			if ( responses ) {
-				response = ajaxHandleResponses( s, jqXHR, responses );
-			}
-
-			// Convert no matter what (that way responseXXX fields are always set)
-			response = ajaxConvert( s, response, jqXHR, isSuccess );
-
-			// If successful, handle type chaining
-			if ( isSuccess ) {
-
-				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-				if ( s.ifModified ) {
-					modified = jqXHR.getResponseHeader("Last-Modified");
-					if ( modified ) {
-						jQuery.lastModified[ cacheURL ] = modified;
-					}
-					modified = jqXHR.getResponseHeader("etag");
-					if ( modified ) {
-						jQuery.etag[ cacheURL ] = modified;
-					}
-				}
-
-				// if no content
-				if ( status === 204 || s.type === "HEAD" ) {
-					statusText = "nocontent";
-
-				// if not modified
-				} else if ( status === 304 ) {
-					statusText = "notmodified";
-
-				// If we have data, let's convert it
-				} else {
-					statusText = response.state;
-					success = response.data;
-					error = response.error;
-					isSuccess = !error;
-				}
-			} else {
-				// We extract error from statusText
-				// then normalize statusText and status for non-aborts
-				error = statusText;
-				if ( status || !statusText ) {
-					statusText = "error";
-					if ( status < 0 ) {
-						status = 0;
-					}
-				}
-			}
-
-			// Set data for the fake xhr object
-			jqXHR.status = status;
-			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
-			// Success/Error
-			if ( isSuccess ) {
-				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
-			} else {
-				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
-			}
-
-			// Status-dependent callbacks
-			jqXHR.statusCode( statusCode );
-			statusCode = undefined;
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
-					[ jqXHR, s, isSuccess ? success : error ] );
-			}
-
-			// Complete
-			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-				// Handle the global AJAX counter
-				if ( !( --jQuery.active ) ) {
-					jQuery.event.trigger("ajaxStop");
-				}
-			}
-		}
-
-		return jqXHR;
-	},
-
-	getJSON: function( url, data, callback ) {
-		return jQuery.get( url, data, callback, "json" );
-	},
-
-	getScript: function( url, callback ) {
-		return jQuery.get( url, undefined, callback, "script" );
-	}
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
-	jQuery[ method ] = function( url, data, callback, type ) {
-		// shift arguments if data argument was omitted
-		if ( jQuery.isFunction( data ) ) {
-			type = type || callback;
-			callback = data;
-			data = undefined;
-		}
-
-		return jQuery.ajax({
-			url: url,
-			type: method,
-			dataType: type,
-			data: data,
-			success: callback
-		});
-	};
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
-	jQuery.fn[ type ] = function( fn ) {
-		return this.on( type, fn );
-	};
-});
-
-
-jQuery._evalUrl = function( url ) {
-	return jQuery.ajax({
-		url: url,
-		type: "GET",
-		dataType: "script",
-		async: false,
-		global: false,
-		"throws": true
-	});
-};
-
-
-jQuery.fn.extend({
-	wrapAll: function( html ) {
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function(i) {
-				jQuery(this).wrapAll( html.call(this, i) );
-			});
-		}
-
-		if ( this[0] ) {
-			// The elements to wrap the target around
-			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
-			if ( this[0].parentNode ) {
-				wrap.insertBefore( this[0] );
-			}
-
-			wrap.map(function() {
-				var elem = this;
-
-				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
-					elem = elem.firstChild;
-				}
-
-				return elem;
-			}).append( this );
-		}
-
-		return this;
-	},
-
-	wrapInner: function( html ) {
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function(i) {
-				jQuery(this).wrapInner( html.call(this, i) );
-			});
-		}
-
-		return this.each(function() {
-			var self = jQuery( this ),
-				contents = self.contents();
-
-			if ( contents.length ) {
-				contents.wrapAll( html );
-
-			} else {
-				self.append( html );
-			}
-		});
-	},
-
-	wrap: function( html ) {
-		var isFunction = jQuery.isFunction( html );
-
-		return this.each(function(i) {
-			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
-		});
-	},
-
-	unwrap: function() {
-		return this.parent().each(function() {
-			if ( !jQuery.nodeName( this, "body" ) ) {
-				jQuery( this ).replaceWith( this.childNodes );
-			}
-		}).end();
-	}
-});
-
-
-jQuery.expr.filters.hidden = function( elem ) {
-	// Support: Opera <= 12.12
-	// Opera reports offsetWidths and offsetHeights less than zero on some elements
-	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
-		(!support.reliableHiddenOffsets() &&
-			((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
-};
-
-jQuery.expr.filters.visible = function( elem ) {
-	return !jQuery.expr.filters.hidden( elem );
-};
-
-
-
-
-var r20 = /%20/g,
-	rbracket = /\[\]$/,
-	rCRLF = /\r?\n/g,
-	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
-	rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-function buildParams( prefix, obj, traditional, add ) {
-	var name;
-
-	if ( jQuery.isArray( obj ) ) {
-		// Serialize array item.
-		jQuery.each( obj, function( i, v ) {
-			if ( traditional || rbracket.test( prefix ) ) {
-				// Treat each array item as a scalar.
-				add( prefix, v );
-
-			} else {
-				// Item is non-scalar (array or object), encode its numeric index.
-				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
-			}
-		});
-
-	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
-		// Serialize object item.
-		for ( name in obj ) {
-			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
-		}
-
-	} else {
-		// Serialize scalar item.
-		add( prefix, obj );
-	}
-}
-
-// Serialize an array of form elements or a set of
-// key/values into a query string
-jQuery.param = function( a, traditional ) {
-	var prefix,
-		s = [],
-		add = function( key, value ) {
-			// If value is a function, invoke it and return its value
-			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
-			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
-		};
-
-	// Set traditional to true for jQuery <= 1.3.2 behavior.
-	if ( traditional === undefined ) {
-		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
-	}
-
-	// If an array was passed in, assume that it is an array of form elements.
-	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-		// Serialize the form elements
-		jQuery.each( a, function() {
-			add( this.name, this.value );
-		});
-
-	} else {
-		// If traditional, encode the "old" way (the way 1.3.2 or older
-		// did it), otherwise encode params recursively.
-		for ( prefix in a ) {
-			buildParams( prefix, a[ prefix ], traditional, add );
-		}
-	}
-
-	// Return the resulting serialization
-	return s.join( "&" ).replace( r20, "+" );
-};
-
-jQuery.fn.extend({
-	serialize: function() {
-		return jQuery.param( this.serializeArray() );
-	},
-	serializeArray: function() {
-		return this.map(function() {
-			// Can add propHook for "elements" to filter or add form elements
-			var elements = jQuery.prop( this, "elements" );
-			return elements ? jQuery.makeArray( elements ) : this;
-		})
-		.filter(function() {
-			var type = this.type;
-			// Use .is(":disabled") so that fieldset[disabled] works
-			return this.name && !jQuery( this ).is( ":disabled" ) &&
-				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
-				( this.checked || !rcheckableType.test( type ) );
-		})
-		.map(function( i, elem ) {
-			var val = jQuery( this ).val();
-
-			return val == null ?
-				null :
-				jQuery.isArray( val ) ?
-					jQuery.map( val, function( val ) {
-						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-					}) :
-					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-		}).get();
-	}
-});
-
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?
-	// Support: IE6+
-	function() {
-
-		// XHR cannot access local files, always use ActiveX for that case
-		return !this.isLocal &&
-
-			// Support: IE7-8
-			// oldIE XHR does not support non-RFC2616 methods (#13240)
-			// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx
-			// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9
-			// Although this check for six methods instead of eight
-			// since IE also does not support "trace" and "connect"
-			/^(get|post|head|put|delete|options)$/i.test( this.type ) &&
-
-			createStandardXHR() || createActiveXHR();
-	} :
-	// For all other browsers, use the standard XMLHttpRequest object
-	createStandardXHR;
-
-var xhrId = 0,
-	xhrCallbacks = {},
-	xhrSupported = jQuery.ajaxSettings.xhr();
-
-// Support: IE<10
-// Open requests must be manually aborted on unload (#5280)
-if ( window.ActiveXObject ) {
-	jQuery( window ).on( "unload", function() {
-		for ( var key in xhrCallbacks ) {
-			xhrCallbacks[ key ]( undefined, true );
-		}
-	});
-}
-
-// Determine support properties
-support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-xhrSupported = support.ajax = !!xhrSupported;
-
-// Create transport if the browser can provide an xhr
-if ( xhrSupported ) {
-
-	jQuery.ajaxTransport(function( options ) {
-		// Cross domain only allowed if supported through XMLHttpRequest
-		if ( !options.crossDomain || support.cors ) {
-
-			var callback;
-
-			return {
-				send: function( headers, complete ) {
-					var i,
-						xhr = options.xhr(),
-						id = ++xhrId;
-
-					// Open the socket
-					xhr.open( options.type, options.url, options.async, options.username, options.password );
-
-					// Apply custom fields if provided
-					if ( options.xhrFields ) {
-						for ( i in options.xhrFields ) {
-							xhr[ i ] = options.xhrFields[ i ];
-						}
-					}
-
-					// Override mime type if needed
-					if ( options.mimeType && xhr.overrideMimeType ) {
-						xhr.overrideMimeType( options.mimeType );
-					}
-
-					// X-Requested-With header
-					// For cross-domain requests, seeing as conditions for a preflight are
-					// akin to a jigsaw puzzle, we simply never set it to be sure.
-					// (it can always be set on a per-request basis or even using ajaxSetup)
-					// For same-domain requests, won't change header if already provided.
-					if ( !options.crossDomain && !headers["X-Requested-With"] ) {
-						headers["X-Requested-With"] = "XMLHttpRequest";
-					}
-
-					// Set headers
-					for ( i in headers ) {
-						// Support: IE<9
-						// IE's ActiveXObject throws a 'Type Mismatch' exception when setting
-						// request header to a null-value.
-						//
-						// To keep consistent with other XHR implementations, cast the value
-						// to string and ignore `undefined`.
-						if ( headers[ i ] !== undefined ) {
-							xhr.setRequestHeader( i, headers[ i ] + "" );
-						}
-					}
-
-					// Do send the request
-					// This may raise an exception which is actually
-					// handled in jQuery.ajax (so no try/catch here)
-					xhr.send( ( options.hasContent && options.data ) || null );
-
-					// Listener
-					callback = function( _, isAbort ) {
-						var status, statusText, responses;
-
-						// Was never called and is aborted or complete
-						if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-							// Clean up
-							delete xhrCallbacks[ id ];
-							callback = undefined;
-							xhr.onreadystatechange = jQuery.noop;
-
-							// Abort manually if needed
-							if ( isAbort ) {
-								if ( xhr.readyState !== 4 ) {
-									xhr.abort();
-								}
-							} else {
-								responses = {};
-								status = xhr.status;
-
-								// Support: IE<10
-								// Accessing binary-data responseText throws an exception
-								// (#11426)
-								if ( typeof xhr.responseText === "string" ) {
-									responses.text = xhr.responseText;
-								}
-
-								// Firefox throws an exception when accessing
-								// statusText for faulty cross-domain requests
-								try {
-									statusText = xhr.statusText;
-								} catch( e ) {
-									// We normalize with Webkit giving an empty statusText
-									statusText = "";
-								}
-
-								// Filter status for non standard behaviors
-
-								// If the request is local and we have data: assume a success
-								// (success with no data won't get notified, that's the best we
-								// can do given current implementations)
-								if ( !status && options.isLocal && !options.crossDomain ) {
-									status = responses.text ? 200 : 404;
-								// IE - #1450: sometimes returns 1223 when it should be 204
-								} else if ( status === 1223 ) {
-									status = 204;
-								}
-							}
-						}
-
-						// Call complete if needed
-						if ( responses ) {
-							complete( status, statusText, responses, xhr.getAllResponseHeaders() );
-						}
-					};
-
-					if ( !options.async ) {
-						// if we're in sync mode we fire the callback
-						callback();
-					} else if ( xhr.readyState === 4 ) {
-						// (IE6 & IE7) if it's in cache and has been
-						// retrieved directly we need to fire the callback
-						setTimeout( callback );
-					} else {
-						// Add to the list of active xhr callbacks
-						xhr.onreadystatechange = xhrCallbacks[ id ] = callback;
-					}
-				},
-
-				abort: function() {
-					if ( callback ) {
-						callback( undefined, true );
-					}
-				}
-			};
-		}
-	});
-}
-
-// Functions to create xhrs
-function createStandardXHR() {
-	try {
-		return new window.XMLHttpRequest();
-	} catch( e ) {}
-}
-
-function createActiveXHR() {
-	try {
-		return new window.ActiveXObject( "Microsoft.XMLHTTP" );
-	} catch( e ) {}
-}
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup({
-	accepts: {
-		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
-	},
-	contents: {
-		script: /(?:java|ecma)script/
-	},
-	converters: {
-		"text script": function( text ) {
-			jQuery.globalEval( text );
-			return text;
-		}
-	}
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
-	if ( s.cache === undefined ) {
-		s.cache = false;
-	}
-	if ( s.crossDomain ) {
-		s.type = "GET";
-		s.global = false;
-	}
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
-	// This transport only deals with cross domain requests
-	if ( s.crossDomain ) {
-
-		var script,
-			head = document.head || jQuery("head")[0] || document.documentElement;
-
-		return {
-
-			send: function( _, callback ) {
-
-				script = document.createElement("script");
-
-				script.async = true;
-
-				if ( s.scriptCharset ) {
-					script.charset = s.scriptCharset;
-				}
-
-				script.src = s.url;
-
-				// Attach handlers for all browsers
-				script.onload = script.onreadystatechange = function( _, isAbort ) {
-
-					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
-						// Handle memory leak in IE
-						script.onload = script.onreadystatechange = null;
-
-						// Remove the script
-						if ( script.parentNode ) {
-							script.parentNode.removeChild( script );
-						}
-
-						// Dereference the script
-						script = null;
-
-						// Callback if not abort
-						if ( !isAbort ) {
-							callback( 200, "success" );
-						}
-					}
-				};
-
-				// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
-				// Use native DOM manipulation to avoid our domManip AJAX trickery
-				head.insertBefore( script, head.firstChild );
-			},
-
-			abort: function() {
-				if ( script ) {
-					script.onload( undefined, true );
-				}
-			}
-		};
-	}
-});
-
-
-
-
-var oldCallbacks = [],
-	rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
-	jsonp: "callback",
-	jsonpCallback: function() {
-		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
-		this[ callback ] = true;
-		return callback;
-	}
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
-	var callbackName, overwritten, responseContainer,
-		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
-			"url" :
-			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
-		);
-
-	// Handle iff the expected data type is "jsonp" or we have a parameter to set
-	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
-		// Get callback name, remembering preexisting value associated with it
-		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
-			s.jsonpCallback() :
-			s.jsonpCallback;
-
-		// Insert callback into url or form data
-		if ( jsonProp ) {
-			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
-		} else if ( s.jsonp !== false ) {
-			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
-		}
-
-		// Use data converter to retrieve json after script execution
-		s.converters["script json"] = function() {
-			if ( !responseContainer ) {
-				jQuery.error( callbackName + " was not called" );
-			}
-			return responseContainer[ 0 ];
-		};
-
-		// force json dataType
-		s.dataTypes[ 0 ] = "json";
-
-		// Install callback
-		overwritten = window[ callbackName ];
-		window[ callbackName ] = function() {
-			responseContainer = arguments;
-		};
-
-		// Clean-up function (fires after converters)
-		jqXHR.always(function() {
-			// Restore preexisting value
-			window[ callbackName ] = overwritten;
-
-			// Save back as free
-			if ( s[ callbackName ] ) {
-				// make sure that re-using the options doesn't screw things around
-				s.jsonpCallback = originalSettings.jsonpCallback;
-
-				// save the callback name for future use
-				oldCallbacks.push( callbackName );
-			}
-
-			// Call if it was a function and we have a response
-			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
-				overwritten( responseContainer[ 0 ] );
-			}
-
-			responseContainer = overwritten = undefined;
-		});
-
-		// Delegate to script
-		return "script";
-	}
-});
-
-
-
-
-// data: string of html
-// context (optional): If specified, the fragment will be created in this context, defaults to document
-// keepScripts (optional): If true, will include scripts passed in the html string
-jQuery.parseHTML = function( data, context, keepScripts ) {
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-	if ( typeof context === "boolean" ) {
-		keepScripts = context;
-		context = false;
-	}
-	context = context || document;
-
-	var parsed = rsingleTag.exec( data ),
-		scripts = !keepScripts && [];
-
-	// Single tag
-	if ( parsed ) {
-		return [ context.createElement( parsed[1] ) ];
-	}
-
-	parsed = jQuery.buildFragment( [ data ], context, scripts );
-
-	if ( scripts && scripts.length ) {
-		jQuery( scripts ).remove();
-	}
-
-	return jQuery.merge( [], parsed.childNodes );
-};
-
-
-// Keep a copy of the old load method
-var _load = jQuery.fn.load;
-
-/**
- * Load a url into a page
- */
-jQuery.fn.load = function( url, params, callback ) {
-	if ( typeof url !== "string" && _load ) {
-		return _load.apply( this, arguments );
-	}
-
-	var selector, response, type,
-		self = this,
-		off = url.indexOf(" ");
-
-	if ( off >= 0 ) {
-		selector = jQuery.trim( url.slice( off, url.length ) );
-		url = url.slice( 0, off );
-	}
-
-	// If it's a function
-	if ( jQuery.isFunction( params ) ) {
-
-		// We assume that it's the callback
-		callback = params;
-		params = undefined;
-
-	// Otherwise, build a param string
-	} else if ( params && typeof params === "object" ) {
-		type = "POST";
-	}
-
-	// If we have elements to modify, make the request
-	if ( self.length > 0 ) {
-		jQuery.ajax({
-			url: url,
-
-			// if "type" variable is undefined, then "GET" method will be used
-			type: type,
-			dataType: "html",
-			data: params
-		}).done(function( responseText ) {
-
-			// Save response for use in complete callback
-			response = arguments;
-
-			self.html( selector ?
-
-				// If a selector was specified, locate the right elements in a dummy div
-				// Exclude scripts to avoid IE 'Permission Denied' errors
-				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
-				// Otherwise use the full result
-				responseText );
-
-		}).complete( callback && function( jqXHR, status ) {
-			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
-		});
-	}
-
-	return this;
-};
-
-
-
-
-jQuery.expr.filters.animated = function( elem ) {
-	return jQuery.grep(jQuery.timers, function( fn ) {
-		return elem === fn.elem;
-	}).length;
-};
-
-
-
-
-
-var docElem = window.document.documentElement;
-
-/**
- * Gets a window from an element
- */
-function getWindow( elem ) {
-	return jQuery.isWindow( elem ) ?
-		elem :
-		elem.nodeType === 9 ?
-			elem.defaultView || elem.parentWindow :
-			false;
-}
-
-jQuery.offset = {
-	setOffset: function( elem, options, i ) {
-		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
-			position = jQuery.css( elem, "position" ),
-			curElem = jQuery( elem ),
-			props = {};
-
-		// set position first, in-case top/left are set even on static elem
-		if ( position === "static" ) {
-			elem.style.position = "relative";
-		}
-
-		curOffset = curElem.offset();
-		curCSSTop = jQuery.css( elem, "top" );
-		curCSSLeft = jQuery.css( elem, "left" );
-		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
-			jQuery.inArray("auto", [ curCSSTop, curCSSLeft ] ) > -1;
-
-		// need to be able to calculate position if either top or left is auto and position is either absolute or fixed
-		if ( calculatePosition ) {
-			curPosition = curElem.position();
-			curTop = curPosition.top;
-			curLeft = curPosition.left;
-		} else {
-			curTop = parseFloat( curCSSTop ) || 0;
-			curLeft = parseFloat( curCSSLeft ) || 0;
-		}
-
-		if ( jQuery.isFunction( options ) ) {
-			options = options.call( elem, i, curOffset );
-		}
-
-		if ( options.top != null ) {
-			props.top = ( options.top - curOffset.top ) + curTop;
-		}
-		if ( options.left != null ) {
-			props.left = ( options.left - curOffset.left ) + curLeft;
-		}
-
-		if ( "using" in options ) {
-			options.using.call( elem, props );
-		} else {
-			curElem.css( props );
-		}
-	}
-};
-
-jQuery.fn.extend({
-	offset: function( options ) {
-		if ( arguments.length ) {
-			return options === undefined ?
-				this :
-				this.each(function( i ) {
-					jQuery.offset.setOffset( this, options, i );
-				});
-		}
-
-		var docElem, win,
-			box = { top: 0, left: 0 },
-			elem = this[ 0 ],
-			doc = elem && elem.ownerDocument;
-
-		if ( !doc ) {
-			return;
-		}
-
-		docElem = doc.documentElement;
-
-		// Make sure it's not a disconnected DOM node
-		if ( !jQuery.contains( docElem, elem ) ) {
-			return box;
-		}
-
-		// If we don't have gBCR, just use 0,0 rather than error
-		// BlackBerry 5, iOS 3 (original iPhone)
-		if ( typeof elem.getBoundingClientRect !== strundefined ) {
-			box = elem.getBoundingClientRect();
-		}
-		win = getWindow( doc );
-		return {
-			top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
-			left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
-		};
-	},
-
-	position: function() {
-		if ( !this[ 0 ] ) {
-			return;
-		}
-
-		var offsetParent, offset,
-			parentOffset = { top: 0, left: 0 },
-			elem = this[ 0 ];
-
-		// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
-		if ( jQuery.css( elem, "position" ) === "fixed" ) {
-			// we assume that getBoundingClientRect is available when computed position is fixed
-			offset = elem.getBoundingClientRect();
-		} else {
-			// Get *real* offsetParent
-			offsetParent = this.offsetParent();
-
-			// Get correct offsets
-			offset = this.offset();
-			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
-				parentOffset = offsetParent.offset();
-			}
-
-			// Add offsetParent borders
-			parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
-			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
-		}
-
-		// Subtract parent offsets and element margins
-		// note: when an element has margin: auto the offsetLeft and marginLeft
-		// are the same in Safari causing offset.left to incorrectly be 0
-		return {
-			top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
-			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
-		};
-	},
-
-	offsetParent: function() {
-		return this.map(function() {
-			var offsetParent = this.offsetParent || docElem;
-
-			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
-				offsetParent = offsetParent.offsetParent;
-			}
-			return offsetParent || docElem;
-		});
-	}
-});
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
-	var top = /Y/.test( prop );
-
-	jQuery.fn[ method ] = function( val ) {
-		return access( this, function( elem, method, val ) {
-			var win = getWindow( elem );
-
-			if ( val === undefined ) {
-				return win ? (prop in win) ? win[ prop ] :
-					win.document.documentElement[ method ] :
-					elem[ method ];
-			}
-
-			if ( win ) {
-				win.scrollTo(
-					!top ? val : jQuery( win ).scrollLeft(),
-					top ? val : jQuery( win ).scrollTop()
-				);
-
-			} else {
-				elem[ method ] = val;
-			}
-		}, method, val, arguments.length, null );
-	};
-});
-
-// Add the top/left cssHooks using jQuery.fn.position
-// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
-// getComputedStyle returns percent when specified for top/left/bottom/right
-// rather than make the css module depend on the offset module, we just check for it here
-jQuery.each( [ "top", "left" ], function( i, prop ) {
-	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
-		function( elem, computed ) {
-			if ( computed ) {
-				computed = curCSS( elem, prop );
-				// if curCSS returns percentage, fallback to offset
-				return rnumnonpx.test( computed ) ?
-					jQuery( elem ).position()[ prop ] + "px" :
-					computed;
-			}
-		}
-	);
-});
-
-
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
-	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
-		// margin is only for outerHeight, outerWidth
-		jQuery.fn[ funcName ] = function( margin, value ) {
-			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
-				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
-			return access( this, function( elem, type, value ) {
-				var doc;
-
-				if ( jQuery.isWindow( elem ) ) {
-					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
-					// isn't a whole lot we can do. See pull request at this URL for discussion:
-					// https://github.com/jquery/jquery/pull/764
-					return elem.document.documentElement[ "client" + name ];
-				}
-
-				// Get document width or height
-				if ( elem.nodeType === 9 ) {
-					doc = elem.documentElement;
-
-					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
-					// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
-					return Math.max(
-						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
-						elem.body[ "offset" + name ], doc[ "offset" + name ],
-						doc[ "client" + name ]
-					);
-				}
-
-				return value === undefined ?
-					// Get width or height on the element, requesting but not forcing parseFloat
-					jQuery.css( elem, type, extra ) :
-
-					// Set width or height on the element
-					jQuery.style( elem, type, value, extra );
-			}, type, chainable ? margin : undefined, chainable, null );
-		};
-	});
-});
-
-
-// The number of elements contained in the matched element set
-jQuery.fn.size = function() {
-	return this.length;
-};
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-
-
-
-// Register as a named AMD module, since jQuery can be concatenated with other
-// files that may use define, but not via a proper concatenation script that
-// understands anonymous AMD modules. A named AMD is safest and most robust
-// way to register. Lowercase jquery is used because AMD module names are
-// derived from file names, and jQuery is normally delivered in a lowercase
-// file name. Do this after creating the global so that if an AMD module wants
-// to call noConflict to hide this version of jQuery, it will work.
-
-// Note that for maximum portability, libraries that are not jQuery should
-// declare themselves as anonymous modules, and avoid setting a global if an
-// AMD loader is present. jQuery is a special case. For more information, see
-// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
-
-if ( typeof define === "function" && define.amd ) {
-	define( "jquery", [], function() {
-		return jQuery;
-	});
-}
-
-
-
-
-var
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$;
-
-jQuery.noConflict = function( deep ) {
-	if ( window.$ === jQuery ) {
-		window.$ = _$;
-	}
-
-	if ( deep && window.jQuery === jQuery ) {
-		window.jQuery = _jQuery;
-	}
-
-	return jQuery;
-};
-
-// Expose jQuery and $ identifiers, even in
-// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
-// and CommonJS for browser emulators (#13566)
-if ( typeof noGlobal === strundefined ) {
-	window.jQuery = window.$ = jQuery;
-}
-
-
-
-
-return jQuery;
-
-}));
diff --git a/src/doc/3.10/_static/jquery.js b/src/doc/3.10/_static/jquery.js
deleted file mode 100644
index ab28a24..0000000
--- a/src/doc/3.10/_static/jquery.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
-if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
-},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/src/doc/3.10/_static/minus.png b/src/doc/3.10/_static/minus.png
deleted file mode 100644
index 0f22b16..0000000
--- a/src/doc/3.10/_static/minus.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/plus.png b/src/doc/3.10/_static/plus.png
deleted file mode 100644
index 0cfe084..0000000
--- a/src/doc/3.10/_static/plus.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/pygments.css b/src/doc/3.10/_static/pygments.css
deleted file mode 100644
index 8213e90..0000000
--- a/src/doc/3.10/_static/pygments.css
+++ /dev/null
@@ -1,65 +0,0 @@
-.highlight .hll { background-color: #ffffcc }
-.highlight  { background: #eeffcc; }
-.highlight .c { color: #408090; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #007020; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
-.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #007020 } /* Comment.Preproc */
-.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
-.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #333333 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #007020 } /* Keyword.Pseudo */
-.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #902000 } /* Keyword.Type */
-.highlight .m { color: #208050 } /* Literal.Number */
-.highlight .s { color: #4070a0 } /* Literal.String */
-.highlight .na { color: #4070a0 } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.highlight .no { color: #60add5 } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #007020 } /* Name.Exception */
-.highlight .nf { color: #06287e } /* Name.Function */
-.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #bb60d5 } /* Name.Variable */
-.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #208050 } /* Literal.Number.Bin */
-.highlight .mf { color: #208050 } /* Literal.Number.Float */
-.highlight .mh { color: #208050 } /* Literal.Number.Hex */
-.highlight .mi { color: #208050 } /* Literal.Number.Integer */
-.highlight .mo { color: #208050 } /* Literal.Number.Oct */
-.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
-.highlight .sc { color: #4070a0 } /* Literal.String.Char */
-.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
-.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.highlight .sx { color: #c65d09 } /* Literal.String.Other */
-.highlight .sr { color: #235388 } /* Literal.String.Regex */
-.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
-.highlight .ss { color: #517918 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/src/doc/3.10/_static/searchtools.js b/src/doc/3.10/_static/searchtools.js
deleted file mode 100644
index 066857c..0000000
--- a/src/doc/3.10/_static/searchtools.js
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * searchtools.js_t
- * ~~~~~~~~~~~~~~~~
- *
- * Sphinx JavaScript utilities for the full-text search.
- *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-
-/* Non-minified version JS is _stemmer.js if file is provided */ 
-/**
- * Porter Stemmer
- */
-var Stemmer = function() {
-
-  var step2list = {
-    ational: 'ate',
-    tional: 'tion',
-    enci: 'ence',
-    anci: 'ance',
-    izer: 'ize',
-    bli: 'ble',
-    alli: 'al',
-    entli: 'ent',
-    eli: 'e',
-    ousli: 'ous',
-    ization: 'ize',
-    ation: 'ate',
-    ator: 'ate',
-    alism: 'al',
-    iveness: 'ive',
-    fulness: 'ful',
-    ousness: 'ous',
-    aliti: 'al',
-    iviti: 'ive',
-    biliti: 'ble',
-    logi: 'log'
-  };
-
-  var step3list = {
-    icate: 'ic',
-    ative: '',
-    alize: 'al',
-    iciti: 'ic',
-    ical: 'ic',
-    ful: '',
-    ness: ''
-  };
-
-  var c = "[^aeiou]";          // consonant
-  var v = "[aeiouy]";          // vowel
-  var C = c + "[^aeiouy]*";    // consonant sequence
-  var V = v + "[aeiou]*";      // vowel sequence
-
-  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
-  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
-  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
-  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
-
-  this.stemWord = function (w) {
-    var stem;
-    var suffix;
-    var firstch;
-    var origword = w;
-
-    if (w.length < 3)
-      return w;
-
-    var re;
-    var re2;
-    var re3;
-    var re4;
-
-    firstch = w.substr(0,1);
-    if (firstch == "y")
-      w = firstch.toUpperCase() + w.substr(1);
-
-    // Step 1a
-    re = /^(.+?)(ss|i)es$/;
-    re2 = /^(.+?)([^s])s$/;
-
-    if (re.test(w))
-      w = w.replace(re,"$1$2");
-    else if (re2.test(w))
-      w = w.replace(re2,"$1$2");
-
-    // Step 1b
-    re = /^(.+?)eed$/;
-    re2 = /^(.+?)(ed|ing)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      re = new RegExp(mgr0);
-      if (re.test(fp[1])) {
-        re = /.$/;
-        w = w.replace(re,"");
-      }
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1];
-      re2 = new RegExp(s_v);
-      if (re2.test(stem)) {
-        w = stem;
-        re2 = /(at|bl|iz)$/;
-        re3 = new RegExp("([^aeiouylsz])\\1$");
-        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-        if (re2.test(w))
-          w = w + "e";
-        else if (re3.test(w)) {
-          re = /.$/;
-          w = w.replace(re,"");
-        }
-        else if (re4.test(w))
-          w = w + "e";
-      }
-    }
-
-    // Step 1c
-    re = /^(.+?)y$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(s_v);
-      if (re.test(stem))
-        w = stem + "i";
-    }
-
-    // Step 2
-    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step2list[suffix];
-    }
-
-    // Step 3
-    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step3list[suffix];
-    }
-
-    // Step 4
-    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
-    re2 = /^(.+?)(s|t)(ion)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      if (re.test(stem))
-        w = stem;
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1] + fp[2];
-      re2 = new RegExp(mgr1);
-      if (re2.test(stem))
-        w = stem;
-    }
-
-    // Step 5
-    re = /^(.+?)e$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      re2 = new RegExp(meq1);
-      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
-        w = stem;
-    }
-    re = /ll$/;
-    re2 = new RegExp(mgr1);
-    if (re.test(w) && re2.test(w)) {
-      re = /.$/;
-      w = w.replace(re,"");
-    }
-
-    // and turn initial Y back to y
-    if (firstch == "y")
-      w = firstch.toLowerCase() + w.substr(1);
-    return w;
-  }
-}
-
-
-
-/**
- * Simple result scoring code.
- */
-var Scorer = {
-  // Implement the following function to further tweak the score for each result
-  // The function takes a result array [filename, title, anchor, descr, score]
-  // and returns the new score.
-  /*
-  score: function(result) {
-    return result[4];
-  },
-  */
-
-  // query matches the full name of an object
-  objNameMatch: 11,
-  // or matches in the last dotted part of the object name
-  objPartialMatch: 6,
-  // Additive scores depending on the priority of the object
-  objPrio: {0:  15,   // used to be importantResults
-            1:  5,   // used to be objectResults
-            2: -5},  // used to be unimportantResults
-  //  Used when the priority is not in the mapping.
-  objPrioDefault: 0,
-
-  // query found in title
-  title: 15,
-  // query found in terms
-  term: 5
-};
-
-
-/**
- * Search Module
- */
-var Search = {
-
-  _index : null,
-  _queued_query : null,
-  _pulse_status : -1,
-
-  init : function() {
-      var params = $.getQueryParameters();
-      if (params.q) {
-          var query = params.q[0];
-          $('input[name="q"]')[0].value = query;
-          this.performSearch(query);
-      }
-  },
-
-  loadIndex : function(url) {
-    $.ajax({type: "GET", url: url, data: null,
-            dataType: "script", cache: true,
-            complete: function(jqxhr, textstatus) {
-              if (textstatus != "success") {
-                document.getElementById("searchindexloader").src = url;
-              }
-            }});
-  },
-
-  setIndex : function(index) {
-    var q;
-    this._index = index;
-    if ((q = this._queued_query) !== null) {
-      this._queued_query = null;
-      Search.query(q);
-    }
-  },
-
-  hasIndex : function() {
-      return this._index !== null;
-  },
-
-  deferQuery : function(query) {
-      this._queued_query = query;
-  },
-
-  stopPulse : function() {
-      this._pulse_status = 0;
-  },
-
-  startPulse : function() {
-    if (this._pulse_status >= 0)
-        return;
-    function pulse() {
-      var i;
-      Search._pulse_status = (Search._pulse_status + 1) % 4;
-      var dotString = '';
-      for (i = 0; i < Search._pulse_status; i++)
-        dotString += '.';
-      Search.dots.text(dotString);
-      if (Search._pulse_status > -1)
-        window.setTimeout(pulse, 500);
-    }
-    pulse();
-  },
-
-  /**
-   * perform a search for something (or wait until index is loaded)
-   */
-  performSearch : function(query) {
-    // create the required interface elements
-    this.out = $('#search-results');
-    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
-    this.dots = $('<span></span>').appendTo(this.title);
-    this.status = $('<p style="display: none"></p>').appendTo(this.out);
-    this.output = $('<ul class="search"/>').appendTo(this.out);
-
-    $('#search-progress').text(_('Preparing search...'));
-    this.startPulse();
-
-    // index already loaded, the browser was quick!
-    if (this.hasIndex())
-      this.query(query);
-    else
-      this.deferQuery(query);
-  },
-
-  /**
-   * execute search (requires search index to be loaded)
-   */
-  query : function(query) {
-    var i;
-    var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
-
-    // stem the searchterms and add them to the correct list
-    var stemmer = new Stemmer();
-    var searchterms = [];
-    var excluded = [];
-    var hlterms = [];
-    var tmp = query.split(/\s+/);
-    var objectterms = [];
-    for (i = 0; i < tmp.length; i++) {
-      if (tmp[i] !== "") {
-          objectterms.push(tmp[i].toLowerCase());
-      }
-
-      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
-          tmp[i] === "") {
-        // skip this "word"
-        continue;
-      }
-      // stem the word
-      var word = stemmer.stemWord(tmp[i].toLowerCase());
-      var toAppend;
-      // select the correct list
-      if (word[0] == '-') {
-        toAppend = excluded;
-        word = word.substr(1);
-      }
-      else {
-        toAppend = searchterms;
-        hlterms.push(tmp[i].toLowerCase());
-      }
-      // only add if not already in the list
-      if (!$u.contains(toAppend, word))
-        toAppend.push(word);
-    }
-    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
-
-    // console.debug('SEARCH: searching for:');
-    // console.info('required: ', searchterms);
-    // console.info('excluded: ', excluded);
-
-    // prepare search
-    var terms = this._index.terms;
-    var titleterms = this._index.titleterms;
-
-    // array of [filename, title, anchor, descr, score]
-    var results = [];
-    $('#search-progress').empty();
-
-    // lookup as object
-    for (i = 0; i < objectterms.length; i++) {
-      var others = [].concat(objectterms.slice(0, i),
-                             objectterms.slice(i+1, objectterms.length));
-      results = results.concat(this.performObjectSearch(objectterms[i], others));
-    }
-
-    // lookup as search terms in fulltext
-    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
-
-    // let the scorer override scores with a custom scoring function
-    if (Scorer.score) {
-      for (i = 0; i < results.length; i++)
-        results[i][4] = Scorer.score(results[i]);
-    }
-
-    // now sort the results by score (in opposite order of appearance, since the
-    // display function below uses pop() to retrieve items) and then
-    // alphabetically
-    results.sort(function(a, b) {
-      var left = a[4];
-      var right = b[4];
-      if (left > right) {
-        return 1;
-      } else if (left < right) {
-        return -1;
-      } else {
-        // same score: sort alphabetically
-        left = a[1].toLowerCase();
-        right = b[1].toLowerCase();
-        return (left > right) ? -1 : ((left < right) ? 1 : 0);
-      }
-    });
-
-    // for debugging
-    //Search.lastresults = results.slice();  // a copy
-    //console.info('search results:', Search.lastresults);
-
-    // print the results
-    var resultCount = results.length;
-    function displayNextItem() {
-      // results left, load the summary and display it
-      if (results.length) {
-        var item = results.pop();
-        var listItem = $('<li style="display:none"></li>');
-        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
-          // dirhtml builder
-          var dirname = item[0] + '/';
-          if (dirname.match(/\/index\/$/)) {
-            dirname = dirname.substring(0, dirname.length-6);
-          } else if (dirname == 'index/') {
-            dirname = '';
-          }
-          listItem.append($('<a/>').attr('href',
-            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
-            highlightstring + item[2]).html(item[1]));
-        } else {
-          // normal html builders
-          listItem.append($('<a/>').attr('href',
-            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
-            highlightstring + item[2]).html(item[1]));
-        }
-        if (item[3]) {
-          listItem.append($('<span> (' + item[3] + ')</span>'));
-          Search.output.append(listItem);
-          listItem.slideDown(5, function() {
-            displayNextItem();
-          });
-        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
-          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
-                  dataType: "text",
-                  complete: function(jqxhr, textstatus) {
-                    var data = jqxhr.responseText;
-                    if (data !== '' && data !== undefined) {
-                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
-                    }
-                    Search.output.append(listItem);
-                    listItem.slideDown(5, function() {
-                      displayNextItem();
-                    });
-                  }});
-        } else {
-          // no source available, just display title
-          Search.output.append(listItem);
-          listItem.slideDown(5, function() {
-            displayNextItem();
-          });
-        }
-      }
-      // search finished, update title and status message
-      else {
-        Search.stopPulse();
-        Search.title.text(_('Search Results'));
-        if (!resultCount)
-          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
-        else
-            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
-        Search.status.fadeIn(500);
-      }
-    }
-    displayNextItem();
-  },
-
-  /**
-   * search for object names
-   */
-  performObjectSearch : function(object, otherterms) {
-    var filenames = this._index.filenames;
-    var objects = this._index.objects;
-    var objnames = this._index.objnames;
-    var titles = this._index.titles;
-
-    var i;
-    var results = [];
-
-    for (var prefix in objects) {
-      for (var name in objects[prefix]) {
-        var fullname = (prefix ? prefix + '.' : '') + name;
-        if (fullname.toLowerCase().indexOf(object) > -1) {
-          var score = 0;
-          var parts = fullname.split('.');
-          // check for different match types: exact matches of full name or
-          // "last name" (i.e. last dotted part)
-          if (fullname == object || parts[parts.length - 1] == object) {
-            score += Scorer.objNameMatch;
-          // matches in last name
-          } else if (parts[parts.length - 1].indexOf(object) > -1) {
-            score += Scorer.objPartialMatch;
-          }
-          var match = objects[prefix][name];
-          var objname = objnames[match[1]][2];
-          var title = titles[match[0]];
-          // If more than one term searched for, we require other words to be
-          // found in the name/title/description
-          if (otherterms.length > 0) {
-            var haystack = (prefix + ' ' + name + ' ' +
-                            objname + ' ' + title).toLowerCase();
-            var allfound = true;
-            for (i = 0; i < otherterms.length; i++) {
-              if (haystack.indexOf(otherterms[i]) == -1) {
-                allfound = false;
-                break;
-              }
-            }
-            if (!allfound) {
-              continue;
-            }
-          }
-          var descr = objname + _(', in ') + title;
-
-          var anchor = match[3];
-          if (anchor === '')
-            anchor = fullname;
-          else if (anchor == '-')
-            anchor = objnames[match[1]][1] + '-' + fullname;
-          // add custom score for some objects according to scorer
-          if (Scorer.objPrio.hasOwnProperty(match[2])) {
-            score += Scorer.objPrio[match[2]];
-          } else {
-            score += Scorer.objPrioDefault;
-          }
-          results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
-        }
-      }
-    }
-
-    return results;
-  },
-
-  /**
-   * search for full-text terms in the index
-   */
-  performTermsSearch : function(searchterms, excluded, terms, titleterms) {
-    var filenames = this._index.filenames;
-    var titles = this._index.titles;
-
-    var i, j, file;
-    var fileMap = {};
-    var scoreMap = {};
-    var results = [];
-
-    // perform the search on the required terms
-    for (i = 0; i < searchterms.length; i++) {
-      var word = searchterms[i];
-      var files = [];
-      var _o = [
-        {files: terms[word], score: Scorer.term},
-        {files: titleterms[word], score: Scorer.title}
-      ];
-
-      // no match but word was a required one
-      if ($u.every(_o, function(o){return o.files === undefined;})) {
-        break;
-      }
-      // found search word in contents
-      $u.each(_o, function(o) {
-        var _files = o.files;
-        if (_files === undefined)
-          return
-
-        if (_files.length === undefined)
-          _files = [_files];
-        files = files.concat(_files);
-
-        // set score for the word in each file to Scorer.term
-        for (j = 0; j < _files.length; j++) {
-          file = _files[j];
-          if (!(file in scoreMap))
-            scoreMap[file] = {}
-          scoreMap[file][word] = o.score;
-        }
-      });
-
-      // create the mapping
-      for (j = 0; j < files.length; j++) {
-        file = files[j];
-        if (file in fileMap)
-          fileMap[file].push(word);
-        else
-          fileMap[file] = [word];
-      }
-    }
-
-    // now check if the files don't contain excluded terms
-    for (file in fileMap) {
-      var valid = true;
-
-      // check if all requirements are matched
-      if (fileMap[file].length != searchterms.length)
-          continue;
-
-      // ensure that none of the excluded terms is in the search result
-      for (i = 0; i < excluded.length; i++) {
-        if (terms[excluded[i]] == file ||
-            titleterms[excluded[i]] == file ||
-            $u.contains(terms[excluded[i]] || [], file) ||
-            $u.contains(titleterms[excluded[i]] || [], file)) {
-          valid = false;
-          break;
-        }
-      }
-
-      // if we have still a valid result we can add it to the result list
-      if (valid) {
-        // select one (max) score for the file.
-        // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
-        var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
-        results.push([filenames[file], titles[file], '', null, score]);
-      }
-    }
-    return results;
-  },
-
-  /**
-   * helper function to return a node containing the
-   * search summary for a given text. keywords is a list
-   * of stemmed words, hlwords is the list of normal, unstemmed
-   * words. the first one is used to find the occurrence, the
-   * latter for highlighting it.
-   */
-  makeSearchSummary : function(text, keywords, hlwords) {
-    var textLower = text.toLowerCase();
-    var start = 0;
-    $.each(keywords, function() {
-      var i = textLower.indexOf(this.toLowerCase());
-      if (i > -1)
-        start = i;
-    });
-    start = Math.max(start - 120, 0);
-    var excerpt = ((start > 0) ? '...' : '') +
-      $.trim(text.substr(start, 240)) +
-      ((start + 240 - text.length) ? '...' : '');
-    var rv = $('<div class="context"></div>').text(excerpt);
-    $.each(hlwords, function() {
-      rv = rv.highlightText(this, 'highlighted');
-    });
-    return rv;
-  }
-};
-
-$(document).ready(function() {
-  Search.init();
-});
\ No newline at end of file
diff --git a/src/doc/3.10/_static/underscore-1.3.1.js b/src/doc/3.10/_static/underscore-1.3.1.js
deleted file mode 100644
index 208d4cd..0000000
--- a/src/doc/3.10/_static/underscore-1.3.1.js
+++ /dev/null
@@ -1,999 +0,0 @@
-//     Underscore.js 1.3.1
-//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-//     Underscore is freely distributable under the MIT license.
-//     Portions of Underscore are inspired or borrowed from Prototype,
-//     Oliver Steele's Functional, and John Resig's Micro-Templating.
-//     For all details and documentation:
-//     http://documentcloud.github.com/underscore
-
-(function() {
-
-  // Baseline setup
-  // --------------
-
-  // Establish the root object, `window` in the browser, or `global` on the server.
-  var root = this;
-
-  // Save the previous value of the `_` variable.
-  var previousUnderscore = root._;
-
-  // Establish the object that gets returned to break out of a loop iteration.
-  var breaker = {};
-
-  // Save bytes in the minified (but not gzipped) version:
-  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
-
-  // Create quick reference variables for speed access to core prototypes.
-  var slice            = ArrayProto.slice,
-      unshift          = ArrayProto.unshift,
-      toString         = ObjProto.toString,
-      hasOwnProperty   = ObjProto.hasOwnProperty;
-
-  // All **ECMAScript 5** native function implementations that we hope to use
-  // are declared here.
-  var
-    nativeForEach      = ArrayProto.forEach,
-    nativeMap          = ArrayProto.map,
-    nativeReduce       = ArrayProto.reduce,
-    nativeReduceRight  = ArrayProto.reduceRight,
-    nativeFilter       = ArrayProto.filter,
-    nativeEvery        = ArrayProto.every,
-    nativeSome         = ArrayProto.some,
-    nativeIndexOf      = ArrayProto.indexOf,
-    nativeLastIndexOf  = ArrayProto.lastIndexOf,
-    nativeIsArray      = Array.isArray,
-    nativeKeys         = Object.keys,
-    nativeBind         = FuncProto.bind;
-
-  // Create a safe reference to the Underscore object for use below.
-  var _ = function(obj) { return new wrapper(obj); };
-
-  // Export the Underscore object for **Node.js**, with
-  // backwards-compatibility for the old `require()` API. If we're in
-  // the browser, add `_` as a global object via a string identifier,
-  // for Closure Compiler "advanced" mode.
-  if (typeof exports !== 'undefined') {
-    if (typeof module !== 'undefined' && module.exports) {
-      exports = module.exports = _;
-    }
-    exports._ = _;
-  } else {
-    root['_'] = _;
-  }
-
-  // Current version.
-  _.VERSION = '1.3.1';
-
-  // Collection Functions
-  // --------------------
-
-  // The cornerstone, an `each` implementation, aka `forEach`.
-  // Handles objects with the built-in `forEach`, arrays, and raw objects.
-  // Delegates to **ECMAScript 5**'s native `forEach` if available.
-  var each = _.each = _.forEach = function(obj, iterator, context) {
-    if (obj == null) return;
-    if (nativeForEach && obj.forEach === nativeForEach) {
-      obj.forEach(iterator, context);
-    } else if (obj.length === +obj.length) {
-      for (var i = 0, l = obj.length; i < l; i++) {
-        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
-      }
-    } else {
-      for (var key in obj) {
-        if (_.has(obj, key)) {
-          if (iterator.call(context, obj[key], key, obj) === breaker) return;
-        }
-      }
-    }
-  };
-
-  // Return the results of applying the iterator to each element.
-  // Delegates to **ECMAScript 5**'s native `map` if available.
-  _.map = _.collect = function(obj, iterator, context) {
-    var results = [];
-    if (obj == null) return results;
-    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
-    each(obj, function(value, index, list) {
-      results[results.length] = iterator.call(context, value, index, list);
-    });
-    if (obj.length === +obj.length) results.length = obj.length;
-    return results;
-  };
-
-  // **Reduce** builds up a single result from a list of values, aka `inject`,
-  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
-  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
-    var initial = arguments.length > 2;
-    if (obj == null) obj = [];
-    if (nativeReduce && obj.reduce === nativeReduce) {
-      if (context) iterator = _.bind(iterator, context);
-      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
-    }
-    each(obj, function(value, index, list) {
-      if (!initial) {
-        memo = value;
-        initial = true;
-      } else {
-        memo = iterator.call(context, memo, value, index, list);
-      }
-    });
-    if (!initial) throw new TypeError('Reduce of empty array with no initial value');
-    return memo;
-  };
-
-  // The right-associative version of reduce, also known as `foldr`.
-  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
-  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
-    var initial = arguments.length > 2;
-    if (obj == null) obj = [];
-    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
-      if (context) iterator = _.bind(iterator, context);
-      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
-    }
-    var reversed = _.toArray(obj).reverse();
-    if (context && !initial) iterator = _.bind(iterator, context);
-    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
-  };
-
-  // Return the first value which passes a truth test. Aliased as `detect`.
-  _.find = _.detect = function(obj, iterator, context) {
-    var result;
-    any(obj, function(value, index, list) {
-      if (iterator.call(context, value, index, list)) {
-        result = value;
-        return true;
-      }
-    });
-    return result;
-  };
-
-  // Return all the elements that pass a truth test.
-  // Delegates to **ECMAScript 5**'s native `filter` if available.
-  // Aliased as `select`.
-  _.filter = _.select = function(obj, iterator, context) {
-    var results = [];
-    if (obj == null) return results;
-    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
-    each(obj, function(value, index, list) {
-      if (iterator.call(context, value, index, list)) results[results.length] = value;
-    });
-    return results;
-  };
-
-  // Return all the elements for which a truth test fails.
-  _.reject = function(obj, iterator, context) {
-    var results = [];
-    if (obj == null) return results;
-    each(obj, function(value, index, list) {
-      if (!iterator.call(context, value, index, list)) results[results.length] = value;
-    });
-    return results;
-  };
-
-  // Determine whether all of the elements match a truth test.
-  // Delegates to **ECMAScript 5**'s native `every` if available.
-  // Aliased as `all`.
-  _.every = _.all = function(obj, iterator, context) {
-    var result = true;
-    if (obj == null) return result;
-    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
-    each(obj, function(value, index, list) {
-      if (!(result = result && iterator.call(context, value, index, list))) return breaker;
-    });
-    return result;
-  };
-
-  // Determine if at least one element in the object matches a truth test.
-  // Delegates to **ECMAScript 5**'s native `some` if available.
-  // Aliased as `any`.
-  var any = _.some = _.any = function(obj, iterator, context) {
-    iterator || (iterator = _.identity);
-    var result = false;
-    if (obj == null) return result;
-    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
-    each(obj, function(value, index, list) {
-      if (result || (result = iterator.call(context, value, index, list))) return breaker;
-    });
-    return !!result;
-  };
-
-  // Determine if a given value is included in the array or object using `===`.
-  // Aliased as `contains`.
-  _.include = _.contains = function(obj, target) {
-    var found = false;
-    if (obj == null) return found;
-    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
-    found = any(obj, function(value) {
-      return value === target;
-    });
-    return found;
-  };
-
-  // Invoke a method (with arguments) on every item in a collection.
-  _.invoke = function(obj, method) {
-    var args = slice.call(arguments, 2);
-    return _.map(obj, function(value) {
-      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
-    });
-  };
-
-  // Convenience version of a common use case of `map`: fetching a property.
-  _.pluck = function(obj, key) {
-    return _.map(obj, function(value){ return value[key]; });
-  };
-
-  // Return the maximum element or (element-based computation).
-  _.max = function(obj, iterator, context) {
-    if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
-    if (!iterator && _.isEmpty(obj)) return -Infinity;
-    var result = {computed : -Infinity};
-    each(obj, function(value, index, list) {
-      var computed = iterator ? iterator.call(context, value, index, list) : value;
-      computed >= result.computed && (result = {value : value, computed : computed});
-    });
-    return result.value;
-  };
-
-  // Return the minimum element (or element-based computation).
-  _.min = function(obj, iterator, context) {
-    if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
-    if (!iterator && _.isEmpty(obj)) return Infinity;
-    var result = {computed : Infinity};
-    each(obj, function(value, index, list) {
-      var computed = iterator ? iterator.call(context, value, index, list) : value;
-      computed < result.computed && (result = {value : value, computed : computed});
-    });
-    return result.value;
-  };
-
-  // Shuffle an array.
-  _.shuffle = function(obj) {
-    var shuffled = [], rand;
-    each(obj, function(value, index, list) {
-      if (index == 0) {
-        shuffled[0] = value;
-      } else {
-        rand = Math.floor(Math.random() * (index + 1));
-        shuffled[index] = shuffled[rand];
-        shuffled[rand] = value;
-      }
-    });
-    return shuffled;
-  };
-
-  // Sort the object's values by a criterion produced by an iterator.
-  _.sortBy = function(obj, iterator, context) {
-    return _.pluck(_.map(obj, function(value, index, list) {
-      return {
-        value : value,
-        criteria : iterator.call(context, value, index, list)
-      };
-    }).sort(function(left, right) {
-      var a = left.criteria, b = right.criteria;
-      return a < b ? -1 : a > b ? 1 : 0;
-    }), 'value');
-  };
-
-  // Groups the object's values by a criterion. Pass either a string attribute
-  // to group by, or a function that returns the criterion.
-  _.groupBy = function(obj, val) {
-    var result = {};
-    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
-    each(obj, function(value, index) {
-      var key = iterator(value, index);
-      (result[key] || (result[key] = [])).push(value);
-    });
-    return result;
-  };
-
-  // Use a comparator function to figure out at what index an object should
-  // be inserted so as to maintain order. Uses binary search.
-  _.sortedIndex = function(array, obj, iterator) {
-    iterator || (iterator = _.identity);
-    var low = 0, high = array.length;
-    while (low < high) {
-      var mid = (low + high) >> 1;
-      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
-    }
-    return low;
-  };
-
-  // Safely convert anything iterable into a real, live array.
-  _.toArray = function(iterable) {
-    if (!iterable)                return [];
-    if (iterable.toArray)         return iterable.toArray();
-    if (_.isArray(iterable))      return slice.call(iterable);
-    if (_.isArguments(iterable))  return slice.call(iterable);
-    return _.values(iterable);
-  };
-
-  // Return the number of elements in an object.
-  _.size = function(obj) {
-    return _.toArray(obj).length;
-  };
-
-  // Array Functions
-  // ---------------
-
-  // Get the first element of an array. Passing **n** will return the first N
-  // values in the array. Aliased as `head`. The **guard** check allows it to work
-  // with `_.map`.
-  _.first = _.head = function(array, n, guard) {
-    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
-  };
-
-  // Returns everything but the last entry of the array. Especcialy useful on
-  // the arguments object. Passing **n** will return all the values in
-  // the array, excluding the last N. The **guard** check allows it to work with
-  // `_.map`.
-  _.initial = function(array, n, guard) {
-    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
-  };
-
-  // Get the last element of an array. Passing **n** will return the last N
-  // values in the array. The **guard** check allows it to work with `_.map`.
-  _.last = function(array, n, guard) {
-    if ((n != null) && !guard) {
-      return slice.call(array, Math.max(array.length - n, 0));
-    } else {
-      return array[array.length - 1];
-    }
-  };
-
-  // Returns everything but the first entry of the array. Aliased as `tail`.
-  // Especially useful on the arguments object. Passing an **index** will return
-  // the rest of the values in the array from that index onward. The **guard**
-  // check allows it to work with `_.map`.
-  _.rest = _.tail = function(array, index, guard) {
-    return slice.call(array, (index == null) || guard ? 1 : index);
-  };
-
-  // Trim out all falsy values from an array.
-  _.compact = function(array) {
-    return _.filter(array, function(value){ return !!value; });
-  };
-
-  // Return a completely flattened version of an array.
-  _.flatten = function(array, shallow) {
-    return _.reduce(array, function(memo, value) {
-      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
-      memo[memo.length] = value;
-      return memo;
-    }, []);
-  };
-
-  // Return a version of the array that does not contain the specified value(s).
-  _.without = function(array) {
-    return _.difference(array, slice.call(arguments, 1));
-  };
-
-  // Produce a duplicate-free version of the array. If the array has already
-  // been sorted, you have the option of using a faster algorithm.
-  // Aliased as `unique`.
-  _.uniq = _.unique = function(array, isSorted, iterator) {
-    var initial = iterator ? _.map(array, iterator) : array;
-    var result = [];
-    _.reduce(initial, function(memo, el, i) {
-      if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
-        memo[memo.length] = el;
-        result[result.length] = array[i];
-      }
-      return memo;
-    }, []);
-    return result;
-  };
-
-  // Produce an array that contains the union: each distinct element from all of
-  // the passed-in arrays.
-  _.union = function() {
-    return _.uniq(_.flatten(arguments, true));
-  };
-
-  // Produce an array that contains every item shared between all the
-  // passed-in arrays. (Aliased as "intersect" for back-compat.)
-  _.intersection = _.intersect = function(array) {
-    var rest = slice.call(arguments, 1);
-    return _.filter(_.uniq(array), function(item) {
-      return _.every(rest, function(other) {
-        return _.indexOf(other, item) >= 0;
-      });
-    });
-  };
-
-  // Take the difference between one array and a number of other arrays.
-  // Only the elements present in just the first array will remain.
-  _.difference = function(array) {
-    var rest = _.flatten(slice.call(arguments, 1));
-    return _.filter(array, function(value){ return !_.include(rest, value); });
-  };
-
-  // Zip together multiple lists into a single array -- elements that share
-  // an index go together.
-  _.zip = function() {
-    var args = slice.call(arguments);
-    var length = _.max(_.pluck(args, 'length'));
-    var results = new Array(length);
-    for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
-    return results;
-  };
-
-  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
-  // we need this function. Return the position of the first occurrence of an
-  // item in an array, or -1 if the item is not included in the array.
-  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
-  // If the array is large and already in sort order, pass `true`
-  // for **isSorted** to use binary search.
-  _.indexOf = function(array, item, isSorted) {
-    if (array == null) return -1;
-    var i, l;
-    if (isSorted) {
-      i = _.sortedIndex(array, item);
-      return array[i] === item ? i : -1;
-    }
-    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
-    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
-    return -1;
-  };
-
-  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
-  _.lastIndexOf = function(array, item) {
-    if (array == null) return -1;
-    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
-    var i = array.length;
-    while (i--) if (i in array && array[i] === item) return i;
-    return -1;
-  };
-
-  // Generate an integer Array containing an arithmetic progression. A port of
-  // the native Python `range()` function. See
-  // [the Python documentation](http://docs.python.org/library/functions.html#range).
-  _.range = function(start, stop, step) {
-    if (arguments.length <= 1) {
-      stop = start || 0;
-      start = 0;
-    }
-    step = arguments[2] || 1;
-
-    var len = Math.max(Math.ceil((stop - start) / step), 0);
-    var idx = 0;
-    var range = new Array(len);
-
-    while(idx < len) {
-      range[idx++] = start;
-      start += step;
-    }
-
-    return range;
-  };
-
-  // Function (ahem) Functions
-  // ------------------
-
-  // Reusable constructor function for prototype setting.
-  var ctor = function(){};
-
-  // Create a function bound to a given object (assigning `this`, and arguments,
-  // optionally). Binding with arguments is also known as `curry`.
-  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
-  // We check for `func.bind` first, to fail fast when `func` is undefined.
-  _.bind = function bind(func, context) {
-    var bound, args;
-    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
-    if (!_.isFunction(func)) throw new TypeError;
-    args = slice.call(arguments, 2);
-    return bound = function() {
-      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
-      ctor.prototype = func.prototype;
-      var self = new ctor;
-      var result = func.apply(self, args.concat(slice.call(arguments)));
-      if (Object(result) === result) return result;
-      return self;
-    };
-  };
-
-  // Bind all of an object's methods to that object. Useful for ensuring that
-  // all callbacks defined on an object belong to it.
-  _.bindAll = function(obj) {
-    var funcs = slice.call(arguments, 1);
-    if (funcs.length == 0) funcs = _.functions(obj);
-    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
-    return obj;
-  };
-
-  // Memoize an expensive function by storing its results.
-  _.memoize = function(func, hasher) {
-    var memo = {};
-    hasher || (hasher = _.identity);
-    return function() {
-      var key = hasher.apply(this, arguments);
-      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
-    };
-  };
-
-  // Delays a function for the given number of milliseconds, and then calls
-  // it with the arguments supplied.
-  _.delay = function(func, wait) {
-    var args = slice.call(arguments, 2);
-    return setTimeout(function(){ return func.apply(func, args); }, wait);
-  };
-
-  // Defers a function, scheduling it to run after the current call stack has
-  // cleared.
-  _.defer = function(func) {
-    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
-  };
-
-  // Returns a function, that, when invoked, will only be triggered at most once
-  // during a given window of time.
-  _.throttle = function(func, wait) {
-    var context, args, timeout, throttling, more;
-    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
-    return function() {
-      context = this; args = arguments;
-      var later = function() {
-        timeout = null;
-        if (more) func.apply(context, args);
-        whenDone();
-      };
-      if (!timeout) timeout = setTimeout(later, wait);
-      if (throttling) {
-        more = true;
-      } else {
-        func.apply(context, args);
-      }
-      whenDone();
-      throttling = true;
-    };
-  };
-
-  // Returns a function, that, as long as it continues to be invoked, will not
-  // be triggered. The function will be called after it stops being called for
-  // N milliseconds.
-  _.debounce = function(func, wait) {
-    var timeout;
-    return function() {
-      var context = this, args = arguments;
-      var later = function() {
-        timeout = null;
-        func.apply(context, args);
-      };
-      clearTimeout(timeout);
-      timeout = setTimeout(later, wait);
-    };
-  };
-
-  // Returns a function that will be executed at most one time, no matter how
-  // often you call it. Useful for lazy initialization.
-  _.once = function(func) {
-    var ran = false, memo;
-    return function() {
-      if (ran) return memo;
-      ran = true;
-      return memo = func.apply(this, arguments);
-    };
-  };
-
-  // Returns the first function passed as an argument to the second,
-  // allowing you to adjust arguments, run code before and after, and
-  // conditionally execute the original function.
-  _.wrap = function(func, wrapper) {
-    return function() {
-      var args = [func].concat(slice.call(arguments, 0));
-      return wrapper.apply(this, args);
-    };
-  };
-
-  // Returns a function that is the composition of a list of functions, each
-  // consuming the return value of the function that follows.
-  _.compose = function() {
-    var funcs = arguments;
-    return function() {
-      var args = arguments;
-      for (var i = funcs.length - 1; i >= 0; i--) {
-        args = [funcs[i].apply(this, args)];
-      }
-      return args[0];
-    };
-  };
-
-  // Returns a function that will only be executed after being called N times.
-  _.after = function(times, func) {
-    if (times <= 0) return func();
-    return function() {
-      if (--times < 1) { return func.apply(this, arguments); }
-    };
-  };
-
-  // Object Functions
-  // ----------------
-
-  // Retrieve the names of an object's properties.
-  // Delegates to **ECMAScript 5**'s native `Object.keys`
-  _.keys = nativeKeys || function(obj) {
-    if (obj !== Object(obj)) throw new TypeError('Invalid object');
-    var keys = [];
-    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
-    return keys;
-  };
-
-  // Retrieve the values of an object's properties.
-  _.values = function(obj) {
-    return _.map(obj, _.identity);
-  };
-
-  // Return a sorted list of the function names available on the object.
-  // Aliased as `methods`
-  _.functions = _.methods = function(obj) {
-    var names = [];
-    for (var key in obj) {
-      if (_.isFunction(obj[key])) names.push(key);
-    }
-    return names.sort();
-  };
-
-  // Extend a given object with all the properties in passed-in object(s).
-  _.extend = function(obj) {
-    each(slice.call(arguments, 1), function(source) {
-      for (var prop in source) {
-        obj[prop] = source[prop];
-      }
-    });
-    return obj;
-  };
-
-  // Fill in a given object with default properties.
-  _.defaults = function(obj) {
-    each(slice.call(arguments, 1), function(source) {
-      for (var prop in source) {
-        if (obj[prop] == null) obj[prop] = source[prop];
-      }
-    });
-    return obj;
-  };
-
-  // Create a (shallow-cloned) duplicate of an object.
-  _.clone = function(obj) {
-    if (!_.isObject(obj)) return obj;
-    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
-  };
-
-  // Invokes interceptor with the obj, and then returns obj.
-  // The primary purpose of this method is to "tap into" a method chain, in
-  // order to perform operations on intermediate results within the chain.
-  _.tap = function(obj, interceptor) {
-    interceptor(obj);
-    return obj;
-  };
-
-  // Internal recursive comparison function.
-  function eq(a, b, stack) {
-    // Identical objects are equal. `0 === -0`, but they aren't identical.
-    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
-    if (a === b) return a !== 0 || 1 / a == 1 / b;
-    // A strict comparison is necessary because `null == undefined`.
-    if (a == null || b == null) return a === b;
-    // Unwrap any wrapped objects.
-    if (a._chain) a = a._wrapped;
-    if (b._chain) b = b._wrapped;
-    // Invoke a custom `isEqual` method if one is provided.
-    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
-    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
-    // Compare `[[Class]]` names.
-    var className = toString.call(a);
-    if (className != toString.call(b)) return false;
-    switch (className) {
-      // Strings, numbers, dates, and booleans are compared by value.
-      case '[object String]':
-        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
-        // equivalent to `new String("5")`.
-        return a == String(b);
-      case '[object Number]':
-        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
-        // other numeric values.
-        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
-      case '[object Date]':
-      case '[object Boolean]':
-        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
-        // millisecond representations. Note that invalid dates with millisecond representations
-        // of `NaN` are not equivalent.
-        return +a == +b;
-      // RegExps are compared by their source patterns and flags.
-      case '[object RegExp]':
-        return a.source == b.source &&
-               a.global == b.global &&
-               a.multiline == b.multiline &&
-               a.ignoreCase == b.ignoreCase;
-    }
-    if (typeof a != 'object' || typeof b != 'object') return false;
-    // Assume equality for cyclic structures. The algorithm for detecting cyclic
-    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
-    var length = stack.length;
-    while (length--) {
-      // Linear search. Performance is inversely proportional to the number of
-      // unique nested structures.
-      if (stack[length] == a) return true;
-    }
-    // Add the first object to the stack of traversed objects.
-    stack.push(a);
-    var size = 0, result = true;
-    // Recursively compare objects and arrays.
-    if (className == '[object Array]') {
-      // Compare array lengths to determine if a deep comparison is necessary.
-      size = a.length;
-      result = size == b.length;
-      if (result) {
-        // Deep compare the contents, ignoring non-numeric properties.
-        while (size--) {
-          // Ensure commutative equality for sparse arrays.
-          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
-        }
-      }
-    } else {
-      // Objects with different constructors are not equivalent.
-      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
-      // Deep compare objects.
-      for (var key in a) {
-        if (_.has(a, key)) {
-          // Count the expected number of properties.
-          size++;
-          // Deep compare each member.
-          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
-        }
-      }
-      // Ensure that both objects contain the same number of properties.
-      if (result) {
-        for (key in b) {
-          if (_.has(b, key) && !(size--)) break;
-        }
-        result = !size;
-      }
-    }
-    // Remove the first object from the stack of traversed objects.
-    stack.pop();
-    return result;
-  }
-
-  // Perform a deep comparison to check if two objects are equal.
-  _.isEqual = function(a, b) {
-    return eq(a, b, []);
-  };
-
-  // Is a given array, string, or object empty?
-  // An "empty" object has no enumerable own-properties.
-  _.isEmpty = function(obj) {
-    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
-    for (var key in obj) if (_.has(obj, key)) return false;
-    return true;
-  };
-
-  // Is a given value a DOM element?
-  _.isElement = function(obj) {
-    return !!(obj && obj.nodeType == 1);
-  };
-
-  // Is a given value an array?
-  // Delegates to ECMA5's native Array.isArray
-  _.isArray = nativeIsArray || function(obj) {
-    return toString.call(obj) == '[object Array]';
-  };
-
-  // Is a given variable an object?
-  _.isObject = function(obj) {
-    return obj === Object(obj);
-  };
-
-  // Is a given variable an arguments object?
-  _.isArguments = function(obj) {
-    return toString.call(obj) == '[object Arguments]';
-  };
-  if (!_.isArguments(arguments)) {
-    _.isArguments = function(obj) {
-      return !!(obj && _.has(obj, 'callee'));
-    };
-  }
-
-  // Is a given value a function?
-  _.isFunction = function(obj) {
-    return toString.call(obj) == '[object Function]';
-  };
-
-  // Is a given value a string?
-  _.isString = function(obj) {
-    return toString.call(obj) == '[object String]';
-  };
-
-  // Is a given value a number?
-  _.isNumber = function(obj) {
-    return toString.call(obj) == '[object Number]';
-  };
-
-  // Is the given value `NaN`?
-  _.isNaN = function(obj) {
-    // `NaN` is the only value for which `===` is not reflexive.
-    return obj !== obj;
-  };
-
-  // Is a given value a boolean?
-  _.isBoolean = function(obj) {
-    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
-  };
-
-  // Is a given value a date?
-  _.isDate = function(obj) {
-    return toString.call(obj) == '[object Date]';
-  };
-
-  // Is the given value a regular expression?
-  _.isRegExp = function(obj) {
-    return toString.call(obj) == '[object RegExp]';
-  };
-
-  // Is a given value equal to null?
-  _.isNull = function(obj) {
-    return obj === null;
-  };
-
-  // Is a given variable undefined?
-  _.isUndefined = function(obj) {
-    return obj === void 0;
-  };
-
-  // Has own property?
-  _.has = function(obj, key) {
-    return hasOwnProperty.call(obj, key);
-  };
-
-  // Utility Functions
-  // -----------------
-
-  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
-  // previous owner. Returns a reference to the Underscore object.
-  _.noConflict = function() {
-    root._ = previousUnderscore;
-    return this;
-  };
-
-  // Keep the identity function around for default iterators.
-  _.identity = function(value) {
-    return value;
-  };
-
-  // Run a function **n** times.
-  _.times = function (n, iterator, context) {
-    for (var i = 0; i < n; i++) iterator.call(context, i);
-  };
-
-  // Escape a string for HTML interpolation.
-  _.escape = function(string) {
-    return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
-  };
-
-  // Add your own custom functions to the Underscore object, ensuring that
-  // they're correctly added to the OOP wrapper as well.
-  _.mixin = function(obj) {
-    each(_.functions(obj), function(name){
-      addToWrapper(name, _[name] = obj[name]);
-    });
-  };
-
-  // Generate a unique integer id (unique within the entire client session).
-  // Useful for temporary DOM ids.
-  var idCounter = 0;
-  _.uniqueId = function(prefix) {
-    var id = idCounter++;
-    return prefix ? prefix + id : id;
-  };
-
-  // By default, Underscore uses ERB-style template delimiters, change the
-  // following template settings to use alternative delimiters.
-  _.templateSettings = {
-    evaluate    : /<%([\s\S]+?)%>/g,
-    interpolate : /<%=([\s\S]+?)%>/g,
-    escape      : /<%-([\s\S]+?)%>/g
-  };
-
-  // When customizing `templateSettings`, if you don't want to define an
-  // interpolation, evaluation or escaping regex, we need one that is
-  // guaranteed not to match.
-  var noMatch = /.^/;
-
-  // Within an interpolation, evaluation, or escaping, remove HTML escaping
-  // that had been previously added.
-  var unescape = function(code) {
-    return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
-  };
-
-  // JavaScript micro-templating, similar to John Resig's implementation.
-  // Underscore templating handles arbitrary delimiters, preserves whitespace,
-  // and correctly escapes quotes within interpolated code.
-  _.template = function(str, data) {
-    var c  = _.templateSettings;
-    var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
-      'with(obj||{}){__p.push(\'' +
-      str.replace(/\\/g, '\\\\')
-         .replace(/'/g, "\\'")
-         .replace(c.escape || noMatch, function(match, code) {
-           return "',_.escape(" + unescape(code) + "),'";
-         })
-         .replace(c.interpolate || noMatch, function(match, code) {
-           return "'," + unescape(code) + ",'";
-         })
-         .replace(c.evaluate || noMatch, function(match, code) {
-           return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
-         })
-         .replace(/\r/g, '\\r')
-         .replace(/\n/g, '\\n')
-         .replace(/\t/g, '\\t')
-         + "');}return __p.join('');";
-    var func = new Function('obj', '_', tmpl);
-    if (data) return func(data, _);
-    return function(data) {
-      return func.call(this, data, _);
-    };
-  };
-
-  // Add a "chain" function, which will delegate to the wrapper.
-  _.chain = function(obj) {
-    return _(obj).chain();
-  };
-
-  // The OOP Wrapper
-  // ---------------
-
-  // If Underscore is called as a function, it returns a wrapped object that
-  // can be used OO-style. This wrapper holds altered versions of all the
-  // underscore functions. Wrapped objects may be chained.
-  var wrapper = function(obj) { this._wrapped = obj; };
-
-  // Expose `wrapper.prototype` as `_.prototype`
-  _.prototype = wrapper.prototype;
-
-  // Helper function to continue chaining intermediate results.
-  var result = function(obj, chain) {
-    return chain ? _(obj).chain() : obj;
-  };
-
-  // A method to easily add functions to the OOP wrapper.
-  var addToWrapper = function(name, func) {
-    wrapper.prototype[name] = function() {
-      var args = slice.call(arguments);
-      unshift.call(args, this._wrapped);
-      return result(func.apply(_, args), this._chain);
-    };
-  };
-
-  // Add all of the Underscore functions to the wrapper object.
-  _.mixin(_);
-
-  // Add all mutator Array functions to the wrapper.
-  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
-    var method = ArrayProto[name];
-    wrapper.prototype[name] = function() {
-      var wrapped = this._wrapped;
-      method.apply(wrapped, arguments);
-      var length = wrapped.length;
-      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
-      return result(wrapped, this._chain);
-    };
-  });
-
-  // Add all accessor Array functions to the wrapper.
-  each(['concat', 'join', 'slice'], function(name) {
-    var method = ArrayProto[name];
-    wrapper.prototype[name] = function() {
-      return result(method.apply(this._wrapped, arguments), this._chain);
-    };
-  });
-
-  // Start chaining a wrapped Underscore object.
-  wrapper.prototype.chain = function() {
-    this._chain = true;
-    return this;
-  };
-
-  // Extracts the result from a wrapped and chained object.
-  wrapper.prototype.value = function() {
-    return this._wrapped;
-  };
-
-}).call(this);
diff --git a/src/doc/3.10/_static/underscore.js b/src/doc/3.10/_static/underscore.js
deleted file mode 100644
index 5b55f32..0000000
--- a/src/doc/3.10/_static/underscore.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Underscore.js 1.3.1
-// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
-c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
-h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
-b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
-null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
-function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
-e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
-function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
-return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
-c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
-b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
-return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
-d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
-var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
-c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
-a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
-b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
-1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
-b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
-b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
-function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
-u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
-function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
-true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
diff --git a/src/doc/3.10/_static/up-pressed.png b/src/doc/3.10/_static/up-pressed.png
deleted file mode 100644
index 99e7210..0000000
--- a/src/doc/3.10/_static/up-pressed.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/up.png b/src/doc/3.10/_static/up.png
deleted file mode 100644
index 26de002..0000000
--- a/src/doc/3.10/_static/up.png
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/_static/websupport.js b/src/doc/3.10/_static/websupport.js
deleted file mode 100644
index 98e7f40..0000000
--- a/src/doc/3.10/_static/websupport.js
+++ /dev/null
@@ -1,808 +0,0 @@
-/*
- * websupport.js
- * ~~~~~~~~~~~~~
- *
- * sphinx.websupport utilities for all documentation.
- *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-(function($) {
-  $.fn.autogrow = function() {
-    return this.each(function() {
-    var textarea = this;
-
-    $.fn.autogrow.resize(textarea);
-
-    $(textarea)
-      .focus(function() {
-        textarea.interval = setInterval(function() {
-          $.fn.autogrow.resize(textarea);
-        }, 500);
-      })
-      .blur(function() {
-        clearInterval(textarea.interval);
-      });
-    });
-  };
-
-  $.fn.autogrow.resize = function(textarea) {
-    var lineHeight = parseInt($(textarea).css('line-height'), 10);
-    var lines = textarea.value.split('\n');
-    var columns = textarea.cols;
-    var lineCount = 0;
-    $.each(lines, function() {
-      lineCount += Math.ceil(this.length / columns) || 1;
-    });
-    var height = lineHeight * (lineCount + 1);
-    $(textarea).css('height', height);
-  };
-})(jQuery);
-
-(function($) {
-  var comp, by;
-
-  function init() {
-    initEvents();
-    initComparator();
-  }
-
-  function initEvents() {
-    $(document).on("click", 'a.comment-close', function(event) {
-      event.preventDefault();
-      hide($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.vote', function(event) {
-      event.preventDefault();
-      handleVote($(this));
-    });
-    $(document).on("click", 'a.reply', function(event) {
-      event.preventDefault();
-      openReply($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.close-reply', function(event) {
-      event.preventDefault();
-      closeReply($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.sort-option', function(event) {
-      event.preventDefault();
-      handleReSort($(this));
-    });
-    $(document).on("click", 'a.show-proposal', function(event) {
-      event.preventDefault();
-      showProposal($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.hide-proposal', function(event) {
-      event.preventDefault();
-      hideProposal($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.show-propose-change', function(event) {
-      event.preventDefault();
-      showProposeChange($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.hide-propose-change', function(event) {
-      event.preventDefault();
-      hideProposeChange($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.accept-comment', function(event) {
-      event.preventDefault();
-      acceptComment($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.delete-comment', function(event) {
-      event.preventDefault();
-      deleteComment($(this).attr('id').substring(2));
-    });
-    $(document).on("click", 'a.comment-markup', function(event) {
-      event.preventDefault();
-      toggleCommentMarkupBox($(this).attr('id').substring(2));
-    });
-  }
-
-  /**
-   * Set comp, which is a comparator function used for sorting and
-   * inserting comments into the list.
-   */
-  function setComparator() {
-    // If the first three letters are "asc", sort in ascending order
-    // and remove the prefix.
-    if (by.substring(0,3) == 'asc') {
-      var i = by.substring(3);
-      comp = function(a, b) { return a[i] - b[i]; };
-    } else {
-      // Otherwise sort in descending order.
-      comp = function(a, b) { return b[by] - a[by]; };
-    }
-
-    // Reset link styles and format the selected sort option.
-    $('a.sel').attr('href', '#').removeClass('sel');
-    $('a.by' + by).removeAttr('href').addClass('sel');
-  }
-
-  /**
-   * Create a comp function. If the user has preferences stored in
-   * the sortBy cookie, use those, otherwise use the default.
-   */
-  function initComparator() {
-    by = 'rating'; // Default to sort by rating.
-    // If the sortBy cookie is set, use that instead.
-    if (document.cookie.length > 0) {
-      var start = document.cookie.indexOf('sortBy=');
-      if (start != -1) {
-        start = start + 7;
-        var end = document.cookie.indexOf(";", start);
-        if (end == -1) {
-          end = document.cookie.length;
-          by = unescape(document.cookie.substring(start, end));
-        }
-      }
-    }
-    setComparator();
-  }
-
-  /**
-   * Show a comment div.
-   */
-  function show(id) {
-    $('#ao' + id).hide();
-    $('#ah' + id).show();
-    var context = $.extend({id: id}, opts);
-    var popup = $(renderTemplate(popupTemplate, context)).hide();
-    popup.find('textarea[name="proposal"]').hide();
-    popup.find('a.by' + by).addClass('sel');
-    var form = popup.find('#cf' + id);
-    form.submit(function(event) {
-      event.preventDefault();
-      addComment(form);
-    });
-    $('#s' + id).after(popup);
-    popup.slideDown('fast', function() {
-      getComments(id);
-    });
-  }
-
-  /**
-   * Hide a comment div.
-   */
-  function hide(id) {
-    $('#ah' + id).hide();
-    $('#ao' + id).show();
-    var div = $('#sc' + id);
-    div.slideUp('fast', function() {
-      div.remove();
-    });
-  }
-
-  /**
-   * Perform an ajax request to get comments for a node
-   * and insert the comments into the comments tree.
-   */
-  function getComments(id) {
-    $.ajax({
-     type: 'GET',
-     url: opts.getCommentsURL,
-     data: {node: id},
-     success: function(data, textStatus, request) {
-       var ul = $('#cl' + id);
-       var speed = 100;
-       $('#cf' + id)
-         .find('textarea[name="proposal"]')
-         .data('source', data.source);
-
-       if (data.comments.length === 0) {
-         ul.html('<li>No comments yet.</li>');
-         ul.data('empty', true);
-       } else {
-         // If there are comments, sort them and put them in the list.
-         var comments = sortComments(data.comments);
-         speed = data.comments.length * 100;
-         appendComments(comments, ul);
-         ul.data('empty', false);
-       }
-       $('#cn' + id).slideUp(speed + 200);
-       ul.slideDown(speed);
-     },
-     error: function(request, textStatus, error) {
-       showError('Oops, there was a problem retrieving the comments.');
-     },
-     dataType: 'json'
-    });
-  }
-
-  /**
-   * Add a comment via ajax and insert the comment into the comment tree.
-   */
-  function addComment(form) {
-    var node_id = form.find('input[name="node"]').val();
-    var parent_id = form.find('input[name="parent"]').val();
-    var text = form.find('textarea[name="comment"]').val();
-    var proposal = form.find('textarea[name="proposal"]').val();
-
-    if (text == '') {
-      showError('Please enter a comment.');
-      return;
-    }
-
-    // Disable the form that is being submitted.
-    form.find('textarea,input').attr('disabled', 'disabled');
-
-    // Send the comment to the server.
-    $.ajax({
-      type: "POST",
-      url: opts.addCommentURL,
-      dataType: 'json',
-      data: {
-        node: node_id,
-        parent: parent_id,
-        text: text,
-        proposal: proposal
-      },
-      success: function(data, textStatus, error) {
-        // Reset the form.
-        if (node_id) {
-          hideProposeChange(node_id);
-        }
-        form.find('textarea')
-          .val('')
-          .add(form.find('input'))
-          .removeAttr('disabled');
-	var ul = $('#cl' + (node_id || parent_id));
-        if (ul.data('empty')) {
-          $(ul).empty();
-          ul.data('empty', false);
-        }
-        insertComment(data.comment);
-        var ao = $('#ao' + node_id);
-        ao.find('img').attr({'src': opts.commentBrightImage});
-        if (node_id) {
-          // if this was a "root" comment, remove the commenting box
-          // (the user can get it back by reopening the comment popup)
-          $('#ca' + node_id).slideUp();
-        }
-      },
-      error: function(request, textStatus, error) {
-        form.find('textarea,input').removeAttr('disabled');
-        showError('Oops, there was a problem adding the comment.');
-      }
-    });
-  }
-
-  /**
-   * Recursively append comments to the main comment list and children
-   * lists, creating the comment tree.
-   */
-  function appendComments(comments, ul) {
-    $.each(comments, function() {
-      var div = createCommentDiv(this);
-      ul.append($(document.createElement('li')).html(div));
-      appendComments(this.children, div.find('ul.comment-children'));
-      // To avoid stagnating data, don't store the comments children in data.
-      this.children = null;
-      div.data('comment', this);
-    });
-  }
-
-  /**
-   * After adding a new comment, it must be inserted in the correct
-   * location in the comment tree.
-   */
-  function insertComment(comment) {
-    var div = createCommentDiv(comment);
-
-    // To avoid stagnating data, don't store the comments children in data.
-    comment.children = null;
-    div.data('comment', comment);
-
-    var ul = $('#cl' + (comment.node || comment.parent));
-    var siblings = getChildren(ul);
-
-    var li = $(document.createElement('li'));
-    li.hide();
-
-    // Determine where in the parents children list to insert this comment.
-    for(i=0; i < siblings.length; i++) {
-      if (comp(comment, siblings[i]) <= 0) {
-        $('#cd' + siblings[i].id)
-          .parent()
-          .before(li.html(div));
-        li.slideDown('fast');
-        return;
-      }
-    }
-
-    // If we get here, this comment rates lower than all the others,
-    // or it is the only comment in the list.
-    ul.append(li.html(div));
-    li.slideDown('fast');
-  }
-
-  function acceptComment(id) {
-    $.ajax({
-      type: 'POST',
-      url: opts.acceptCommentURL,
-      data: {id: id},
-      success: function(data, textStatus, request) {
-        $('#cm' + id).fadeOut('fast');
-        $('#cd' + id).removeClass('moderate');
-      },
-      error: function(request, textStatus, error) {
-        showError('Oops, there was a problem accepting the comment.');
-      }
-    });
-  }
-
-  function deleteComment(id) {
-    $.ajax({
-      type: 'POST',
-      url: opts.deleteCommentURL,
-      data: {id: id},
-      success: function(data, textStatus, request) {
-        var div = $('#cd' + id);
-        if (data == 'delete') {
-          // Moderator mode: remove the comment and all children immediately
-          div.slideUp('fast', function() {
-            div.remove();
-          });
-          return;
-        }
-        // User mode: only mark the comment as deleted
-        div
-          .find('span.user-id:first')
-          .text('[deleted]').end()
-          .find('div.comment-text:first')
-          .text('[deleted]').end()
-          .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
-                ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
-          .remove();
-        var comment = div.data('comment');
-        comment.username = '[deleted]';
-        comment.text = '[deleted]';
-        div.data('comment', comment);
-      },
-      error: function(request, textStatus, error) {
-        showError('Oops, there was a problem deleting the comment.');
-      }
-    });
-  }
-
-  function showProposal(id) {
-    $('#sp' + id).hide();
-    $('#hp' + id).show();
-    $('#pr' + id).slideDown('fast');
-  }
-
-  function hideProposal(id) {
-    $('#hp' + id).hide();
-    $('#sp' + id).show();
-    $('#pr' + id).slideUp('fast');
-  }
-
-  function showProposeChange(id) {
-    $('#pc' + id).hide();
-    $('#hc' + id).show();
-    var textarea = $('#pt' + id);
-    textarea.val(textarea.data('source'));
-    $.fn.autogrow.resize(textarea[0]);
-    textarea.slideDown('fast');
-  }
-
-  function hideProposeChange(id) {
-    $('#hc' + id).hide();
-    $('#pc' + id).show();
-    var textarea = $('#pt' + id);
-    textarea.val('').removeAttr('disabled');
-    textarea.slideUp('fast');
-  }
-
-  function toggleCommentMarkupBox(id) {
-    $('#mb' + id).toggle();
-  }
-
-  /** Handle when the user clicks on a sort by link. */
-  function handleReSort(link) {
-    var classes = link.attr('class').split(/\s+/);
-    for (var i=0; i<classes.length; i++) {
-      if (classes[i] != 'sort-option') {
-	by = classes[i].substring(2);
-      }
-    }
-    setComparator();
-    // Save/update the sortBy cookie.
-    var expiration = new Date();
-    expiration.setDate(expiration.getDate() + 365);
-    document.cookie= 'sortBy=' + escape(by) +
-                     ';expires=' + expiration.toUTCString();
-    $('ul.comment-ul').each(function(index, ul) {
-      var comments = getChildren($(ul), true);
-      comments = sortComments(comments);
-      appendComments(comments, $(ul).empty());
-    });
-  }
-
-  /**
-   * Function to process a vote when a user clicks an arrow.
-   */
-  function handleVote(link) {
-    if (!opts.voting) {
-      showError("You'll need to login to vote.");
-      return;
-    }
-
-    var id = link.attr('id');
-    if (!id) {
-      // Didn't click on one of the voting arrows.
-      return;
-    }
-    // If it is an unvote, the new vote value is 0,
-    // Otherwise it's 1 for an upvote, or -1 for a downvote.
-    var value = 0;
-    if (id.charAt(1) != 'u') {
-      value = id.charAt(0) == 'u' ? 1 : -1;
-    }
-    // The data to be sent to the server.
-    var d = {
-      comment_id: id.substring(2),
-      value: value
-    };
-
-    // Swap the vote and unvote links.
-    link.hide();
-    $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
-      .show();
-
-    // The div the comment is displayed in.
-    var div = $('div#cd' + d.comment_id);
-    var data = div.data('comment');
-
-    // If this is not an unvote, and the other vote arrow has
-    // already been pressed, unpress it.
-    if ((d.value !== 0) && (data.vote === d.value * -1)) {
-      $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
-      $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
-    }
-
-    // Update the comments rating in the local data.
-    data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
-    data.vote = d.value;
-    div.data('comment', data);
-
-    // Change the rating text.
-    div.find('.rating:first')
-      .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
-
-    // Send the vote information to the server.
-    $.ajax({
-      type: "POST",
-      url: opts.processVoteURL,
-      data: d,
-      error: function(request, textStatus, error) {
-        showError('Oops, there was a problem casting that vote.');
-      }
-    });
-  }
-
-  /**
-   * Open a reply form used to reply to an existing comment.
-   */
-  function openReply(id) {
-    // Swap out the reply link for the hide link
-    $('#rl' + id).hide();
-    $('#cr' + id).show();
-
-    // Add the reply li to the children ul.
-    var div = $(renderTemplate(replyTemplate, {id: id})).hide();
-    $('#cl' + id)
-      .prepend(div)
-      // Setup the submit handler for the reply form.
-      .find('#rf' + id)
-      .submit(function(event) {
-        event.preventDefault();
-        addComment($('#rf' + id));
-        closeReply(id);
-      })
-      .find('input[type=button]')
-      .click(function() {
-        closeReply(id);
-      });
-    div.slideDown('fast', function() {
-      $('#rf' + id).find('textarea').focus();
-    });
-  }
-
-  /**
-   * Close the reply form opened with openReply.
-   */
-  function closeReply(id) {
-    // Remove the reply div from the DOM.
-    $('#rd' + id).slideUp('fast', function() {
-      $(this).remove();
-    });
-
-    // Swap out the hide link for the reply link
-    $('#cr' + id).hide();
-    $('#rl' + id).show();
-  }
-
-  /**
-   * Recursively sort a tree of comments using the comp comparator.
-   */
-  function sortComments(comments) {
-    comments.sort(comp);
-    $.each(comments, function() {
-      this.children = sortComments(this.children);
-    });
-    return comments;
-  }
-
-  /**
-   * Get the children comments from a ul. If recursive is true,
-   * recursively include childrens' children.
-   */
-  function getChildren(ul, recursive) {
-    var children = [];
-    ul.children().children("[id^='cd']")
-      .each(function() {
-        var comment = $(this).data('comment');
-        if (recursive)
-          comment.children = getChildren($(this).find('#cl' + comment.id), true);
-        children.push(comment);
-      });
-    return children;
-  }
-
-  /** Create a div to display a comment in. */
-  function createCommentDiv(comment) {
-    if (!comment.displayed && !opts.moderator) {
-      return $('<div class="moderate">Thank you!  Your comment will show up '
-               + 'once it is has been approved by a moderator.</div>');
-    }
-    // Prettify the comment rating.
-    comment.pretty_rating = comment.rating + ' point' +
-      (comment.rating == 1 ? '' : 's');
-    // Make a class (for displaying not yet moderated comments differently)
-    comment.css_class = comment.displayed ? '' : ' moderate';
-    // Create a div for this comment.
-    var context = $.extend({}, opts, comment);
-    var div = $(renderTemplate(commentTemplate, context));
-
-    // If the user has voted on this comment, highlight the correct arrow.
-    if (comment.vote) {
-      var direction = (comment.vote == 1) ? 'u' : 'd';
-      div.find('#' + direction + 'v' + comment.id).hide();
-      div.find('#' + direction + 'u' + comment.id).show();
-    }
-
-    if (opts.moderator || comment.text != '[deleted]') {
-      div.find('a.reply').show();
-      if (comment.proposal_diff)
-        div.find('#sp' + comment.id).show();
-      if (opts.moderator && !comment.displayed)
-        div.find('#cm' + comment.id).show();
-      if (opts.moderator || (opts.username == comment.username))
-        div.find('#dc' + comment.id).show();
-    }
-    return div;
-  }
-
-  /**
-   * A simple template renderer. Placeholders such as <%id%> are replaced
-   * by context['id'] with items being escaped. Placeholders such as <#id#>
-   * are not escaped.
-   */
-  function renderTemplate(template, context) {
-    var esc = $(document.createElement('div'));
-
-    function handle(ph, escape) {
-      var cur = context;
-      $.each(ph.split('.'), function() {
-        cur = cur[this];
-      });
-      return escape ? esc.text(cur || "").html() : cur;
-    }
-
-    return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
-      return handle(arguments[2], arguments[1] == '%' ? true : false);
-    });
-  }
-
-  /** Flash an error message briefly. */
-  function showError(message) {
-    $(document.createElement('div')).attr({'class': 'popup-error'})
-      .append($(document.createElement('div'))
-               .attr({'class': 'error-message'}).text(message))
-      .appendTo('body')
-      .fadeIn("slow")
-      .delay(2000)
-      .fadeOut("slow");
-  }
-
-  /** Add a link the user uses to open the comments popup. */
-  $.fn.comment = function() {
-    return this.each(function() {
-      var id = $(this).attr('id').substring(1);
-      var count = COMMENT_METADATA[id];
-      var title = count + ' comment' + (count == 1 ? '' : 's');
-      var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
-      var addcls = count == 0 ? ' nocomment' : '';
-      $(this)
-        .append(
-          $(document.createElement('a')).attr({
-            href: '#',
-            'class': 'sphinx-comment-open' + addcls,
-            id: 'ao' + id
-          })
-            .append($(document.createElement('img')).attr({
-              src: image,
-              alt: 'comment',
-              title: title
-            }))
-            .click(function(event) {
-              event.preventDefault();
-              show($(this).attr('id').substring(2));
-            })
-        )
-        .append(
-          $(document.createElement('a')).attr({
-            href: '#',
-            'class': 'sphinx-comment-close hidden',
-            id: 'ah' + id
-          })
-            .append($(document.createElement('img')).attr({
-              src: opts.closeCommentImage,
-              alt: 'close',
-              title: 'close'
-            }))
-            .click(function(event) {
-              event.preventDefault();
-              hide($(this).attr('id').substring(2));
-            })
-        );
-    });
-  };
-
-  var opts = {
-    processVoteURL: '/_process_vote',
-    addCommentURL: '/_add_comment',
-    getCommentsURL: '/_get_comments',
-    acceptCommentURL: '/_accept_comment',
-    deleteCommentURL: '/_delete_comment',
-    commentImage: '/static/_static/comment.png',
-    closeCommentImage: '/static/_static/comment-close.png',
-    loadingImage: '/static/_static/ajax-loader.gif',
-    commentBrightImage: '/static/_static/comment-bright.png',
-    upArrow: '/static/_static/up.png',
-    downArrow: '/static/_static/down.png',
-    upArrowPressed: '/static/_static/up-pressed.png',
-    downArrowPressed: '/static/_static/down-pressed.png',
-    voting: false,
-    moderator: false
-  };
-
-  if (typeof COMMENT_OPTIONS != "undefined") {
-    opts = jQuery.extend(opts, COMMENT_OPTIONS);
-  }
-
-  var popupTemplate = '\
-    <div class="sphinx-comments" id="sc<%id%>">\
-      <p class="sort-options">\
-        Sort by:\
-        <a href="#" class="sort-option byrating">best rated</a>\
-        <a href="#" class="sort-option byascage">newest</a>\
-        <a href="#" class="sort-option byage">oldest</a>\
-      </p>\
-      <div class="comment-header">Comments</div>\
-      <div class="comment-loading" id="cn<%id%>">\
-        loading comments... <img src="<%loadingImage%>" alt="" /></div>\
-      <ul id="cl<%id%>" class="comment-ul"></ul>\
-      <div id="ca<%id%>">\
-      <p class="add-a-comment">Add a comment\
-        (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
-      <div class="comment-markup-box" id="mb<%id%>">\
-        reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
-        <code>``code``</code>, \
-        code blocks: <code>::</code> and an indented block after blank line</div>\
-      <form method="post" id="cf<%id%>" class="comment-form" action="">\
-        <textarea name="comment" cols="80"></textarea>\
-        <p class="propose-button">\
-          <a href="#" id="pc<%id%>" class="show-propose-change">\
-            Propose a change &#9657;\
-          </a>\
-          <a href="#" id="hc<%id%>" class="hide-propose-change">\
-            Propose a change &#9663;\
-          </a>\
-        </p>\
-        <textarea name="proposal" id="pt<%id%>" cols="80"\
-                  spellcheck="false"></textarea>\
-        <input type="submit" value="Add comment" />\
-        <input type="hidden" name="node" value="<%id%>" />\
-        <input type="hidden" name="parent" value="" />\
-      </form>\
-      </div>\
-    </div>';
-
-  var commentTemplate = '\
-    <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
-      <div class="vote">\
-        <div class="arrow">\
-          <a href="#" id="uv<%id%>" class="vote" title="vote up">\
-            <img src="<%upArrow%>" />\
-          </a>\
-          <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
-            <img src="<%upArrowPressed%>" />\
-          </a>\
-        </div>\
-        <div class="arrow">\
-          <a href="#" id="dv<%id%>" class="vote" title="vote down">\
-            <img src="<%downArrow%>" id="da<%id%>" />\
-          </a>\
-          <a href="#" id="du<%id%>" class="un vote" title="vote down">\
-            <img src="<%downArrowPressed%>" />\
-          </a>\
-        </div>\
-      </div>\
-      <div class="comment-content">\
-        <p class="tagline comment">\
-          <span class="user-id"><%username%></span>\
-          <span class="rating"><%pretty_rating%></span>\
-          <span class="delta"><%time.delta%></span>\
-        </p>\
-        <div class="comment-text comment"><#text#></div>\
-        <p class="comment-opts comment">\
-          <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
-          <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
-          <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
-          <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
-          <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
-          <span id="cm<%id%>" class="moderation hidden">\
-            <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
-          </span>\
-        </p>\
-        <pre class="proposal" id="pr<%id%>">\
-<#proposal_diff#>\
-        </pre>\
-          <ul class="comment-children" id="cl<%id%>"></ul>\
-        </div>\
-        <div class="clearleft"></div>\
-      </div>\
-    </div>';
-
-  var replyTemplate = '\
-    <li>\
-      <div class="reply-div" id="rd<%id%>">\
-        <form id="rf<%id%>">\
-          <textarea name="comment" cols="80"></textarea>\
-          <input type="submit" value="Add reply" />\
-          <input type="button" value="Cancel" />\
-          <input type="hidden" name="parent" value="<%id%>" />\
-          <input type="hidden" name="node" value="" />\
-        </form>\
-      </div>\
-    </li>';
-
-  $(document).ready(function() {
-    init();
-  });
-})(jQuery);
-
-$(document).ready(function() {
-  // add comment anchors for all paragraphs that are commentable
-  $('.sphinx-has-comment').comment();
-
-  // highlight search words in search results
-  $("div.context").each(function() {
-    var params = $.getQueryParameters();
-    var terms = (params.q) ? params.q[0].split(/\s+/) : [];
-    var result = $(this);
-    $.each(terms, function() {
-      result.highlightText(this.toLowerCase(), 'highlighted');
-    });
-  });
-
-  // directly open comment window if requested
-  var anchor = document.location.hash;
-  if (anchor.substring(0, 9) == '#comment-') {
-    $('#ao' + anchor.substring(9)).click();
-    document.location.hash = '#s' + anchor.substring(9);
-  }
-});
diff --git a/src/doc/3.10/architecture/dynamo.html b/src/doc/3.10/architecture/dynamo.html
deleted file mode 100644
index 34c8ddc..0000000
--- a/src/doc/3.10/architecture/dynamo.html
+++ /dev/null
@@ -1,220 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Architecture"
-
-doc-title: "Dynamo"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Architecture" href="index.html"/>
-      <link rel="next" title="Storage Engine" href="storage_engine.html"/>
-      <link rel="prev" title="Overview" href="overview.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Dynamo</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#gossip">Gossip</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#failure-detection">Failure Detection</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#token-ring-ranges">Token Ring/Ranges</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#replication">Replication</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#tunable-consistency">Tunable Consistency</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
-<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="dynamo">
-<h1>Dynamo<a class="headerlink" href="#dynamo" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="gossip">
-<span id="id1"></span><h2>Gossip<a class="headerlink" href="#gossip" title="Permalink to this headline">¶</a></h2>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-<div class="section" id="failure-detection">
-<h2>Failure Detection<a class="headerlink" href="#failure-detection" title="Permalink to this headline">¶</a></h2>
-<div class="admonition-todo admonition" id="index-1">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-<div class="section" id="token-ring-ranges">
-<h2>Token Ring/Ranges<a class="headerlink" href="#token-ring-ranges" title="Permalink to this headline">¶</a></h2>
-<div class="admonition-todo admonition" id="index-2">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-<div class="section" id="replication">
-<span id="replication-strategy"></span><h2>Replication<a class="headerlink" href="#replication" title="Permalink to this headline">¶</a></h2>
-<p>The replication strategy of a keyspace determines which nodes are replicas for a given token range. The two main
-replication strategies are <a class="reference internal" href="#simple-strategy"><span class="std std-ref">SimpleStrategy</span></a> and <a class="reference internal" href="#network-topology-strategy"><span class="std std-ref">NetworkTopologyStrategy</span></a>.</p>
-<div class="section" id="simplestrategy">
-<span id="simple-strategy"></span><h3>SimpleStrategy<a class="headerlink" href="#simplestrategy" title="Permalink to this headline">¶</a></h3>
-<p>SimpleStrategy allows a single integer <code class="docutils literal"><span class="pre">replication_factor</span></code> to be defined. This determines the number of nodes that
-should contain a copy of each row.  For example, if <code class="docutils literal"><span class="pre">replication_factor</span></code> is 3, then three different nodes should store
-a copy of each row.</p>
-<p>SimpleStrategy treats all nodes identically, ignoring any configured datacenters or racks.  To determine the replicas
-for a token range, Cassandra iterates through the tokens in the ring, starting with the token range of interest.  For
-each token, it checks whether the owning node has been added to the set of replicas, and if it has not, it is added to
-the set.  This process continues until <code class="docutils literal"><span class="pre">replication_factor</span></code> distinct nodes have been added to the set of replicas.</p>
-</div>
-<div class="section" id="networktopologystrategy">
-<span id="network-topology-strategy"></span><h3>NetworkTopologyStrategy<a class="headerlink" href="#networktopologystrategy" title="Permalink to this headline">¶</a></h3>
-<p>NetworkTopologyStrategy allows a replication factor to be specified for each datacenter in the cluster.  Even if your
-cluster only uses a single datacenter, NetworkTopologyStrategy should be prefered over SimpleStrategy to make it easier
-to add new physical or virtual datacenters to the cluster later.</p>
-<p>In addition to allowing the replication factor to be specified per-DC, NetworkTopologyStrategy also attempts to choose
-replicas within a datacenter from different racks.  If the number of racks is greater than or equal to the replication
-factor for the DC, each replica will be chosen from a different rack.  Otherwise, each rack will hold at least one
-replica, but some racks may hold more than one. Note that this rack-aware behavior has some potentially <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-3810">surprising
-implications</a>.  For example, if there are not an even number of
-nodes in each rack, the data load on the smallest rack may be much higher.  Similarly, if a single node is bootstrapped
-into a new rack, it will be considered a replica for the entire ring.  For this reason, many operators choose to
-configure all nodes on a single &#8220;rack&#8221;.</p>
-</div>
-</div>
-<div class="section" id="tunable-consistency">
-<h2>Tunable Consistency<a class="headerlink" href="#tunable-consistency" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra supports a per-operation tradeoff between consistency and availability through <em>Consistency Levels</em>.
-Essentially, an operation&#8217;s consistency level specifies how many of the replicas need to respond to the coordinator in
-order to consider the operation a success.</p>
-<p>The following consistency levels are available:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">ONE</span></code></dt>
-<dd>Only a single replica must respond.</dd>
-<dt><code class="docutils literal"><span class="pre">TWO</span></code></dt>
-<dd>Two replicas must respond.</dd>
-<dt><code class="docutils literal"><span class="pre">THREE</span></code></dt>
-<dd>Three replicas must respond.</dd>
-<dt><code class="docutils literal"><span class="pre">QUORUM</span></code></dt>
-<dd>A majority (n/2 + 1) of the replicas must respond.</dd>
-<dt><code class="docutils literal"><span class="pre">ALL</span></code></dt>
-<dd>All of the replicas must respond.</dd>
-<dt><code class="docutils literal"><span class="pre">LOCAL_QUORUM</span></code></dt>
-<dd>A majority of the replicas in the local datacenter (whichever datacenter the coordinator is in) must respond.</dd>
-<dt><code class="docutils literal"><span class="pre">EACH_QUORUM</span></code></dt>
-<dd>A majority of the replicas in each datacenter must respond.</dd>
-<dt><code class="docutils literal"><span class="pre">LOCAL_ONE</span></code></dt>
-<dd>Only a single replica must respond.  In a multi-datacenter cluster, this also gaurantees that read requests are not
-sent to replicas in a remote datacenter.</dd>
-<dt><code class="docutils literal"><span class="pre">ANY</span></code></dt>
-<dd>A single replica may respond, or the coordinator may store a hint. If a hint is stored, the coordinator will later
-attempt to replay the hint and deliver the mutation to the replicas.  This consistency level is only accepted for
-write operations.</dd>
-</dl>
-<p>Write operations are always sent to all replicas, regardless of consistency level. The consistency level simply
-controls how many responses the coordinator waits for before responding to the client.</p>
-<p>For read operations, the coordinator generally only issues read commands to enough replicas to satisfy the consistency
-level. There are a couple of exceptions to this:</p>
-<ul class="simple">
-<li>Speculative retry may issue a redundant read request to an extra replica if the other replicas have not responded
-within a specified time window.</li>
-<li>Based on <code class="docutils literal"><span class="pre">read_repair_chance</span></code> and <code class="docutils literal"><span class="pre">dclocal_read_repair_chance</span></code> (part of a table&#8217;s schema), read requests may be
-randomly sent to all replicas in order to repair potentially inconsistent data.</li>
-</ul>
-<div class="section" id="picking-consistency-levels">
-<h3>Picking Consistency Levels<a class="headerlink" href="#picking-consistency-levels" title="Permalink to this headline">¶</a></h3>
-<p>It is common to pick read and write consistency levels that are high enough to overlap, resulting in &#8220;strong&#8221;
-consistency.  This is typically expressed as <code class="docutils literal"><span class="pre">W</span> <span class="pre">+</span> <span class="pre">R</span> <span class="pre">&gt;</span> <span class="pre">RF</span></code>, where <code class="docutils literal"><span class="pre">W</span></code> is the write consistency level, <code class="docutils literal"><span class="pre">R</span></code> is the
-read consistency level, and <code class="docutils literal"><span class="pre">RF</span></code> is the replication factor.  For example, if <code class="docutils literal"><span class="pre">RF</span> <span class="pre">=</span> <span class="pre">3</span></code>, a <code class="docutils literal"><span class="pre">QUORUM</span></code> request will
-require responses from at least two of the three replicas.  If <code class="docutils literal"><span class="pre">QUORUM</span></code> is used for both writes and reads, at least
-one of the replicas is guaranteed to participate in <em>both</em> the write and the read request, which in turn guarantees that
-the latest write will be read. In a multi-datacenter environment, <code class="docutils literal"><span class="pre">LOCAL_QUORUM</span></code> can be used to provide a weaker but
-still useful guarantee: reads are guaranteed to see the latest write from within the same datacenter.</p>
-<p>If this type of strong consistency isn&#8217;t required, lower consistency levels like <code class="docutils literal"><span class="pre">ONE</span></code> may be used to improve
-throughput, latency, and availability.</p>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="storage_engine.html" class="btn btn-default pull-right " role="button" title="Storage Engine" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="overview.html" class="btn btn-default" role="button" title="Overview" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/architecture/guarantees.html b/src/doc/3.10/architecture/guarantees.html
deleted file mode 100644
index ac6eb05..0000000
--- a/src/doc/3.10/architecture/guarantees.html
+++ /dev/null
@@ -1,115 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Architecture"
-
-doc-title: "Guarantees"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Architecture" href="index.html"/>
-      <link rel="next" title="Data Modeling" href="../data_modeling/index.html"/>
-      <link rel="prev" title="Storage Engine" href="storage_engine.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
-<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Guarantees</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="guarantees">
-<h1>Guarantees<a class="headerlink" href="#guarantees" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../data_modeling/index.html" class="btn btn-default pull-right " role="button" title="Data Modeling" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="storage_engine.html" class="btn btn-default" role="button" title="Storage Engine" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/architecture/index.html b/src/doc/3.10/architecture/index.html
deleted file mode 100644
index b3d6498..0000000
--- a/src/doc/3.10/architecture/index.html
+++ /dev/null
@@ -1,129 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Architecture"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="Overview" href="overview.html"/>
-      <link rel="prev" title="Client drivers" href="../getting_started/drivers.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Architecture</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
-<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
-<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="architecture">
-<h1>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h1>
-<p>This section describes the general architecture of Apache Cassandra.</p>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li>
-<li class="toctree-l1"><a class="reference internal" href="dynamo.html">Dynamo</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html#gossip">Gossip</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html#failure-detection">Failure Detection</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html#token-ring-ranges">Token Ring/Ranges</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html#replication">Replication</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html#tunable-consistency">Tunable Consistency</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="storage_engine.html">Storage Engine</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#commitlog">CommitLog</a></li>
-<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#memtables">Memtables</a></li>
-<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#sstables">SSTables</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="overview.html" class="btn btn-default pull-right " role="button" title="Overview" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../getting_started/drivers.html" class="btn btn-default" role="button" title="Client drivers" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/architecture/overview.html b/src/doc/3.10/architecture/overview.html
deleted file mode 100644
index bca49ab..0000000
--- a/src/doc/3.10/architecture/overview.html
+++ /dev/null
@@ -1,115 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Architecture"
-
-doc-title: "Overview"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Architecture" href="index.html"/>
-      <link rel="next" title="Dynamo" href="dynamo.html"/>
-      <link rel="prev" title="Architecture" href="index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Overview</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
-<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
-<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="overview">
-<h1>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="dynamo.html" class="btn btn-default pull-right " role="button" title="Dynamo" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="index.html" class="btn btn-default" role="button" title="Architecture" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/architecture/storage_engine.html b/src/doc/3.10/architecture/storage_engine.html
deleted file mode 100644
index b352820..0000000
--- a/src/doc/3.10/architecture/storage_engine.html
+++ /dev/null
@@ -1,166 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Architecture"
-
-doc-title: "Storage Engine"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Architecture" href="index.html"/>
-      <link rel="next" title="Guarantees" href="guarantees.html"/>
-      <link rel="prev" title="Dynamo" href="dynamo.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Storage Engine</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog">CommitLog</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#memtables">Memtables</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#sstables">SSTables</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="storage-engine">
-<h1>Storage Engine<a class="headerlink" href="#storage-engine" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="commitlog">
-<span id="commit-log"></span><h2>CommitLog<a class="headerlink" href="#commitlog" title="Permalink to this headline">¶</a></h2>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-<div class="section" id="memtables">
-<span id="id1"></span><h2>Memtables<a class="headerlink" href="#memtables" title="Permalink to this headline">¶</a></h2>
-<p>Memtables are in-memory structures where Cassandra buffers writes.  In general, there is one active memtable per table.
-Eventually, memtables are flushed onto disk and become immutable <a class="reference internal" href="#sstables">SSTables</a>.  This can be triggered in several
-ways:</p>
-<ul class="simple">
-<li>The memory usage of the memtables exceeds the configured threshold  (see <code class="docutils literal"><span class="pre">memtable_cleanup_threshold</span></code>)</li>
-<li>The <a class="reference internal" href="#commit-log"><span class="std std-ref">CommitLog</span></a> approaches its maximum size, and forces memtable flushes in order to allow commitlog segments to
-be freed</li>
-</ul>
-<p>Memtables may be stored entirely on-heap or partially off-heap, depending on <code class="docutils literal"><span class="pre">memtable_allocation_type</span></code>.</p>
-</div>
-<div class="section" id="sstables">
-<h2>SSTables<a class="headerlink" href="#sstables" title="Permalink to this headline">¶</a></h2>
-<p>SSTables are the immutable data files that Cassandra uses for persisting data on disk.</p>
-<p>As SSTables are flushed to disk from <a class="reference internal" href="#memtables"><span class="std std-ref">Memtables</span></a> or are streamed from other nodes, Cassandra triggers compactions
-which combine multiple SSTables into one.  Once the new SSTable has been written, the old SSTables can be removed.</p>
-<p>Each SSTable is comprised of multiple components stored in separate files:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">Data.db</span></code></dt>
-<dd>The actual data, i.e. the contents of rows.</dd>
-<dt><code class="docutils literal"><span class="pre">Index.db</span></code></dt>
-<dd>An index from partition keys to positions in the <code class="docutils literal"><span class="pre">Data.db</span></code> file.  For wide partitions, this may also include an
-index to rows within a partition.</dd>
-<dt><code class="docutils literal"><span class="pre">Summary.db</span></code></dt>
-<dd>A sampling of (by default) every 128th entry in the <code class="docutils literal"><span class="pre">Index.db</span></code> file.</dd>
-<dt><code class="docutils literal"><span class="pre">Filter.db</span></code></dt>
-<dd>A Bloom Filter of the partition keys in the SSTable.</dd>
-<dt><code class="docutils literal"><span class="pre">CompressionInfo.db</span></code></dt>
-<dd>Metadata about the offsets and lengths of compression chunks in the <code class="docutils literal"><span class="pre">Data.db</span></code> file.</dd>
-<dt><code class="docutils literal"><span class="pre">Statistics.db</span></code></dt>
-<dd>Stores metadata about the SSTable, including information about timestamps, tombstones, clustering keys, compaction,
-repair, compression, TTLs, and more.</dd>
-<dt><code class="docutils literal"><span class="pre">Digest.crc32</span></code></dt>
-<dd>A CRC-32 digest of the <code class="docutils literal"><span class="pre">Data.db</span></code> file.</dd>
-<dt><code class="docutils literal"><span class="pre">TOC.txt</span></code></dt>
-<dd>A plain text list of the component files for the SSTable.</dd>
-</dl>
-<p>Within the <code class="docutils literal"><span class="pre">Data.db</span></code> file, rows are organized by partition.  These partitions are sorted in token order (i.e. by a
-hash of the partition key when the default partitioner, <code class="docutils literal"><span class="pre">Murmur3Partition</span></code>, is used).  Within a partition, rows are
-stored in the order of their clustering keys.</p>
-<p>SSTables can be optionally compressed using block-based compression.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="guarantees.html" class="btn btn-default pull-right " role="button" title="Guarantees" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="dynamo.html" class="btn btn-default" role="button" title="Dynamo" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/bugs.html b/src/doc/3.10/bugs.html
deleted file mode 100644
index d92c68a..0000000
--- a/src/doc/3.10/bugs.html
+++ /dev/null
@@ -1,110 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Reporting Bugs and Contributing"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="index.html"/>
-      <link rel="next" title="Contact us" href="contactus.html"/>
-      <link rel="prev" title="Frequently Asked Questions" href="faq/index.html"/>
-'
-doc-search-path: "search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="reporting-bugs-and-contributing">
-<h1>Reporting Bugs and Contributing<a class="headerlink" href="#reporting-bugs-and-contributing" title="Permalink to this headline">¶</a></h1>
-<p>If you encounter a problem with Cassandra, the first places to ask for help are the <a class="reference internal" href="contactus.html#mailing-lists"><span class="std std-ref">user mailing list</span></a> and the <code class="docutils literal"><span class="pre">#cassandra</span></code> <a class="reference internal" href="contactus.html#irc-channels"><span class="std std-ref">IRC channel</span></a>.</p>
-<p>If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
-ticket through the <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA">Apache Cassandra JIRA</a>. Please provide as much
-details as you can on your problem, and don&#8217;t forget to indicate which version of Cassandra you are running and on which
-environment.</p>
-<p>Further details on how to contribute can be found at our <a class="reference internal" href="development/index.html"><span class="doc">Cassandra Development</span></a> section. Please note that the source of
-this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
-same path.</p>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="contactus.html" class="btn btn-default pull-right " role="button" title="Contact us" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="faq/index.html" class="btn btn-default" role="button" title="Frequently Asked Questions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/configuration/cassandra_config_file.html b/src/doc/3.10/configuration/cassandra_config_file.html
deleted file mode 100644
index bac7c7f..0000000
--- a/src/doc/3.10/configuration/cassandra_config_file.html
+++ /dev/null
@@ -1,1723 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Configuring Cassandra"
-
-doc-title: "Cassandra Configuration File"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Configuring Cassandra" href="index.html"/>
-      <link rel="next" title="Operating Cassandra" href="../operating/index.html"/>
-      <link rel="prev" title="Configuring Cassandra" href="index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Cassandra Configuration File</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#cluster-name"><code class="docutils literal"><span class="pre">cluster_name</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#num-tokens"><code class="docutils literal"><span class="pre">num_tokens</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#allocate-tokens-for-keyspace"><code class="docutils literal"><span class="pre">allocate_tokens_for_keyspace</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#initial-token"><code class="docutils literal"><span class="pre">initial_token</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-enabled"><code class="docutils literal"><span class="pre">hinted_handoff_enabled</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-disabled-datacenters"><code class="docutils literal"><span class="pre">hinted_handoff_disabled_datacenters</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#max-hint-window-in-ms"><code class="docutils literal"><span class="pre">max_hint_window_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-throttle-in-kb"><code class="docutils literal"><span class="pre">hinted_handoff_throttle_in_kb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#max-hints-delivery-threads"><code class="docutils literal"><span class="pre">max_hints_delivery_threads</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#hints-directory"><code class="docutils literal"><span class="pre">hints_directory</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#hints-flush-period-in-ms"><code class="docutils literal"><span class="pre">hints_flush_period_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#max-hints-file-size-in-mb"><code class="docutils literal"><span class="pre">max_hints_file_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#hints-compression"><code class="docutils literal"><span class="pre">hints_compression</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#batchlog-replay-throttle-in-kb"><code class="docutils literal"><span class="pre">batchlog_replay_throttle_in_kb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#authenticator"><code class="docutils literal"><span class="pre">authenticator</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#authorizer"><code class="docutils literal"><span class="pre">authorizer</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#role-manager"><code class="docutils literal"><span class="pre">role_manager</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#roles-validity-in-ms"><code class="docutils literal"><span class="pre">roles_validity_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#roles-update-interval-in-ms"><code class="docutils literal"><span class="pre">roles_update_interval_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#permissions-validity-in-ms"><code class="docutils literal"><span class="pre">permissions_validity_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#permissions-update-interval-in-ms"><code class="docutils literal"><span class="pre">permissions_update_interval_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#credentials-validity-in-ms"><code class="docutils literal"><span class="pre">credentials_validity_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#credentials-update-interval-in-ms"><code class="docutils literal"><span class="pre">credentials_update_interval_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#partitioner"><code class="docutils literal"><span class="pre">partitioner</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#data-file-directories"><code class="docutils literal"><span class="pre">data_file_directories</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-directory"><code class="docutils literal"><span class="pre">commitlog_directory</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cdc-enabled"><code class="docutils literal"><span class="pre">cdc_enabled</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cdc-raw-directory"><code class="docutils literal"><span class="pre">cdc_raw_directory</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#disk-failure-policy"><code class="docutils literal"><span class="pre">disk_failure_policy</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commit-failure-policy"><code class="docutils literal"><span class="pre">commit_failure_policy</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#prepared-statements-cache-size-mb"><code class="docutils literal"><span class="pre">prepared_statements_cache_size_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#thrift-prepared-statements-cache-size-mb"><code class="docutils literal"><span class="pre">thrift_prepared_statements_cache_size_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#key-cache-size-in-mb"><code class="docutils literal"><span class="pre">key_cache_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#key-cache-save-period"><code class="docutils literal"><span class="pre">key_cache_save_period</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#key-cache-keys-to-save"><code class="docutils literal"><span class="pre">key_cache_keys_to_save</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#row-cache-class-name"><code class="docutils literal"><span class="pre">row_cache_class_name</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#row-cache-size-in-mb"><code class="docutils literal"><span class="pre">row_cache_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#row-cache-save-period"><code class="docutils literal"><span class="pre">row_cache_save_period</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#row-cache-keys-to-save"><code class="docutils literal"><span class="pre">row_cache_keys_to_save</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#counter-cache-size-in-mb"><code class="docutils literal"><span class="pre">counter_cache_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#counter-cache-save-period"><code class="docutils literal"><span class="pre">counter_cache_save_period</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#counter-cache-keys-to-save"><code class="docutils literal"><span class="pre">counter_cache_keys_to_save</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#saved-caches-directory"><code class="docutils literal"><span class="pre">saved_caches_directory</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync"><code class="docutils literal"><span class="pre">commitlog_sync</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync-batch-window-in-ms"><code class="docutils literal"><span class="pre">commitlog_sync_batch_window_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id1"><code class="docutils literal"><span class="pre">commitlog_sync</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync-period-in-ms"><code class="docutils literal"><span class="pre">commitlog_sync_period_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-segment-size-in-mb"><code class="docutils literal"><span class="pre">commitlog_segment_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-compression"><code class="docutils literal"><span class="pre">commitlog_compression</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#seed-provider"><code class="docutils literal"><span class="pre">seed_provider</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#concurrent-reads"><code class="docutils literal"><span class="pre">concurrent_reads</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#concurrent-writes"><code class="docutils literal"><span class="pre">concurrent_writes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#concurrent-counter-writes"><code class="docutils literal"><span class="pre">concurrent_counter_writes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#concurrent-materialized-view-writes"><code class="docutils literal"><span class="pre">concurrent_materialized_view_writes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#file-cache-size-in-mb"><code class="docutils literal"><span class="pre">file_cache_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#buffer-pool-use-heap-if-exhausted"><code class="docutils literal"><span class="pre">buffer_pool_use_heap_if_exhausted</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#disk-optimization-strategy"><code class="docutils literal"><span class="pre">disk_optimization_strategy</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#memtable-heap-space-in-mb"><code class="docutils literal"><span class="pre">memtable_heap_space_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#memtable-offheap-space-in-mb"><code class="docutils literal"><span class="pre">memtable_offheap_space_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#memtable-cleanup-threshold"><code class="docutils literal"><span class="pre">memtable_cleanup_threshold</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#memtable-allocation-type"><code class="docutils literal"><span class="pre">memtable_allocation_type</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-total-space-in-mb"><code class="docutils literal"><span class="pre">commitlog_total_space_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#memtable-flush-writers"><code class="docutils literal"><span class="pre">memtable_flush_writers</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cdc-total-space-in-mb"><code class="docutils literal"><span class="pre">cdc_total_space_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cdc-free-space-check-interval-ms"><code class="docutils literal"><span class="pre">cdc_free_space_check_interval_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#index-summary-capacity-in-mb"><code class="docutils literal"><span class="pre">index_summary_capacity_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#index-summary-resize-interval-in-minutes"><code class="docutils literal"><span class="pre">index_summary_resize_interval_in_minutes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#trickle-fsync"><code class="docutils literal"><span class="pre">trickle_fsync</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#trickle-fsync-interval-in-kb"><code class="docutils literal"><span class="pre">trickle_fsync_interval_in_kb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#storage-port"><code class="docutils literal"><span class="pre">storage_port</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#ssl-storage-port"><code class="docutils literal"><span class="pre">ssl_storage_port</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#listen-address"><code class="docutils literal"><span class="pre">listen_address</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#listen-interface"><code class="docutils literal"><span class="pre">listen_interface</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#listen-interface-prefer-ipv6"><code class="docutils literal"><span class="pre">listen_interface_prefer_ipv6</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#broadcast-address"><code class="docutils literal"><span class="pre">broadcast_address</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#listen-on-broadcast-address"><code class="docutils literal"><span class="pre">listen_on_broadcast_address</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#internode-authenticator"><code class="docutils literal"><span class="pre">internode_authenticator</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#start-native-transport"><code class="docutils literal"><span class="pre">start_native_transport</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#native-transport-port"><code class="docutils literal"><span class="pre">native_transport_port</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#native-transport-port-ssl"><code class="docutils literal"><span class="pre">native_transport_port_ssl</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-threads"><code class="docutils literal"><span class="pre">native_transport_max_threads</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-frame-size-in-mb"><code class="docutils literal"><span class="pre">native_transport_max_frame_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-concurrent-connections"><code class="docutils literal"><span class="pre">native_transport_max_concurrent_connections</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-concurrent-connections-per-ip"><code class="docutils literal"><span class="pre">native_transport_max_concurrent_connections_per_ip</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#start-rpc"><code class="docutils literal"><span class="pre">start_rpc</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-address"><code class="docutils literal"><span class="pre">rpc_address</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-interface"><code class="docutils literal"><span class="pre">rpc_interface</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-interface-prefer-ipv6"><code class="docutils literal"><span class="pre">rpc_interface_prefer_ipv6</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-port"><code class="docutils literal"><span class="pre">rpc_port</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#broadcast-rpc-address"><code class="docutils literal"><span class="pre">broadcast_rpc_address</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-keepalive"><code class="docutils literal"><span class="pre">rpc_keepalive</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-server-type"><code class="docutils literal"><span class="pre">rpc_server_type</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-min-threads"><code class="docutils literal"><span class="pre">rpc_min_threads</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-max-threads"><code class="docutils literal"><span class="pre">rpc_max_threads</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-send-buff-size-in-bytes"><code class="docutils literal"><span class="pre">rpc_send_buff_size_in_bytes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rpc-recv-buff-size-in-bytes"><code class="docutils literal"><span class="pre">rpc_recv_buff_size_in_bytes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#internode-send-buff-size-in-bytes"><code class="docutils literal"><span class="pre">internode_send_buff_size_in_bytes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#internode-recv-buff-size-in-bytes"><code class="docutils literal"><span class="pre">internode_recv_buff_size_in_bytes</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#thrift-framed-transport-size-in-mb"><code class="docutils literal"><span class="pre">thrift_framed_transport_size_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#incremental-backups"><code class="docutils literal"><span class="pre">incremental_backups</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#snapshot-before-compaction"><code class="docutils literal"><span class="pre">snapshot_before_compaction</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#auto-snapshot"><code class="docutils literal"><span class="pre">auto_snapshot</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#column-index-size-in-kb"><code class="docutils literal"><span class="pre">column_index_size_in_kb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#column-index-cache-size-in-kb"><code class="docutils literal"><span class="pre">column_index_cache_size_in_kb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#concurrent-compactors"><code class="docutils literal"><span class="pre">concurrent_compactors</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#compaction-throughput-mb-per-sec"><code class="docutils literal"><span class="pre">compaction_throughput_mb_per_sec</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#sstable-preemptive-open-interval-in-mb"><code class="docutils literal"><span class="pre">sstable_preemptive_open_interval_in_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#stream-throughput-outbound-megabits-per-sec"><code class="docutils literal"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#inter-dc-stream-throughput-outbound-megabits-per-sec"><code class="docutils literal"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#read-request-timeout-in-ms"><code class="docutils literal"><span class="pre">read_request_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#range-request-timeout-in-ms"><code class="docutils literal"><span class="pre">range_request_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#write-request-timeout-in-ms"><code class="docutils literal"><span class="pre">write_request_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#counter-write-request-timeout-in-ms"><code class="docutils literal"><span class="pre">counter_write_request_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cas-contention-timeout-in-ms"><code class="docutils literal"><span class="pre">cas_contention_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#truncate-request-timeout-in-ms"><code class="docutils literal"><span class="pre">truncate_request_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#request-timeout-in-ms"><code class="docutils literal"><span class="pre">request_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#slow-query-log-timeout-in-ms"><code class="docutils literal"><span class="pre">slow_query_log_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cross-node-timeout"><code class="docutils literal"><span class="pre">cross_node_timeout</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#streaming-socket-timeout-in-ms"><code class="docutils literal"><span class="pre">streaming_socket_timeout_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#phi-convict-threshold"><code class="docutils literal"><span class="pre">phi_convict_threshold</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#endpoint-snitch"><code class="docutils literal"><span class="pre">endpoint_snitch</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-update-interval-in-ms"><code class="docutils literal"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-reset-interval-in-ms"><code class="docutils literal"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-badness-threshold"><code class="docutils literal"><span class="pre">dynamic_snitch_badness_threshold</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#request-scheduler"><code class="docutils literal"><span class="pre">request_scheduler</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#request-scheduler-options"><code class="docutils literal"><span class="pre">request_scheduler_options</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#request-scheduler-id"><code class="docutils literal"><span class="pre">request_scheduler_id</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#server-encryption-options"><code class="docutils literal"><span class="pre">server_encryption_options</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#client-encryption-options"><code class="docutils literal"><span class="pre">client_encryption_options</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#internode-compression"><code class="docutils literal"><span class="pre">internode_compression</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#inter-dc-tcp-nodelay"><code class="docutils literal"><span class="pre">inter_dc_tcp_nodelay</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#tracetype-query-ttl"><code class="docutils literal"><span class="pre">tracetype_query_ttl</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#tracetype-repair-ttl"><code class="docutils literal"><span class="pre">tracetype_repair_ttl</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#gc-log-threshold-in-ms"><code class="docutils literal"><span class="pre">gc_log_threshold_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#enable-user-defined-functions"><code class="docutils literal"><span class="pre">enable_user_defined_functions</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#enable-scripted-user-defined-functions"><code class="docutils literal"><span class="pre">enable_scripted_user_defined_functions</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#windows-timer-interval"><code class="docutils literal"><span class="pre">windows_timer_interval</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#transparent-data-encryption-options"><code class="docutils literal"><span class="pre">transparent_data_encryption_options</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#tombstone-warn-threshold"><code class="docutils literal"><span class="pre">tombstone_warn_threshold</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#tombstone-failure-threshold"><code class="docutils literal"><span class="pre">tombstone_failure_threshold</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#batch-size-warn-threshold-in-kb"><code class="docutils literal"><span class="pre">batch_size_warn_threshold_in_kb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#batch-size-fail-threshold-in-kb"><code class="docutils literal"><span class="pre">batch_size_fail_threshold_in_kb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#unlogged-batch-across-partitions-warn-threshold"><code class="docutils literal"><span class="pre">unlogged_batch_across_partitions_warn_threshold</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#compaction-large-partition-warning-threshold-mb"><code class="docutils literal"><span class="pre">compaction_large_partition_warning_threshold_mb</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#gc-warn-threshold-in-ms"><code class="docutils literal"><span class="pre">gc_warn_threshold_in_ms</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal" href="#max-value-size-in-mb"><code class="docutils literal"><span class="pre">max_value_size_in_mb</span></code></a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="cassandra-configuration-file">
-<span id="cassandra-yaml"></span><h1>Cassandra Configuration File<a class="headerlink" href="#cassandra-configuration-file" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="cluster-name">
-<h2><code class="docutils literal"><span class="pre">cluster_name</span></code><a class="headerlink" href="#cluster-name" title="Permalink to this headline">¶</a></h2>
-<p>The name of the cluster. This is mainly used to prevent machines in
-one logical cluster from joining another.</p>
-<p><em>Default Value:</em> &#8216;Test Cluster&#8217;</p>
-</div>
-<div class="section" id="num-tokens">
-<h2><code class="docutils literal"><span class="pre">num_tokens</span></code><a class="headerlink" href="#num-tokens" title="Permalink to this headline">¶</a></h2>
-<p>This defines the number of tokens randomly assigned to this node on the ring
-The more tokens, relative to other nodes, the larger the proportion of data
-that this node will store. You probably want all nodes to have the same number
-of tokens assuming they have equal hardware capability.</p>
-<p>If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
-and will use the initial_token as described below.</p>
-<p>Specifying initial_token will override this setting on the node&#8217;s initial start,
-on subsequent starts, this setting will apply even if initial token is set.</p>
-<p>If you already have a cluster with 1 token per node, and wish to migrate to
-multiple tokens per node, see <a class="reference external" href="http://wiki.apache.org/cassandra/Operations">http://wiki.apache.org/cassandra/Operations</a></p>
-<p><em>Default Value:</em> 256</p>
-</div>
-<div class="section" id="allocate-tokens-for-keyspace">
-<h2><code class="docutils literal"><span class="pre">allocate_tokens_for_keyspace</span></code><a class="headerlink" href="#allocate-tokens-for-keyspace" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Triggers automatic allocation of num_tokens tokens for this node. The allocation
-algorithm attempts to choose tokens in a way that optimizes replicated load over
-the nodes in the datacenter for the replication strategy used by the specified
-keyspace.</p>
-<p>The load assigned to each node will be close to proportional to its number of
-vnodes.</p>
-<p>Only supported with the Murmur3Partitioner.</p>
-<p><em>Default Value:</em> KEYSPACE</p>
-</div>
-<div class="section" id="initial-token">
-<h2><code class="docutils literal"><span class="pre">initial_token</span></code><a class="headerlink" href="#initial-token" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>initial_token allows you to specify tokens manually.  While you can use it with
-vnodes (num_tokens &gt; 1, above) &#8211; in which case you should provide a
-comma-separated list &#8211; it&#8217;s primarily used when adding nodes to legacy clusters
-that do not have vnodes enabled.</p>
-</div>
-<div class="section" id="hinted-handoff-enabled">
-<h2><code class="docutils literal"><span class="pre">hinted_handoff_enabled</span></code><a class="headerlink" href="#hinted-handoff-enabled" title="Permalink to this headline">¶</a></h2>
-<p>See <a class="reference external" href="http://wiki.apache.org/cassandra/HintedHandoff">http://wiki.apache.org/cassandra/HintedHandoff</a>
-May either be &#8220;true&#8221; or &#8220;false&#8221; to enable globally</p>
-<p><em>Default Value:</em> true</p>
-</div>
-<div class="section" id="hinted-handoff-disabled-datacenters">
-<h2><code class="docutils literal"><span class="pre">hinted_handoff_disabled_datacenters</span></code><a class="headerlink" href="#hinted-handoff-disabled-datacenters" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>When hinted_handoff_enabled is true, a black list of data centers that will not
-perform hinted handoff</p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1">#    - DC1</span>
-<span class="c1">#    - DC2</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="max-hint-window-in-ms">
-<h2><code class="docutils literal"><span class="pre">max_hint_window_in_ms</span></code><a class="headerlink" href="#max-hint-window-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>this defines the maximum amount of time a dead host will have hints
-generated.  After it has been dead this long, new hints for it will not be
-created until it has been seen alive and gone down again.</p>
-<p><em>Default Value:</em> 10800000 # 3 hours</p>
-</div>
-<div class="section" id="hinted-handoff-throttle-in-kb">
-<h2><code class="docutils literal"><span class="pre">hinted_handoff_throttle_in_kb</span></code><a class="headerlink" href="#hinted-handoff-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum throttle in KBs per second, per delivery thread.  This will be
-reduced proportionally to the number of nodes in the cluster.  (If there
-are two nodes in the cluster, each delivery thread will use the maximum
-rate; if there are three, each will throttle to half of the maximum,
-since we expect two nodes to be delivering hints simultaneously.)</p>
-<p><em>Default Value:</em> 1024</p>
-</div>
-<div class="section" id="max-hints-delivery-threads">
-<h2><code class="docutils literal"><span class="pre">max_hints_delivery_threads</span></code><a class="headerlink" href="#max-hints-delivery-threads" title="Permalink to this headline">¶</a></h2>
-<p>Number of threads with which to deliver hints;
-Consider increasing this number when you have multi-dc deployments, since
-cross-dc handoff tends to be slower</p>
-<p><em>Default Value:</em> 2</p>
-</div>
-<div class="section" id="hints-directory">
-<h2><code class="docutils literal"><span class="pre">hints_directory</span></code><a class="headerlink" href="#hints-directory" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Directory where Cassandra should store hints.
-If not set, the default directory is $CASSANDRA_HOME/data/hints.</p>
-<p><em>Default Value:</em>  /var/lib/cassandra/hints</p>
-</div>
-<div class="section" id="hints-flush-period-in-ms">
-<h2><code class="docutils literal"><span class="pre">hints_flush_period_in_ms</span></code><a class="headerlink" href="#hints-flush-period-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How often hints should be flushed from the internal buffers to disk.
-Will <em>not</em> trigger fsync.</p>
-<p><em>Default Value:</em> 10000</p>
-</div>
-<div class="section" id="max-hints-file-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">max_hints_file_size_in_mb</span></code><a class="headerlink" href="#max-hints-file-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum size for a single hints file, in megabytes.</p>
-<p><em>Default Value:</em> 128</p>
-</div>
-<div class="section" id="hints-compression">
-<h2><code class="docutils literal"><span class="pre">hints_compression</span></code><a class="headerlink" href="#hints-compression" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Compression to apply to the hint files. If omitted, hints files
-will be written uncompressed. LZ4, Snappy, and Deflate compressors
-are supported.</p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
-<span class="c1">#     parameters:</span>
-<span class="c1">#         -</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="batchlog-replay-throttle-in-kb">
-<h2><code class="docutils literal"><span class="pre">batchlog_replay_throttle_in_kb</span></code><a class="headerlink" href="#batchlog-replay-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum throttle in KBs per second, total. This will be
-reduced proportionally to the number of nodes in the cluster.</p>
-<p><em>Default Value:</em> 1024</p>
-</div>
-<div class="section" id="authenticator">
-<h2><code class="docutils literal"><span class="pre">authenticator</span></code><a class="headerlink" href="#authenticator" title="Permalink to this headline">¶</a></h2>
-<p>Authentication backend, implementing IAuthenticator; used to identify users
-Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
-PasswordAuthenticator}.</p>
-<ul class="simple">
-<li>AllowAllAuthenticator performs no checks - set it to disable authentication.</li>
-<li>PasswordAuthenticator relies on username/password pairs to authenticate
-users. It keeps usernames and hashed passwords in system_auth.credentials table.
-Please increase system_auth keyspace replication factor if you use this authenticator.
-If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)</li>
-</ul>
-<p><em>Default Value:</em> AllowAllAuthenticator</p>
-</div>
-<div class="section" id="authorizer">
-<h2><code class="docutils literal"><span class="pre">authorizer</span></code><a class="headerlink" href="#authorizer" title="Permalink to this headline">¶</a></h2>
-<p>Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
-Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
-CassandraAuthorizer}.</p>
-<ul class="simple">
-<li>AllowAllAuthorizer allows any action to any user - set it to disable authorization.</li>
-<li>CassandraAuthorizer stores permissions in system_auth.permissions table. Please
-increase system_auth keyspace replication factor if you use this authorizer.</li>
-</ul>
-<p><em>Default Value:</em> AllowAllAuthorizer</p>
-</div>
-<div class="section" id="role-manager">
-<h2><code class="docutils literal"><span class="pre">role_manager</span></code><a class="headerlink" href="#role-manager" title="Permalink to this headline">¶</a></h2>
-<p>Part of the Authentication &amp; Authorization backend, implementing IRoleManager; used
-to maintain grants and memberships between roles.
-Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
-which stores role information in the system_auth keyspace. Most functions of the
-IRoleManager require an authenticated login, so unless the configured IAuthenticator
-actually implements authentication, most of this functionality will be unavailable.</p>
-<ul class="simple">
-<li>CassandraRoleManager stores role data in the system_auth keyspace. Please
-increase system_auth keyspace replication factor if you use this role manager.</li>
-</ul>
-<p><em>Default Value:</em> CassandraRoleManager</p>
-</div>
-<div class="section" id="roles-validity-in-ms">
-<h2><code class="docutils literal"><span class="pre">roles_validity_in_ms</span></code><a class="headerlink" href="#roles-validity-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>Validity period for roles cache (fetching granted roles can be an expensive
-operation depending on the role manager, CassandraRoleManager is one example)
-Granted roles are cached for authenticated sessions in AuthenticatedUser and
-after the period specified here, become eligible for (async) reload.
-Defaults to 2000, set to 0 to disable caching entirely.
-Will be disabled automatically for AllowAllAuthenticator.</p>
-<p><em>Default Value:</em> 2000</p>
-</div>
-<div class="section" id="roles-update-interval-in-ms">
-<h2><code class="docutils literal"><span class="pre">roles_update_interval_in_ms</span></code><a class="headerlink" href="#roles-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Refresh interval for roles cache (if enabled).
-After this interval, cache entries become eligible for refresh. Upon next
-access, an async reload is scheduled and the old value returned until it
-completes. If roles_validity_in_ms is non-zero, then this must be
-also.
-Defaults to the same value as roles_validity_in_ms.</p>
-<p><em>Default Value:</em> 2000</p>
-</div>
-<div class="section" id="permissions-validity-in-ms">
-<h2><code class="docutils literal"><span class="pre">permissions_validity_in_ms</span></code><a class="headerlink" href="#permissions-validity-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>Validity period for permissions cache (fetching permissions can be an
-expensive operation depending on the authorizer, CassandraAuthorizer is
-one example). Defaults to 2000, set to 0 to disable.
-Will be disabled automatically for AllowAllAuthorizer.</p>
-<p><em>Default Value:</em> 2000</p>
-</div>
-<div class="section" id="permissions-update-interval-in-ms">
-<h2><code class="docutils literal"><span class="pre">permissions_update_interval_in_ms</span></code><a class="headerlink" href="#permissions-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Refresh interval for permissions cache (if enabled).
-After this interval, cache entries become eligible for refresh. Upon next
-access, an async reload is scheduled and the old value returned until it
-completes. If permissions_validity_in_ms is non-zero, then this must be
-also.
-Defaults to the same value as permissions_validity_in_ms.</p>
-<p><em>Default Value:</em> 2000</p>
-</div>
-<div class="section" id="credentials-validity-in-ms">
-<h2><code class="docutils literal"><span class="pre">credentials_validity_in_ms</span></code><a class="headerlink" href="#credentials-validity-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>Validity period for credentials cache. This cache is tightly coupled to
-the provided PasswordAuthenticator implementation of IAuthenticator. If
-another IAuthenticator implementation is configured, this cache will not
-be automatically used and so the following settings will have no effect.
-Please note, credentials are cached in their encrypted form, so while
-activating this cache may reduce the number of queries made to the
-underlying table, it may not  bring a significant reduction in the
-latency of individual authentication attempts.
-Defaults to 2000, set to 0 to disable credentials caching.</p>
-<p><em>Default Value:</em> 2000</p>
-</div>
-<div class="section" id="credentials-update-interval-in-ms">
-<h2><code class="docutils literal"><span class="pre">credentials_update_interval_in_ms</span></code><a class="headerlink" href="#credentials-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Refresh interval for credentials cache (if enabled).
-After this interval, cache entries become eligible for refresh. Upon next
-access, an async reload is scheduled and the old value returned until it
-completes. If credentials_validity_in_ms is non-zero, then this must be
-also.
-Defaults to the same value as credentials_validity_in_ms.</p>
-<p><em>Default Value:</em> 2000</p>
-</div>
-<div class="section" id="partitioner">
-<h2><code class="docutils literal"><span class="pre">partitioner</span></code><a class="headerlink" href="#partitioner" title="Permalink to this headline">¶</a></h2>
-<p>The partitioner is responsible for distributing groups of rows (by
-partition key) across nodes in the cluster.  You should leave this
-alone for new clusters.  The partitioner can NOT be changed without
-reloading all data, so when upgrading you should set this to the
-same partitioner you were already using.</p>
-<p>Besides Murmur3Partitioner, partitioners included for backwards
-compatibility include RandomPartitioner, ByteOrderedPartitioner, and
-OrderPreservingPartitioner.</p>
-<p><em>Default Value:</em> org.apache.cassandra.dht.Murmur3Partitioner</p>
-</div>
-<div class="section" id="data-file-directories">
-<h2><code class="docutils literal"><span class="pre">data_file_directories</span></code><a class="headerlink" href="#data-file-directories" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Directories where Cassandra should store data on disk.  Cassandra
-will spread data evenly across them, subject to the granularity of
-the configured compaction strategy.
-If not set, the default directory is $CASSANDRA_HOME/data/data.</p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1">#     - /var/lib/cassandra/data</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="commitlog-directory">
-<h2><code class="docutils literal"><span class="pre">commitlog_directory</span></code><a class="headerlink" href="#commitlog-directory" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em>
-commit log.  when running on magnetic HDD, this should be a
-separate spindle than the data directories.
-If not set, the default directory is $CASSANDRA_HOME/data/commitlog.</p>
-<p><em>Default Value:</em>  /var/lib/cassandra/commitlog</p>
-</div>
-<div class="section" id="cdc-enabled">
-<h2><code class="docutils literal"><span class="pre">cdc_enabled</span></code><a class="headerlink" href="#cdc-enabled" title="Permalink to this headline">¶</a></h2>
-<p>Enable / disable CDC functionality on a per-node basis. This modifies the logic used
-for write path allocation rejection (standard: never reject. cdc: reject Mutation
-containing a CDC-enabled table if at space limit in cdc_raw_directory).</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="cdc-raw-directory">
-<h2><code class="docutils literal"><span class="pre">cdc_raw_directory</span></code><a class="headerlink" href="#cdc-raw-directory" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
-segment contains mutations for a CDC-enabled table. This should be placed on a
-separate spindle than the data directories. If not set, the default directory is
-$CASSANDRA_HOME/data/cdc_raw.</p>
-<p><em>Default Value:</em>  /var/lib/cassandra/cdc_raw</p>
-</div>
-<div class="section" id="disk-failure-policy">
-<h2><code class="docutils literal"><span class="pre">disk_failure_policy</span></code><a class="headerlink" href="#disk-failure-policy" title="Permalink to this headline">¶</a></h2>
-<p>Policy for data disk failures:</p>
-<dl class="docutils">
-<dt>die</dt>
-<dd>shut down gossip and client transports and kill the JVM for any fs errors or
-single-sstable errors, so the node can be replaced.</dd>
-<dt>stop_paranoid</dt>
-<dd>shut down gossip and client transports even for single-sstable errors,
-kill the JVM for errors during startup.</dd>
-<dt>stop</dt>
-<dd>shut down gossip and client transports, leaving the node effectively dead, but
-can still be inspected via JMX, kill the JVM for errors during startup.</dd>
-<dt>best_effort</dt>
-<dd>stop using the failed disk and respond to requests based on
-remaining available sstables.  This means you WILL see obsolete
-data at CL.ONE!</dd>
-<dt>ignore</dt>
-<dd>ignore fatal errors and let requests fail, as in pre-1.2 Cassandra</dd>
-</dl>
-<p><em>Default Value:</em> stop</p>
-</div>
-<div class="section" id="commit-failure-policy">
-<h2><code class="docutils literal"><span class="pre">commit_failure_policy</span></code><a class="headerlink" href="#commit-failure-policy" title="Permalink to this headline">¶</a></h2>
-<p>Policy for commit disk failures:</p>
-<dl class="docutils">
-<dt>die</dt>
-<dd>shut down gossip and Thrift and kill the JVM, so the node can be replaced.</dd>
-<dt>stop</dt>
-<dd>shut down gossip and Thrift, leaving the node effectively dead, but
-can still be inspected via JMX.</dd>
-<dt>stop_commit</dt>
-<dd>shutdown the commit log, letting writes collect but
-continuing to service reads, as in pre-2.0.5 Cassandra</dd>
-<dt>ignore</dt>
-<dd>ignore fatal errors and let the batches fail</dd>
-</dl>
-<p><em>Default Value:</em> stop</p>
-</div>
-<div class="section" id="prepared-statements-cache-size-mb">
-<h2><code class="docutils literal"><span class="pre">prepared_statements_cache_size_mb</span></code><a class="headerlink" href="#prepared-statements-cache-size-mb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum size of the native protocol prepared statement cache</p>
-<p>Valid values are either &#8220;auto&#8221; (omitting the value) or a value greater 0.</p>
-<p>Note that specifying a too large value will result in long running GCs and possbily
-out-of-memory errors. Keep the value at a small fraction of the heap.</p>
-<p>If you constantly see &#8220;prepared statements discarded in the last minute because
-cache limit reached&#8221; messages, the first step is to investigate the root cause
-of these messages and check whether prepared statements are used correctly -
-i.e. use bind markers for variable parts.</p>
-<p>Do only change the default value, if you really have more prepared statements than
-fit in the cache. In most cases it is not neccessary to change this value.
-Constantly re-preparing statements is a performance penalty.</p>
-<p>Default value (&#8220;auto&#8221;) is 1/256th of the heap or 10MB, whichever is greater</p>
-</div>
-<div class="section" id="thrift-prepared-statements-cache-size-mb">
-<h2><code class="docutils literal"><span class="pre">thrift_prepared_statements_cache_size_mb</span></code><a class="headerlink" href="#thrift-prepared-statements-cache-size-mb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum size of the Thrift prepared statement cache</p>
-<p>If you do not use Thrift at all, it is safe to leave this value at &#8220;auto&#8221;.</p>
-<p>See description of &#8216;prepared_statements_cache_size_mb&#8217; above for more information.</p>
-<p>Default value (&#8220;auto&#8221;) is 1/256th of the heap or 10MB, whichever is greater</p>
-</div>
-<div class="section" id="key-cache-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">key_cache_size_in_mb</span></code><a class="headerlink" href="#key-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum size of the key cache in memory.</p>
-<p>Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
-minimum, sometimes more. The key cache is fairly tiny for the amount of
-time it saves, so it&#8217;s worthwhile to use it at large numbers.
-The row cache saves even more time, but must contain the entire row,
-so it is extremely space-intensive. It&#8217;s best to only use the
-row cache if you have hot rows or static rows.</p>
-<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
-<p>Default value is empty to make it &#8220;auto&#8221; (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.</p>
-</div>
-<div class="section" id="key-cache-save-period">
-<h2><code class="docutils literal"><span class="pre">key_cache_save_period</span></code><a class="headerlink" href="#key-cache-save-period" title="Permalink to this headline">¶</a></h2>
-<p>Duration in seconds after which Cassandra should
-save the key cache. Caches are saved to saved_caches_directory as
-specified in this configuration file.</p>
-<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
-terms of I/O for the key cache. Row cache saving is much more expensive and
-has limited use.</p>
-<p>Default is 14400 or 4 hours.</p>
-<p><em>Default Value:</em> 14400</p>
-</div>
-<div class="section" id="key-cache-keys-to-save">
-<h2><code class="docutils literal"><span class="pre">key_cache_keys_to_save</span></code><a class="headerlink" href="#key-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Number of keys from the key cache to save
-Disabled by default, meaning all keys are going to be saved</p>
-<p><em>Default Value:</em> 100</p>
-</div>
-<div class="section" id="row-cache-class-name">
-<h2><code class="docutils literal"><span class="pre">row_cache_class_name</span></code><a class="headerlink" href="#row-cache-class-name" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Row cache implementation class name. Available implementations:</p>
-<dl class="docutils">
-<dt>org.apache.cassandra.cache.OHCProvider</dt>
-<dd>Fully off-heap row cache implementation (default).</dd>
-<dt>org.apache.cassandra.cache.SerializingCacheProvider</dt>
-<dd>This is the row cache implementation availabile
-in previous releases of Cassandra.</dd>
-</dl>
-<p><em>Default Value:</em> org.apache.cassandra.cache.OHCProvider</p>
-</div>
-<div class="section" id="row-cache-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">row_cache_size_in_mb</span></code><a class="headerlink" href="#row-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum size of the row cache in memory.
-Please note that OHC cache implementation requires some additional off-heap memory to manage
-the map structures and some in-flight memory during operations before/after cache entries can be
-accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
-Do not specify more memory that the system can afford in the worst usual situation and leave some
-headroom for OS block level cache. Do never allow your system to swap.</p>
-<p>Default value is 0, to disable row caching.</p>
-<p><em>Default Value:</em> 0</p>
-</div>
-<div class="section" id="row-cache-save-period">
-<h2><code class="docutils literal"><span class="pre">row_cache_save_period</span></code><a class="headerlink" href="#row-cache-save-period" title="Permalink to this headline">¶</a></h2>
-<p>Duration in seconds after which Cassandra should save the row cache.
-Caches are saved to saved_caches_directory as specified in this configuration file.</p>
-<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
-terms of I/O for the key cache. Row cache saving is much more expensive and
-has limited use.</p>
-<p>Default is 0 to disable saving the row cache.</p>
-<p><em>Default Value:</em> 0</p>
-</div>
-<div class="section" id="row-cache-keys-to-save">
-<h2><code class="docutils literal"><span class="pre">row_cache_keys_to_save</span></code><a class="headerlink" href="#row-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Number of keys from the row cache to save.
-Specify 0 (which is the default), meaning all keys are going to be saved</p>
-<p><em>Default Value:</em> 100</p>
-</div>
-<div class="section" id="counter-cache-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">counter_cache_size_in_mb</span></code><a class="headerlink" href="#counter-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>Maximum size of the counter cache in memory.</p>
-<p>Counter cache helps to reduce counter locks&#8217; contention for hot counter cells.
-In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
-write entirely. With RF &gt; 1 a counter cache hit will still help to reduce the duration
-of the lock hold, helping with hot counter cell updates, but will not allow skipping
-the read entirely. Only the local (clock, count) tuple of a counter cell is kept
-in memory, not the whole counter, so it&#8217;s relatively cheap.</p>
-<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
-<p>Default value is empty to make it &#8220;auto&#8221; (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
-NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.</p>
-</div>
-<div class="section" id="counter-cache-save-period">
-<h2><code class="docutils literal"><span class="pre">counter_cache_save_period</span></code><a class="headerlink" href="#counter-cache-save-period" title="Permalink to this headline">¶</a></h2>
-<p>Duration in seconds after which Cassandra should
-save the counter cache (keys only). Caches are saved to saved_caches_directory as
-specified in this configuration file.</p>
-<p>Default is 7200 or 2 hours.</p>
-<p><em>Default Value:</em> 7200</p>
-</div>
-<div class="section" id="counter-cache-keys-to-save">
-<h2><code class="docutils literal"><span class="pre">counter_cache_keys_to_save</span></code><a class="headerlink" href="#counter-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Number of keys from the counter cache to save
-Disabled by default, meaning all keys are going to be saved</p>
-<p><em>Default Value:</em> 100</p>
-</div>
-<div class="section" id="saved-caches-directory">
-<h2><code class="docutils literal"><span class="pre">saved_caches_directory</span></code><a class="headerlink" href="#saved-caches-directory" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>saved caches
-If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.</p>
-<p><em>Default Value:</em>  /var/lib/cassandra/saved_caches</p>
-</div>
-<div class="section" id="commitlog-sync">
-<h2><code class="docutils literal"><span class="pre">commitlog_sync</span></code><a class="headerlink" href="#commitlog-sync" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>commitlog_sync may be either &#8220;periodic&#8221; or &#8220;batch.&#8221;</p>
-<p>When in batch mode, Cassandra won&#8217;t ack writes until the commit log
-has been fsynced to disk.  It will wait
-commitlog_sync_batch_window_in_ms milliseconds between fsyncs.
-This window should be kept short because the writer threads will
-be unable to do extra work while waiting.  (You may need to increase
-concurrent_writes for the same reason.)</p>
-<p><em>Default Value:</em> batch</p>
-</div>
-<div class="section" id="commitlog-sync-batch-window-in-ms">
-<h2><code class="docutils literal"><span class="pre">commitlog_sync_batch_window_in_ms</span></code><a class="headerlink" href="#commitlog-sync-batch-window-in-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p><em>Default Value:</em> 2</p>
-</div>
-<div class="section" id="id1">
-<h2><code class="docutils literal"><span class="pre">commitlog_sync</span></code><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
-<p>the other option is &#8220;periodic&#8221; where writes may be acked immediately
-and the CommitLog is simply synced every commitlog_sync_period_in_ms
-milliseconds.</p>
-<p><em>Default Value:</em> periodic</p>
-</div>
-<div class="section" id="commitlog-sync-period-in-ms">
-<h2><code class="docutils literal"><span class="pre">commitlog_sync_period_in_ms</span></code><a class="headerlink" href="#commitlog-sync-period-in-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>Default Value:</em> 10000</p>
-</div>
-<div class="section" id="commitlog-segment-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">commitlog_segment_size_in_mb</span></code><a class="headerlink" href="#commitlog-segment-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>The size of the individual commitlog file segments.  A commitlog
-segment may be archived, deleted, or recycled once all the data
-in it (potentially from each columnfamily in the system) has been
-flushed to sstables.</p>
-<p>The default size is 32, which is almost always fine, but if you are
-archiving commitlog segments (see commitlog_archiving.properties),
-then you probably want a finer granularity of archiving; 8 or 16 MB
-is reasonable.
-Max mutation size is also configurable via max_mutation_size_in_kb setting in
-cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.</p>
-<p>NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
-be set to at least twice the size of max_mutation_size_in_kb / 1024</p>
-<p><em>Default Value:</em> 32</p>
-</div>
-<div class="section" id="commitlog-compression">
-<h2><code class="docutils literal"><span class="pre">commitlog_compression</span></code><a class="headerlink" href="#commitlog-compression" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Compression to apply to the commit log. If omitted, the commit log
-will be written uncompressed.  LZ4, Snappy, and Deflate compressors
-are supported.</p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
-<span class="c1">#     parameters:</span>
-<span class="c1">#         -</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="seed-provider">
-<h2><code class="docutils literal"><span class="pre">seed_provider</span></code><a class="headerlink" href="#seed-provider" title="Permalink to this headline">¶</a></h2>
-<p>any class that implements the SeedProvider interface and has a
-constructor that takes a Map&lt;String, String&gt; of parameters will do.</p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Addresses of hosts that are deemed contact points.</span>
-<span class="c1"># Cassandra nodes use this list of hosts to find each other and learn</span>
-<span class="c1"># the topology of the ring.  You must change this if you are running</span>
-<span class="c1"># multiple nodes!</span>
-<span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">SimpleSeedProvider</span>
-  <span class="n">parameters</span><span class="p">:</span>
-      <span class="c1"># seeds is actually a comma-delimited list of addresses.</span>
-      <span class="c1"># Ex: &quot;&lt;ip1&gt;,&lt;ip2&gt;,&lt;ip3&gt;&quot;</span>
-      <span class="o">-</span> <span class="n">seeds</span><span class="p">:</span> <span class="s2">&quot;127.0.0.1&quot;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="concurrent-reads">
-<h2><code class="docutils literal"><span class="pre">concurrent_reads</span></code><a class="headerlink" href="#concurrent-reads" title="Permalink to this headline">¶</a></h2>
-<p>For workloads with more data than can fit in memory, Cassandra&#8217;s
-bottleneck will be reads that need to fetch data from
-disk. &#8220;concurrent_reads&#8221; should be set to (16 * number_of_drives) in
-order to allow the operations to enqueue low enough in the stack
-that the OS and drives can reorder them. Same applies to
-&#8220;concurrent_counter_writes&#8221;, since counter writes read the current
-values before incrementing and writing them back.</p>
-<p>On the other hand, since writes are almost never IO bound, the ideal
-number of &#8220;concurrent_writes&#8221; is dependent on the number of cores in
-your system; (8 * number_of_cores) is a good rule of thumb.</p>
-<p><em>Default Value:</em> 32</p>
-</div>
-<div class="section" id="concurrent-writes">
-<h2><code class="docutils literal"><span class="pre">concurrent_writes</span></code><a class="headerlink" href="#concurrent-writes" title="Permalink to this headline">¶</a></h2>
-<p><em>Default Value:</em> 32</p>
-</div>
-<div class="section" id="concurrent-counter-writes">
-<h2><code class="docutils literal"><span class="pre">concurrent_counter_writes</span></code><a class="headerlink" href="#concurrent-counter-writes" title="Permalink to this headline">¶</a></h2>
-<p><em>Default Value:</em> 32</p>
-</div>
-<div class="section" id="concurrent-materialized-view-writes">
-<h2><code class="docutils literal"><span class="pre">concurrent_materialized_view_writes</span></code><a class="headerlink" href="#concurrent-materialized-view-writes" title="Permalink to this headline">¶</a></h2>
-<p>For materialized view writes, as there is a read involved, so this should
-be limited by the less of concurrent reads or concurrent writes.</p>
-<p><em>Default Value:</em> 32</p>
-</div>
-<div class="section" id="file-cache-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">file_cache_size_in_mb</span></code><a class="headerlink" href="#file-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Maximum memory to use for sstable chunk cache and buffer pooling.
-32MB of this are reserved for pooling buffers, the rest is used as an
-cache that holds uncompressed sstable chunks.
-Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
-so is in addition to the memory allocated for heap. The cache also has on-heap
-overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
-if the default 64k chunk size is used).
-Memory is only allocated when needed.</p>
-<p><em>Default Value:</em> 512</p>
-</div>
-<div class="section" id="buffer-pool-use-heap-if-exhausted">
-<h2><code class="docutils literal"><span class="pre">buffer_pool_use_heap_if_exhausted</span></code><a class="headerlink" href="#buffer-pool-use-heap-if-exhausted" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Flag indicating whether to allocate on or off heap when the sstable buffer
-pool is exhausted, that is when it has exceeded the maximum memory
-file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.</p>
-<p><em>Default Value:</em> true</p>
-</div>
-<div class="section" id="disk-optimization-strategy">
-<h2><code class="docutils literal"><span class="pre">disk_optimization_strategy</span></code><a class="headerlink" href="#disk-optimization-strategy" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>The strategy for optimizing disk read
-Possible values are:
-ssd (for solid state disks, the default)
-spinning (for spinning disks)</p>
-<p><em>Default Value:</em> ssd</p>
-</div>
-<div class="section" id="memtable-heap-space-in-mb">
-<h2><code class="docutils literal"><span class="pre">memtable_heap_space_in_mb</span></code><a class="headerlink" href="#memtable-heap-space-in-mb" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Total permitted memory to use for memtables. Cassandra will stop
-accepting writes when the limit is exceeded until a flush completes,
-and will trigger a flush based on memtable_cleanup_threshold
-If omitted, Cassandra will set both to 1/4 the size of the heap.</p>
-<p><em>Default Value:</em> 2048</p>
-</div>
-<div class="section" id="memtable-offheap-space-in-mb">
-<h2><code class="docutils literal"><span class="pre">memtable_offheap_space_in_mb</span></code><a class="headerlink" href="#memtable-offheap-space-in-mb" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p><em>Default Value:</em> 2048</p>
-</div>
-<div class="section" id="memtable-cleanup-threshold">
-<h2><code class="docutils literal"><span class="pre">memtable_cleanup_threshold</span></code><a class="headerlink" href="#memtable-cleanup-threshold" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>memtable_cleanup_threshold is deprecated. The default calculation
-is the only reasonable choice. See the comments on  memtable_flush_writers
-for more information.</p>
-<p>Ratio of occupied non-flushing memtable size to total permitted size
-that will trigger a flush of the largest memtable. Larger mct will
-mean larger flushes and hence less compaction, but also less concurrent
-flush activity which can make it difficult to keep your disks fed
-under heavy write load.</p>
-<p>memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)</p>
-<p><em>Default Value:</em> 0.11</p>
-</div>
-<div class="section" id="memtable-allocation-type">
-<h2><code class="docutils literal"><span class="pre">memtable_allocation_type</span></code><a class="headerlink" href="#memtable-allocation-type" title="Permalink to this headline">¶</a></h2>
-<p>Specify the way Cassandra allocates and manages memtable memory.
-Options are:</p>
-<dl class="docutils">
-<dt>heap_buffers</dt>
-<dd>on heap nio buffers</dd>
-<dt>offheap_buffers</dt>
-<dd>off heap (direct) nio buffers</dd>
-<dt>offheap_objects</dt>
-<dd>off heap objects</dd>
-</dl>
-<p><em>Default Value:</em> heap_buffers</p>
-</div>
-<div class="section" id="commitlog-total-space-in-mb">
-<h2><code class="docutils literal"><span class="pre">commitlog_total_space_in_mb</span></code><a class="headerlink" href="#commitlog-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Total space to use for commit logs on disk.</p>
-<p>If space gets above this value, Cassandra will flush every dirty CF
-in the oldest segment and remove it.  So a small total commitlog space
-will tend to cause more flush activity on less-active columnfamilies.</p>
-<p>The default value is the smaller of 8192, and 1/4 of the total space
-of the commitlog volume.</p>
-<p><em>Default Value:</em> 8192</p>
-</div>
-<div class="section" id="memtable-flush-writers">
-<h2><code class="docutils literal"><span class="pre">memtable_flush_writers</span></code><a class="headerlink" href="#memtable-flush-writers" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>This sets the number of memtable flush writer threads per disk
-as well as the total number of memtables that can be flushed concurrently.
-These are generally a combination of compute and IO bound.</p>
-<p>Memtable flushing is more CPU efficient than memtable ingest and a single thread
-can keep up with the ingest rate of a whole server on a single fast disk
-until it temporarily becomes IO bound under contention typically with compaction.
-At that point you need multiple flush threads. At some point in the future
-it may become CPU bound all the time.</p>
-<p>You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
-metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
-to free memory.</p>
-<p>memtable_flush_writers defaults to two for a single data directory.
-This means that two  memtables can be flushed concurrently to the single data directory.
-If you have multiple data directories the default is one memtable flushing at a time
-but the flush will use a thread per data directory so you will get two or more writers.</p>
-<p>Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
-Adding more flush writers will result in smaller more frequent flushes that introduce more
-compaction overhead.</p>
-<p>There is a direct tradeoff between number of memtables that can be flushed concurrently
-and flush size and frequency. More is not better you just need enough flush writers
-to never stall waiting for flushing to free memory.</p>
-<p><em>Default Value:</em> 2</p>
-</div>
-<div class="section" id="cdc-total-space-in-mb">
-<h2><code class="docutils literal"><span class="pre">cdc_total_space_in_mb</span></code><a class="headerlink" href="#cdc-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Total space to use for change-data-capture logs on disk.</p>
-<p>If space gets above this value, Cassandra will throw WriteTimeoutException
-on Mutations including tables with CDC enabled. A CDCCompactor is responsible
-for parsing the raw CDC logs and deleting them when parsing is completed.</p>
-<p>The default value is the min of 4096 mb and 1/8th of the total space
-of the drive where cdc_raw_directory resides.</p>
-<p><em>Default Value:</em> 4096</p>
-</div>
-<div class="section" id="cdc-free-space-check-interval-ms">
-<h2><code class="docutils literal"><span class="pre">cdc_free_space_check_interval_ms</span></code><a class="headerlink" href="#cdc-free-space-check-interval-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>When we hit our cdc_raw limit and the CDCCompactor is either running behind
-or experiencing backpressure, we check at the following interval to see if any
-new space for cdc-tracked tables has been made available. Default to 250ms</p>
-<p><em>Default Value:</em> 250</p>
-</div>
-<div class="section" id="index-summary-capacity-in-mb">
-<h2><code class="docutils literal"><span class="pre">index_summary_capacity_in_mb</span></code><a class="headerlink" href="#index-summary-capacity-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>A fixed memory pool size in MB for for SSTable index summaries. If left
-empty, this will default to 5% of the heap size. If the memory usage of
-all index summaries exceeds this limit, SSTables with low read rates will
-shrink their index summaries in order to meet this limit.  However, this
-is a best-effort process. In extreme conditions Cassandra may need to use
-more than this amount of memory.</p>
-</div>
-<div class="section" id="index-summary-resize-interval-in-minutes">
-<h2><code class="docutils literal"><span class="pre">index_summary_resize_interval_in_minutes</span></code><a class="headerlink" href="#index-summary-resize-interval-in-minutes" title="Permalink to this headline">¶</a></h2>
-<p>How frequently index summaries should be resampled.  This is done
-periodically to redistribute memory from the fixed-size pool to sstables
-proportional their recent read rates.  Setting to -1 will disable this
-process, leaving existing index summaries at their current sampling level.</p>
-<p><em>Default Value:</em> 60</p>
-</div>
-<div class="section" id="trickle-fsync">
-<h2><code class="docutils literal"><span class="pre">trickle_fsync</span></code><a class="headerlink" href="#trickle-fsync" title="Permalink to this headline">¶</a></h2>
-<p>Whether to, when doing sequential writing, fsync() at intervals in
-order to force the operating system to flush the dirty
-buffers. Enable this to avoid sudden dirty buffer flushing from
-impacting read latencies. Almost always a good idea on SSDs; not
-necessarily on platters.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="trickle-fsync-interval-in-kb">
-<h2><code class="docutils literal"><span class="pre">trickle_fsync_interval_in_kb</span></code><a class="headerlink" href="#trickle-fsync-interval-in-kb" title="Permalink to this headline">¶</a></h2>
-<p><em>Default Value:</em> 10240</p>
-</div>
-<div class="section" id="storage-port">
-<h2><code class="docutils literal"><span class="pre">storage_port</span></code><a class="headerlink" href="#storage-port" title="Permalink to this headline">¶</a></h2>
-<p>TCP port, for commands and data
-For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
-<p><em>Default Value:</em> 7000</p>
-</div>
-<div class="section" id="ssl-storage-port">
-<h2><code class="docutils literal"><span class="pre">ssl_storage_port</span></code><a class="headerlink" href="#ssl-storage-port" title="Permalink to this headline">¶</a></h2>
-<p>SSL port, for encrypted communication.  Unused unless enabled in
-encryption_options
-For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
-<p><em>Default Value:</em> 7001</p>
-</div>
-<div class="section" id="listen-address">
-<h2><code class="docutils literal"><span class="pre">listen_address</span></code><a class="headerlink" href="#listen-address" title="Permalink to this headline">¶</a></h2>
-<p>Address or interface to bind to and tell other Cassandra nodes to connect to.
-You _must_ change this if you want multiple nodes to be able to communicate!</p>
-<p>Set listen_address OR listen_interface, not both.</p>
-<p>Leaving it blank leaves it up to InetAddress.getLocalHost(). This
-will always do the Right Thing _if_ the node is properly configured
-(hostname, name resolution, etc), and the Right Thing is to use the
-address associated with the hostname (it might not be).</p>
-<p>Setting listen_address to 0.0.0.0 is always wrong.</p>
-<p><em>Default Value:</em> localhost</p>
-</div>
-<div class="section" id="listen-interface">
-<h2><code class="docutils literal"><span class="pre">listen_interface</span></code><a class="headerlink" href="#listen-interface" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Set listen_address OR listen_interface, not both. Interfaces must correspond
-to a single address, IP aliasing is not supported.</p>
-<p><em>Default Value:</em> eth0</p>
-</div>
-<div class="section" id="listen-interface-prefer-ipv6">
-<h2><code class="docutils literal"><span class="pre">listen_interface_prefer_ipv6</span></code><a class="headerlink" href="#listen-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
-you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
-address will be used. If true the first ipv6 address will be used. Defaults to false preferring
-ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="broadcast-address">
-<h2><code class="docutils literal"><span class="pre">broadcast_address</span></code><a class="headerlink" href="#broadcast-address" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Address to broadcast to other Cassandra nodes
-Leaving this blank will set it to the same value as listen_address</p>
-<p><em>Default Value:</em> 1.2.3.4</p>
-</div>
-<div class="section" id="listen-on-broadcast-address">
-<h2><code class="docutils literal"><span class="pre">listen_on_broadcast_address</span></code><a class="headerlink" href="#listen-on-broadcast-address" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>When using multiple physical network interfaces, set this
-to true to listen on broadcast_address in addition to
-the listen_address, allowing nodes to communicate in both
-interfaces.
-Ignore this property if the network configuration automatically
-routes  between the public and private networks such as EC2.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="internode-authenticator">
-<h2><code class="docutils literal"><span class="pre">internode_authenticator</span></code><a class="headerlink" href="#internode-authenticator" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Internode authentication backend, implementing IInternodeAuthenticator;
-used to allow/disallow connections from peer nodes.</p>
-<p><em>Default Value:</em> org.apache.cassandra.auth.AllowAllInternodeAuthenticator</p>
-</div>
-<div class="section" id="start-native-transport">
-<h2><code class="docutils literal"><span class="pre">start_native_transport</span></code><a class="headerlink" href="#start-native-transport" title="Permalink to this headline">¶</a></h2>
-<p>Whether to start the native transport server.
-Please note that the address on which the native transport is bound is the
-same as the rpc_address. The port however is different and specified below.</p>
-<p><em>Default Value:</em> true</p>
-</div>
-<div class="section" id="native-transport-port">
-<h2><code class="docutils literal"><span class="pre">native_transport_port</span></code><a class="headerlink" href="#native-transport-port" title="Permalink to this headline">¶</a></h2>
-<p>port for the CQL native transport to listen for clients on
-For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
-<p><em>Default Value:</em> 9042</p>
-</div>
-<div class="section" id="native-transport-port-ssl">
-<h2><code class="docutils literal"><span class="pre">native_transport_port_ssl</span></code><a class="headerlink" href="#native-transport-port-ssl" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em>
-Enabling native transport encryption in client_encryption_options allows you to either use
-encryption for the standard port or to use a dedicated, additional port along with the unencrypted
-standard native_transport_port.
-Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
-for native_transport_port. Setting native_transport_port_ssl to a different value
-from native_transport_port will use encryption for native_transport_port_ssl while
-keeping native_transport_port unencrypted.</p>
-<p><em>Default Value:</em> 9142</p>
-</div>
-<div class="section" id="native-transport-max-threads">
-<h2><code class="docutils literal"><span class="pre">native_transport_max_threads</span></code><a class="headerlink" href="#native-transport-max-threads" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em>
-The maximum threads for handling requests when the native transport is used.
-This is similar to rpc_max_threads though the default differs slightly (and
-there is no native_transport_min_threads, idle threads will always be stopped
-after 30 seconds).</p>
-<p><em>Default Value:</em> 128</p>
-</div>
-<div class="section" id="native-transport-max-frame-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">native_transport_max_frame_size_in_mb</span></code><a class="headerlink" href="#native-transport-max-frame-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>The maximum size of allowed frame. Frame (requests) larger than this will
-be rejected as invalid. The default is 256MB. If you&#8217;re changing this parameter,
-you may want to adjust max_value_size_in_mb accordingly.</p>
-<p><em>Default Value:</em> 256</p>
-</div>
-<div class="section" id="native-transport-max-concurrent-connections">
-<h2><code class="docutils literal"><span class="pre">native_transport_max_concurrent_connections</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>The maximum number of concurrent client connections.
-The default is -1, which means unlimited.</p>
-<p><em>Default Value:</em> -1</p>
-</div>
-<div class="section" id="native-transport-max-concurrent-connections-per-ip">
-<h2><code class="docutils literal"><span class="pre">native_transport_max_concurrent_connections_per_ip</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections-per-ip" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>The maximum number of concurrent client connections per source ip.
-The default is -1, which means unlimited.</p>
-<p><em>Default Value:</em> -1</p>
-</div>
-<div class="section" id="start-rpc">
-<h2><code class="docutils literal"><span class="pre">start_rpc</span></code><a class="headerlink" href="#start-rpc" title="Permalink to this headline">¶</a></h2>
-<p>Whether to start the thrift rpc server.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="rpc-address">
-<h2><code class="docutils literal"><span class="pre">rpc_address</span></code><a class="headerlink" href="#rpc-address" title="Permalink to this headline">¶</a></h2>
-<p>The address or interface to bind the Thrift RPC service and native transport
-server to.</p>
-<p>Set rpc_address OR rpc_interface, not both.</p>
-<p>Leaving rpc_address blank has the same effect as on listen_address
-(i.e. it will be based on the configured hostname of the node).</p>
-<p>Note that unlike listen_address, you can specify 0.0.0.0, but you must also
-set broadcast_rpc_address to a value other than 0.0.0.0.</p>
-<p>For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
-<p><em>Default Value:</em> localhost</p>
-</div>
-<div class="section" id="rpc-interface">
-<h2><code class="docutils literal"><span class="pre">rpc_interface</span></code><a class="headerlink" href="#rpc-interface" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Set rpc_address OR rpc_interface, not both. Interfaces must correspond
-to a single address, IP aliasing is not supported.</p>
-<p><em>Default Value:</em> eth1</p>
-</div>
-<div class="section" id="rpc-interface-prefer-ipv6">
-<h2><code class="docutils literal"><span class="pre">rpc_interface_prefer_ipv6</span></code><a class="headerlink" href="#rpc-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
-you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
-address will be used. If true the first ipv6 address will be used. Defaults to false preferring
-ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="rpc-port">
-<h2><code class="docutils literal"><span class="pre">rpc_port</span></code><a class="headerlink" href="#rpc-port" title="Permalink to this headline">¶</a></h2>
-<p>port for Thrift to listen for clients on</p>
-<p><em>Default Value:</em> 9160</p>
-</div>
-<div class="section" id="broadcast-rpc-address">
-<h2><code class="docutils literal"><span class="pre">broadcast_rpc_address</span></code><a class="headerlink" href="#broadcast-rpc-address" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>RPC address to broadcast to drivers and other Cassandra nodes. This cannot
-be set to 0.0.0.0. If left blank, this will be set to the value of
-rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
-be set.</p>
-<p><em>Default Value:</em> 1.2.3.4</p>
-</div>
-<div class="section" id="rpc-keepalive">
-<h2><code class="docutils literal"><span class="pre">rpc_keepalive</span></code><a class="headerlink" href="#rpc-keepalive" title="Permalink to this headline">¶</a></h2>
-<p>enable or disable keepalive on rpc/native connections</p>
-<p><em>Default Value:</em> true</p>
-</div>
-<div class="section" id="rpc-server-type">
-<h2><code class="docutils literal"><span class="pre">rpc_server_type</span></code><a class="headerlink" href="#rpc-server-type" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra provides two out-of-the-box options for the RPC Server:</p>
-<dl class="docutils">
-<dt>sync</dt>
-<dd>One thread per thrift connection. For a very large number of clients, memory
-will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
-per thread, and that will correspond to your use of virtual memory (but physical memory
-may be limited depending on use of stack space).</dd>
-<dt>hsha</dt>
-<dd>Stands for &#8220;half synchronous, half asynchronous.&#8221; All thrift clients are handled
-asynchronously using a small number of threads that does not vary with the amount
-of thrift clients (and thus scales well to many clients). The rpc requests are still
-synchronous (one thread per active request). If hsha is selected then it is essential
-that rpc_max_threads is changed from the default value of unlimited.</dd>
-</dl>
-<p>The default is sync because on Windows hsha is about 30% slower.  On Linux,
-sync/hsha performance is about the same, with hsha of course using less memory.</p>
-<p>Alternatively,  can provide your own RPC server by providing the fully-qualified class name
-of an o.a.c.t.TServerFactory that can create an instance of it.</p>
-<p><em>Default Value:</em> sync</p>
-</div>
-<div class="section" id="rpc-min-threads">
-<h2><code class="docutils literal"><span class="pre">rpc_min_threads</span></code><a class="headerlink" href="#rpc-min-threads" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Uncomment rpc_min|max_thread to set request pool size limits.</p>
-<p>Regardless of your choice of RPC server (see above), the number of maximum requests in the
-RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
-RPC server, it also dictates the number of clients that can be connected at all).</p>
-<p>The default is unlimited and thus provides no protection against clients overwhelming the server. You are
-encouraged to set a maximum that makes sense for you in production, but do keep in mind that
-rpc_max_threads represents the maximum number of client requests this server may execute concurrently.</p>
-<p><em>Default Value:</em> 16</p>
-</div>
-<div class="section" id="rpc-max-threads">
-<h2><code class="docutils literal"><span class="pre">rpc_max_threads</span></code><a class="headerlink" href="#rpc-max-threads" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p><em>Default Value:</em> 2048</p>
-</div>
-<div class="section" id="rpc-send-buff-size-in-bytes">
-<h2><code class="docutils literal"><span class="pre">rpc_send_buff_size_in_bytes</span></code><a class="headerlink" href="#rpc-send-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>uncomment to set socket buffer sizes on rpc connections</p>
-</div>
-<div class="section" id="rpc-recv-buff-size-in-bytes">
-<h2><code class="docutils literal"><span class="pre">rpc_recv_buff_size_in_bytes</span></code><a class="headerlink" href="#rpc-recv-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-</div>
-<div class="section" id="internode-send-buff-size-in-bytes">
-<h2><code class="docutils literal"><span class="pre">internode_send_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-send-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Uncomment to set socket buffer size for internode communication
-Note that when setting this, the buffer size is limited by net.core.wmem_max
-and when not setting it it is defined by net.ipv4.tcp_wmem
-See also:
-/proc/sys/net/core/wmem_max
-/proc/sys/net/core/rmem_max
-/proc/sys/net/ipv4/tcp_wmem
-/proc/sys/net/ipv4/tcp_wmem
-and &#8216;man tcp&#8217;</p>
-</div>
-<div class="section" id="internode-recv-buff-size-in-bytes">
-<h2><code class="docutils literal"><span class="pre">internode_recv_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-recv-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Uncomment to set socket buffer size for internode communication
-Note that when setting this, the buffer size is limited by net.core.wmem_max
-and when not setting it it is defined by net.ipv4.tcp_wmem</p>
-</div>
-<div class="section" id="thrift-framed-transport-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">thrift_framed_transport_size_in_mb</span></code><a class="headerlink" href="#thrift-framed-transport-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>Frame size for thrift (maximum message length).</p>
-<p><em>Default Value:</em> 15</p>
-</div>
-<div class="section" id="incremental-backups">
-<h2><code class="docutils literal"><span class="pre">incremental_backups</span></code><a class="headerlink" href="#incremental-backups" title="Permalink to this headline">¶</a></h2>
-<p>Set to true to have Cassandra create a hard link to each sstable
-flushed or streamed locally in a backups/ subdirectory of the
-keyspace data.  Removing these links is the operator&#8217;s
-responsibility.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="snapshot-before-compaction">
-<h2><code class="docutils literal"><span class="pre">snapshot_before_compaction</span></code><a class="headerlink" href="#snapshot-before-compaction" title="Permalink to this headline">¶</a></h2>
-<p>Whether or not to take a snapshot before each compaction.  Be
-careful using this option, since Cassandra won&#8217;t clean up the
-snapshots for you.  Mostly useful if you&#8217;re paranoid when there
-is a data format change.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="auto-snapshot">
-<h2><code class="docutils literal"><span class="pre">auto_snapshot</span></code><a class="headerlink" href="#auto-snapshot" title="Permalink to this headline">¶</a></h2>
-<p>Whether or not a snapshot is taken of the data before keyspace truncation
-or dropping of column families. The STRONGLY advised default of true
-should be used to provide data safety. If you set this flag to false, you will
-lose data on truncation or drop.</p>
-<p><em>Default Value:</em> true</p>
-</div>
-<div class="section" id="column-index-size-in-kb">
-<h2><code class="docutils literal"><span class="pre">column_index_size_in_kb</span></code><a class="headerlink" href="#column-index-size-in-kb" title="Permalink to this headline">¶</a></h2>
-<p>Granularity of the collation index of rows within a partition.
-Increase if your rows are large, or if you have a very large
-number of rows per partition.  The competing goals are these:</p>
-<ul class="simple">
-<li>a smaller granularity means more index entries are generated
-and looking up rows withing the partition by collation column
-is faster</li>
-<li>but, Cassandra will keep the collation index in memory for hot
-rows (as part of the key cache), so a larger granularity means
-you can cache more hot rows</li>
-</ul>
-<p><em>Default Value:</em> 64</p>
-</div>
-<div class="section" id="column-index-cache-size-in-kb">
-<h2><code class="docutils literal"><span class="pre">column_index_cache_size_in_kb</span></code><a class="headerlink" href="#column-index-cache-size-in-kb" title="Permalink to this headline">¶</a></h2>
-<p>Per sstable indexed key cache entries (the collation index in memory
-mentioned above) exceeding this size will not be held on heap.
-This means that only partition information is held on heap and the
-index entries are read from disk.</p>
-<p>Note that this size refers to the size of the
-serialized index information and not the size of the partition.</p>
-<p><em>Default Value:</em> 2</p>
-</div>
-<div class="section" id="concurrent-compactors">
-<h2><code class="docutils literal"><span class="pre">concurrent_compactors</span></code><a class="headerlink" href="#concurrent-compactors" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Number of simultaneous compactions to allow, NOT including
-validation &#8220;compactions&#8221; for anti-entropy repair.  Simultaneous
-compactions can help preserve read performance in a mixed read/write
-workload, by mitigating the tendency of small sstables to accumulate
-during a single long running compactions. The default is usually
-fine and if you experience problems with compaction running too
-slowly or too fast, you should look at
-compaction_throughput_mb_per_sec first.</p>
-<p>concurrent_compactors defaults to the smaller of (number of disks,
-number of cores), with a minimum of 2 and a maximum of 8.</p>
-<p>If your data directories are backed by SSD, you should increase this
-to the number of cores.</p>
-<p><em>Default Value:</em> 1</p>
-</div>
-<div class="section" id="compaction-throughput-mb-per-sec">
-<h2><code class="docutils literal"><span class="pre">compaction_throughput_mb_per_sec</span></code><a class="headerlink" href="#compaction-throughput-mb-per-sec" title="Permalink to this headline">¶</a></h2>
-<p>Throttles compaction to the given total throughput across the entire
-system. The faster you insert data, the faster you need to compact in
-order to keep the sstable count down, but in general, setting this to
-16 to 32 times the rate you are inserting data is more than sufficient.
-Setting this to 0 disables throttling. Note that this account for all types
-of compaction, including validation compaction.</p>
-<p><em>Default Value:</em> 16</p>
-</div>
-<div class="section" id="sstable-preemptive-open-interval-in-mb">
-<h2><code class="docutils literal"><span class="pre">sstable_preemptive_open_interval_in_mb</span></code><a class="headerlink" href="#sstable-preemptive-open-interval-in-mb" title="Permalink to this headline">¶</a></h2>
-<p>When compacting, the replacement sstable(s) can be opened before they
-are completely written, and used in place of the prior sstables for
-any range that has been written. This helps to smoothly transfer reads
-between the sstables, reducing page cache churn and keeping hot rows hot</p>
-<p><em>Default Value:</em> 50</p>
-</div>
-<div class="section" id="stream-throughput-outbound-megabits-per-sec">
-<h2><code class="docutils literal"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Throttles all outbound streaming file transfers on this node to the
-given total throughput in Mbps. This is necessary because Cassandra does
-mostly sequential IO when streaming data during bootstrap or repair, which
-can lead to saturating the network connection and degrading rpc performance.
-When unset, the default is 200 Mbps or 25 MB/s.</p>
-<p><em>Default Value:</em> 200</p>
-</div>
-<div class="section" id="inter-dc-stream-throughput-outbound-megabits-per-sec">
-<h2><code class="docutils literal"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#inter-dc-stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Throttles all streaming file transfer between the datacenters,
-this setting allows users to throttle inter dc stream throughput in addition
-to throttling all network stream traffic as configured with
-stream_throughput_outbound_megabits_per_sec
-When unset, the default is 200 Mbps or 25 MB/s</p>
-<p><em>Default Value:</em> 200</p>
-</div>
-<div class="section" id="read-request-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">read_request_timeout_in_ms</span></code><a class="headerlink" href="#read-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How long the coordinator should wait for read operations to complete</p>
-<p><em>Default Value:</em> 5000</p>
-</div>
-<div class="section" id="range-request-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">range_request_timeout_in_ms</span></code><a class="headerlink" href="#range-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How long the coordinator should wait for seq or index scans to complete</p>
-<p><em>Default Value:</em> 10000</p>
-</div>
-<div class="section" id="write-request-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">write_request_timeout_in_ms</span></code><a class="headerlink" href="#write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How long the coordinator should wait for writes to complete</p>
-<p><em>Default Value:</em> 2000</p>
-</div>
-<div class="section" id="counter-write-request-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">counter_write_request_timeout_in_ms</span></code><a class="headerlink" href="#counter-write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How long the coordinator should wait for counter writes to complete</p>
-<p><em>Default Value:</em> 5000</p>
-</div>
-<div class="section" id="cas-contention-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">cas_contention_timeout_in_ms</span></code><a class="headerlink" href="#cas-contention-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How long a coordinator should continue to retry a CAS operation
-that contends with other proposals for the same row</p>
-<p><em>Default Value:</em> 1000</p>
-</div>
-<div class="section" id="truncate-request-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">truncate_request_timeout_in_ms</span></code><a class="headerlink" href="#truncate-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How long the coordinator should wait for truncates to complete
-(This can be much longer, because unless auto_snapshot is disabled
-we need to flush first so we can snapshot before removing the data.)</p>
-<p><em>Default Value:</em> 60000</p>
-</div>
-<div class="section" id="request-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">request_timeout_in_ms</span></code><a class="headerlink" href="#request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>The default timeout for other, miscellaneous operations</p>
-<p><em>Default Value:</em> 10000</p>
-</div>
-<div class="section" id="slow-query-log-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">slow_query_log_timeout_in_ms</span></code><a class="headerlink" href="#slow-query-log-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>How long before a node logs slow queries. Select queries that take longer than
-this timeout to execute, will generate an aggregated log message, so that slow queries
-can be identified. Set this value to zero to disable slow query logging.</p>
-<p><em>Default Value:</em> 500</p>
-</div>
-<div class="section" id="cross-node-timeout">
-<h2><code class="docutils literal"><span class="pre">cross_node_timeout</span></code><a class="headerlink" href="#cross-node-timeout" title="Permalink to this headline">¶</a></h2>
-<p>Enable operation timeout information exchange between nodes to accurately
-measure request timeouts.  If disabled, replicas will assume that requests
-were forwarded to them instantly by the coordinator, which means that
-under overload conditions we will waste that much extra time processing
-already-timed-out requests.</p>
-<p>Warning: before enabling this property make sure to ntp is installed
-and the times are synchronized between the nodes.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="streaming-socket-timeout-in-ms">
-<h2><code class="docutils literal"><span class="pre">streaming_socket_timeout_in_ms</span></code><a class="headerlink" href="#streaming-socket-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Set socket timeout for streaming operation.
-The stream session is failed if no data/ack is received by any of the participants
-within that period, which means this should also be sufficient to stream a large
-sstable or rebuild table indexes.
-Default value is 86400000ms, which means stale streams timeout after 24 hours.
-A value of zero means stream sockets should never time out.</p>
-<p><em>Default Value:</em> 86400000</p>
-</div>
-<div class="section" id="phi-convict-threshold">
-<h2><code class="docutils literal"><span class="pre">phi_convict_threshold</span></code><a class="headerlink" href="#phi-convict-threshold" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>phi value that must be reached for a host to be marked down.
-most users should never need to adjust this.</p>
-<p><em>Default Value:</em> 8</p>
-</div>
-<div class="section" id="endpoint-snitch">
-<h2><code class="docutils literal"><span class="pre">endpoint_snitch</span></code><a class="headerlink" href="#endpoint-snitch" title="Permalink to this headline">¶</a></h2>
-<p>endpoint_snitch &#8211; Set this to a class that implements
-IEndpointSnitch.  The snitch has two functions:</p>
-<ul class="simple">
-<li>it teaches Cassandra enough about your network topology to route
-requests efficiently</li>
-<li>it allows Cassandra to spread replicas around your cluster to avoid
-correlated failures. It does this by grouping machines into
-&#8220;datacenters&#8221; and &#8220;racks.&#8221;  Cassandra will do its best not to have
-more than one replica on the same &#8220;rack&#8221; (which may not actually
-be a physical location)</li>
-</ul>
-<p>CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
-ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
-This means that if you start with the default SimpleSnitch, which
-locates every node on &#8220;rack1&#8221; in &#8220;datacenter1&#8221;, your only options
-if you need to add another datacenter are GossipingPropertyFileSnitch
-(and the older PFS).  From there, if you want to migrate to an
-incompatible snitch like Ec2Snitch you can do it by adding new nodes
-under Ec2Snitch (which will locate them in a new &#8220;datacenter&#8221;) and
-decommissioning the old ones.</p>
-<p>Out of the box, Cassandra provides:</p>
-<dl class="docutils">
-<dt>SimpleSnitch:</dt>
-<dd>Treats Strategy order as proximity. This can improve cache
-locality when disabling read repair.  Only appropriate for
-single-datacenter deployments.</dd>
-<dt>GossipingPropertyFileSnitch</dt>
-<dd>This should be your go-to snitch for production use.  The rack
-and datacenter for the local node are defined in
-cassandra-rackdc.properties and propagated to other nodes via
-gossip.  If cassandra-topology.properties exists, it is used as a
-fallback, allowing migration from the PropertyFileSnitch.</dd>
-<dt>PropertyFileSnitch:</dt>
-<dd>Proximity is determined by rack and data center, which are
-explicitly configured in cassandra-topology.properties.</dd>
-<dt>Ec2Snitch:</dt>
-<dd>Appropriate for EC2 deployments in a single Region. Loads Region
-and Availability Zone information from the EC2 API. The Region is
-treated as the datacenter, and the Availability Zone as the rack.
-Only private IPs are used, so this will not work across multiple
-Regions.</dd>
-<dt>Ec2MultiRegionSnitch:</dt>
-<dd>Uses public IPs as broadcast_address to allow cross-region
-connectivity.  (Thus, you should set seed addresses to the public
-IP as well.) You will need to open the storage_port or
-ssl_storage_port on the public IP firewall.  (For intra-Region
-traffic, Cassandra will switch to the private IP after
-establishing a connection.)</dd>
-<dt>RackInferringSnitch:</dt>
-<dd>Proximity is determined by rack and data center, which are
-assumed to correspond to the 3rd and 2nd octet of each node&#8217;s IP
-address, respectively.  Unless this happens to match your
-deployment conventions, this is best used as an example of
-writing a custom Snitch class and is provided in that spirit.</dd>
-</dl>
-<p>You can use a custom Snitch by setting this to the full class name
-of the snitch, which will be assumed to be on your classpath.</p>
-<p><em>Default Value:</em> SimpleSnitch</p>
-</div>
-<div class="section" id="dynamic-snitch-update-interval-in-ms">
-<h2><code class="docutils literal"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>controls how often to perform the more expensive part of host score
-calculation</p>
-<p><em>Default Value:</em> 100</p>
-</div>
-<div class="section" id="dynamic-snitch-reset-interval-in-ms">
-<h2><code class="docutils literal"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-reset-interval-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>controls how often to reset all host scores, allowing a bad host to
-possibly recover</p>
-<p><em>Default Value:</em> 600000</p>
-</div>
-<div class="section" id="dynamic-snitch-badness-threshold">
-<h2><code class="docutils literal"><span class="pre">dynamic_snitch_badness_threshold</span></code><a class="headerlink" href="#dynamic-snitch-badness-threshold" title="Permalink to this headline">¶</a></h2>
-<p>if set greater than zero and read_repair_chance is &lt; 1.0, this will allow
-&#8216;pinning&#8217; of replicas to hosts in order to increase cache capacity.
-The badness threshold will control how much worse the pinned host has to be
-before the dynamic snitch will prefer other replicas over it.  This is
-expressed as a double which represents a percentage.  Thus, a value of
-0.2 means Cassandra would continue to prefer the static snitch values
-until the pinned host was 20% worse than the fastest.</p>
-<p><em>Default Value:</em> 0.1</p>
-</div>
-<div class="section" id="request-scheduler">
-<h2><code class="docutils literal"><span class="pre">request_scheduler</span></code><a class="headerlink" href="#request-scheduler" title="Permalink to this headline">¶</a></h2>
-<p>request_scheduler &#8211; Set this to a class that implements
-RequestScheduler, which will schedule incoming client requests
-according to the specific policy. This is useful for multi-tenancy
-with a single Cassandra cluster.
-NOTE: This is specifically for requests from the client and does
-not affect inter node communication.
-org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
-org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
-client requests to a node with a separate queue for each
-request_scheduler_id. The scheduler is further customized by
-request_scheduler_options as described below.</p>
-<p><em>Default Value:</em> org.apache.cassandra.scheduler.NoScheduler</p>
-</div>
-<div class="section" id="request-scheduler-options">
-<h2><code class="docutils literal"><span class="pre">request_scheduler_options</span></code><a class="headerlink" href="#request-scheduler-options" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Scheduler Options vary based on the type of scheduler</p>
-<dl class="docutils">
-<dt>NoScheduler</dt>
-<dd>Has no options</dd>
-<dt>RoundRobin</dt>
-<dd><dl class="first last docutils">
-<dt>throttle_limit</dt>
-<dd>The throttle_limit is the number of in-flight
-requests per client.  Requests beyond
-that limit are queued up until
-running requests can complete.
-The value of 80 here is twice the number of
-concurrent_reads + concurrent_writes.</dd>
-<dt>default_weight</dt>
-<dd>default_weight is optional and allows for
-overriding the default which is 1.</dd>
-<dt>weights</dt>
-<dd>Weights are optional and will default to 1 or the
-overridden default_weight. The weight translates into how
-many requests are handled during each turn of the
-RoundRobin, based on the scheduler id.</dd>
-</dl>
-</dd>
-</dl>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1">#    throttle_limit: 80</span>
-<span class="c1">#    default_weight: 5</span>
-<span class="c1">#    weights:</span>
-<span class="c1">#      Keyspace1: 1</span>
-<span class="c1">#      Keyspace2: 5</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="request-scheduler-id">
-<h2><code class="docutils literal"><span class="pre">request_scheduler_id</span></code><a class="headerlink" href="#request-scheduler-id" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em>
-request_scheduler_id &#8211; An identifier based on which to perform
-the request scheduling. Currently the only valid option is keyspace.</p>
-<p><em>Default Value:</em> keyspace</p>
-</div>
-<div class="section" id="server-encryption-options">
-<h2><code class="docutils literal"><span class="pre">server_encryption_options</span></code><a class="headerlink" href="#server-encryption-options" title="Permalink to this headline">¶</a></h2>
-<p>Enable or disable inter-node encryption
-JVM defaults for supported SSL socket protocols and cipher suites can
-be replaced using custom encryption options. This is not recommended
-unless you have policies in place that dictate certain settings, or
-need to disable vulnerable ciphers or protocols in case the JVM cannot
-be updated.
-FIPS compliant settings can be configured at JVM level and should not
-involve changing encryption settings here:
-<a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html">https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html</a>
-<em>NOTE</em> No custom encryption options are enabled at the moment
-The available internode options are : all, none, dc, rack</p>
-<p>If set to dc cassandra will encrypt the traffic between the DCs
-If set to rack cassandra will encrypt the traffic between the racks</p>
-<p>The passwords used in these options must match the passwords used when generating
-the keystore and truststore.  For instructions on generating these files, see:
-<a class="reference external" href="http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore</a></p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">internode_encryption</span><span class="p">:</span> <span class="n">none</span>
-<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
-<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
-<span class="n">truststore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">truststore</span>
-<span class="n">truststore_password</span><span class="p">:</span> <span class="n">cassandra</span>
-<span class="c1"># More advanced defaults below:</span>
-<span class="c1"># protocol: TLS</span>
-<span class="c1"># algorithm: SunX509</span>
-<span class="c1"># store_type: JKS</span>
-<span class="c1"># cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]</span>
-<span class="c1"># require_client_auth: false</span>
-<span class="c1"># require_endpoint_verification: false</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="client-encryption-options">
-<h2><code class="docutils literal"><span class="pre">client_encryption_options</span></code><a class="headerlink" href="#client-encryption-options" title="Permalink to this headline">¶</a></h2>
-<p>enable or disable client/server encryption.</p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
-<span class="c1"># If enabled and optional is set to true encrypted and unencrypted connections are handled.</span>
-<span class="n">optional</span><span class="p">:</span> <span class="n">false</span>
-<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
-<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
-<span class="c1"># require_client_auth: false</span>
-<span class="c1"># Set trustore and truststore_password if require_client_auth is true</span>
-<span class="c1"># truststore: conf/.truststore</span>
-<span class="c1"># truststore_password: cassandra</span>
-<span class="c1"># More advanced defaults below:</span>
-<span class="c1"># protocol: TLS</span>
-<span class="c1"># algorithm: SunX509</span>
-<span class="c1"># store_type: JKS</span>
-<span class="c1"># cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="internode-compression">
-<h2><code class="docutils literal"><span class="pre">internode_compression</span></code><a class="headerlink" href="#internode-compression" title="Permalink to this headline">¶</a></h2>
-<p>internode_compression controls whether traffic between nodes is
-compressed.
-Can be:</p>
-<dl class="docutils">
-<dt>all</dt>
-<dd>all traffic is compressed</dd>
-<dt>dc</dt>
-<dd>traffic between different datacenters is compressed</dd>
-<dt>none</dt>
-<dd>nothing is compressed.</dd>
-</dl>
-<p><em>Default Value:</em> dc</p>
-</div>
-<div class="section" id="inter-dc-tcp-nodelay">
-<h2><code class="docutils literal"><span class="pre">inter_dc_tcp_nodelay</span></code><a class="headerlink" href="#inter-dc-tcp-nodelay" title="Permalink to this headline">¶</a></h2>
-<p>Enable or disable tcp_nodelay for inter-dc communication.
-Disabling it will result in larger (but fewer) network packets being sent,
-reducing overhead from the TCP protocol itself, at the cost of increasing
-latency if you block for cross-datacenter responses.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="tracetype-query-ttl">
-<h2><code class="docutils literal"><span class="pre">tracetype_query_ttl</span></code><a class="headerlink" href="#tracetype-query-ttl" title="Permalink to this headline">¶</a></h2>
-<p>TTL for different trace types used during logging of the repair process.</p>
-<p><em>Default Value:</em> 86400</p>
-</div>
-<div class="section" id="tracetype-repair-ttl">
-<h2><code class="docutils literal"><span class="pre">tracetype_repair_ttl</span></code><a class="headerlink" href="#tracetype-repair-ttl" title="Permalink to this headline">¶</a></h2>
-<p><em>Default Value:</em> 604800</p>
-</div>
-<div class="section" id="gc-log-threshold-in-ms">
-<h2><code class="docutils literal"><span class="pre">gc_log_threshold_in_ms</span></code><a class="headerlink" href="#gc-log-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>By default, Cassandra logs GC Pauses greater than 200 ms at INFO level
-This threshold can be adjusted to minimize logging if necessary</p>
-<p><em>Default Value:</em> 200</p>
-</div>
-<div class="section" id="enable-user-defined-functions">
-<h2><code class="docutils literal"><span class="pre">enable_user_defined_functions</span></code><a class="headerlink" href="#enable-user-defined-functions" title="Permalink to this headline">¶</a></h2>
-<p>If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
-INFO level
-UDFs (user defined functions) are disabled by default.
-As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="enable-scripted-user-defined-functions">
-<h2><code class="docutils literal"><span class="pre">enable_scripted_user_defined_functions</span></code><a class="headerlink" href="#enable-scripted-user-defined-functions" title="Permalink to this headline">¶</a></h2>
-<p>Enables scripted UDFs (JavaScript UDFs).
-Java UDFs are always enabled, if enable_user_defined_functions is true.
-Enable this option to be able to use UDFs with &#8220;language javascript&#8221; or any custom JSR-223 provider.
-This option has no effect, if enable_user_defined_functions is false.</p>
-<p><em>Default Value:</em> false</p>
-</div>
-<div class="section" id="windows-timer-interval">
-<h2><code class="docutils literal"><span class="pre">windows_timer_interval</span></code><a class="headerlink" href="#windows-timer-interval" title="Permalink to this headline">¶</a></h2>
-<p>The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
-Lowering this value on Windows can provide much tighter latency and better throughput, however
-some virtualized environments may see a negative performance impact from changing this setting
-below their system default. The sysinternals &#8216;clockres&#8217; tool can confirm your system&#8217;s default
-setting.</p>
-<p><em>Default Value:</em> 1</p>
-</div>
-<div class="section" id="transparent-data-encryption-options">
-<h2><code class="docutils literal"><span class="pre">transparent_data_encryption_options</span></code><a class="headerlink" href="#transparent-data-encryption-options" title="Permalink to this headline">¶</a></h2>
-<p>Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
-a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
-the &#8220;key_alias&#8221; is the only key that will be used for encrypt opertaions; previously used keys
-can still (and should!) be in the keystore and will be used on decrypt operations
-(to handle the case of key rotation).</p>
-<p>It is strongly recommended to download and install Java Cryptography Extension (JCE)
-Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
-(current link: <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html">http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html</a>)</p>
-<p>Currently, only the following file types are supported for transparent data encryption, although
-more are coming in future cassandra releases: commitlog, hints</p>
-<p><em>Default Value (complex option)</em>:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
-<span class="n">chunk_length_kb</span><span class="p">:</span> <span class="mi">64</span>
-<span class="n">cipher</span><span class="p">:</span> <span class="n">AES</span><span class="o">/</span><span class="n">CBC</span><span class="o">/</span><span class="n">PKCS5Padding</span>
-<span class="n">key_alias</span><span class="p">:</span> <span class="n">testing</span><span class="p">:</span><span class="mi">1</span>
-<span class="c1"># CBC IV length for AES needs to be 16 bytes (which is also the default size)</span>
-<span class="c1"># iv_length: 16</span>
-<span class="n">key_provider</span><span class="p">:</span>
-  <span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">security</span><span class="o">.</span><span class="n">JKSKeyProvider</span>
-    <span class="n">parameters</span><span class="p">:</span>
-      <span class="o">-</span> <span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
-        <span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
-        <span class="n">store_type</span><span class="p">:</span> <span class="n">JCEKS</span>
-        <span class="n">key_password</span><span class="p">:</span> <span class="n">cassandra</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="tombstone-warn-threshold">
-<h2><code class="docutils literal"><span class="pre">tombstone_warn_threshold</span></code><a class="headerlink" href="#tombstone-warn-threshold" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="safety-thresholds">
-<h3>SAFETY THRESHOLDS #<a class="headerlink" href="#safety-thresholds" title="Permalink to this headline">¶</a></h3>
-<p>When executing a scan, within or across a partition, we need to keep the
-tombstones seen in memory so we can return them to the coordinator, which
-will use them to make sure other replicas also know about the deleted rows.
-With workloads that generate a lot of tombstones, this can cause performance
-problems and even exaust the server heap.
-(<a class="reference external" href="http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets">http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets</a>)
-Adjust the thresholds here if you understand the dangers and want to
-scan more tombstones anyway.  These thresholds may also be adjusted at runtime
-using the StorageService mbean.</p>
-<p><em>Default Value:</em> 1000</p>
-</div>
-</div>
-<div class="section" id="tombstone-failure-threshold">
-<h2><code class="docutils literal"><span class="pre">tombstone_failure_threshold</span></code><a class="headerlink" href="#tombstone-failure-threshold" title="Permalink to this headline">¶</a></h2>
-<p><em>Default Value:</em> 100000</p>
-</div>
-<div class="section" id="batch-size-warn-threshold-in-kb">
-<h2><code class="docutils literal"><span class="pre">batch_size_warn_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-warn-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
-<p>Log WARN on any batch size exceeding this value. 5kb per batch by default.
-Caution should be taken on increasing the size of this threshold as it can lead to node instability.</p>
-<p><em>Default Value:</em> 5</p>
-</div>
-<div class="section" id="batch-size-fail-threshold-in-kb">
-<h2><code class="docutils literal"><span class="pre">batch_size_fail_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-fail-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
-<p>Fail any batch exceeding this value. 50kb (10x warn threshold) by default.</p>
-<p><em>Default Value:</em> 50</p>
-</div>
-<div class="section" id="unlogged-batch-across-partitions-warn-threshold">
-<h2><code class="docutils literal"><span class="pre">unlogged_batch_across_partitions_warn_threshold</span></code><a class="headerlink" href="#unlogged-batch-across-partitions-warn-threshold" title="Permalink to this headline">¶</a></h2>
-<p>Log WARN on any batches not of type LOGGED than span across more partitions than this limit</p>
-<p><em>Default Value:</em> 10</p>
-</div>
-<div class="section" id="compaction-large-partition-warning-threshold-mb">
-<h2><code class="docutils literal"><span class="pre">compaction_large_partition_warning_threshold_mb</span></code><a class="headerlink" href="#compaction-large-partition-warning-threshold-mb" title="Permalink to this headline">¶</a></h2>
-<p>Log a warning when compacting partitions larger than this value</p>
-<p><em>Default Value:</em> 100</p>
-</div>
-<div class="section" id="gc-warn-threshold-in-ms">
-<h2><code class="docutils literal"><span class="pre">gc_warn_threshold_in_ms</span></code><a class="headerlink" href="#gc-warn-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
-<p>GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
-Adjust the threshold based on your application throughput requirement
-By default, Cassandra logs GC Pauses greater than 200 ms at INFO level</p>
-<p><em>Default Value:</em> 1000</p>
-</div>
-<div class="section" id="max-value-size-in-mb">
-<h2><code class="docutils literal"><span class="pre">max_value_size_in_mb</span></code><a class="headerlink" href="#max-value-size-in-mb" title="Permalink to this headline">¶</a></h2>
-<p><em>This option is commented out by default.</em></p>
-<p>Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
-early. Any value size larger than this threshold will result into marking an SSTable
-as corrupted.</p>
-<p><em>Default Value:</em> 256</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../operating/index.html" class="btn btn-default pull-right " role="button" title="Operating Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="index.html" class="btn btn-default" role="button" title="Configuring Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/configuration/index.html b/src/doc/3.10/configuration/index.html
deleted file mode 100644
index 0337625..0000000
--- a/src/doc/3.10/configuration/index.html
+++ /dev/null
@@ -1,111 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Configuring Cassandra"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="Cassandra Configuration File" href="cassandra_config_file.html"/>
-      <link rel="prev" title="Changes" href="../cql/changes.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Configuring Cassandra</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="cassandra_config_file.html">Cassandra Configuration File</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="configuring-cassandra">
-<h1>Configuring Cassandra<a class="headerlink" href="#configuring-cassandra" title="Permalink to this headline">¶</a></h1>
-<p>This section describes how to configure Apache Cassandra.</p>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="cassandra_config_file.html">Cassandra Configuration File</a></li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="cassandra_config_file.html" class="btn btn-default pull-right " role="button" title="Cassandra Configuration File" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../cql/changes.html" class="btn btn-default" role="button" title="Changes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/contactus.html b/src/doc/3.10/contactus.html
deleted file mode 100644
index 9f19ae4..0000000
--- a/src/doc/3.10/contactus.html
+++ /dev/null
@@ -1,129 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Contact us"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="index.html"/>
-      <link rel="prev" title="Reporting Bugs and Contributing" href="bugs.html"/>
-'
-doc-search-path: "search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Contact us</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="#mailing-lists">Mailing lists</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#irc">IRC</a></li>
-</ul>
-</li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="contact-us">
-<h1>Contact us<a class="headerlink" href="#contact-us" title="Permalink to this headline">¶</a></h1>
-<p>You can get in touch with the Cassandra community either via the mailing lists or the freenode IRC channels.</p>
-<div class="section" id="mailing-lists">
-<span id="id1"></span><h2>Mailing lists<a class="headerlink" href="#mailing-lists" title="Permalink to this headline">¶</a></h2>
-<p>The following mailing lists are available:</p>
-<ul class="simple">
-<li><a class="reference external" href="http://www.mail-archive.com/user&#64;cassandra.apache.org/">Users</a> – General discussion list for users - <a class="reference external" href="mailto:user-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
-<li><a class="reference external" href="http://www.mail-archive.com/dev&#64;cassandra.apache.org/">Developers</a> – Development related discussion - <a class="reference external" href="mailto:dev-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
-<li><a class="reference external" href="http://www.mail-archive.com/commits&#64;cassandra.apache.org/">Commits</a> – Commit notification source repository -
-<a class="reference external" href="mailto:commits-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
-<li><a class="reference external" href="http://www.mail-archive.com/client-dev&#64;cassandra.apache.org/">Client Libraries</a> – Discussion related to the
-development of idiomatic client APIs - <a class="reference external" href="mailto:client-dev-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
-</ul>
-<p>Subscribe by sending an email to the email address in the Subscribe links above. Follow the instructions in the welcome
-email to confirm your subscription. Make sure to keep the welcome email as it contains instructions on how to
-unsubscribe.</p>
-</div>
-<div class="section" id="irc">
-<span id="irc-channels"></span><h2>IRC<a class="headerlink" href="#irc" title="Permalink to this headline">¶</a></h2>
-<p>To chat with developers or users in real-time, join our channels on <a class="reference external" href="http://webchat.freenode.net/">IRC freenode</a>. The
-following channels are available:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">#cassandra</span></code> - for user questions and general discussions.</li>
-<li><code class="docutils literal"><span class="pre">#cassandra-dev</span></code> - strictly for questions or discussions related to Cassandra development.</li>
-<li><code class="docutils literal"><span class="pre">#cassandra-builds</span></code> - results of automated test builds.</li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            
-            <a href="bugs.html" class="btn btn-default" role="button" title="Reporting Bugs and Contributing" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/appendices.html b/src/doc/3.10/cql/appendices.html
deleted file mode 100644
index 64fda14..0000000
--- a/src/doc/3.10/cql/appendices.html
+++ /dev/null
@@ -1,546 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Appendices"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Changes" href="changes.html"/>
-      <link rel="prev" title="Triggers" href="triggers.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Appendices</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#appendix-a-cql-keywords">Appendix A: CQL Keywords</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#appendix-b-cql-reserved-types">Appendix B: CQL Reserved Types</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="appendices">
-<h1>Appendices<a class="headerlink" href="#appendices" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="appendix-a-cql-keywords">
-<span id="appendix-a"></span><h2>Appendix A: CQL Keywords<a class="headerlink" href="#appendix-a-cql-keywords" title="Permalink to this headline">¶</a></h2>
-<p>CQL distinguishes between <em>reserved</em> and <em>non-reserved</em> keywords.
-Reserved keywords cannot be used as identifier, they are truly reserved
-for the language (but one can enclose a reserved keyword by
-double-quotes to use it as an identifier). Non-reserved keywords however
-only have a specific meaning in certain context but can used as
-identifier otherwise. The only <em>raison d’être</em> of these non-reserved
-keywords is convenience: some keyword are non-reserved when it was
-always easy for the parser to decide whether they were used as keywords
-or not.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="61%" />
-<col width="39%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Keyword</th>
-<th class="head">Reserved?</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ADD</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AGGREGATE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ALL</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ALLOW</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AND</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">APPLY</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ASC</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ASCII</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">BATCH</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">BEGIN</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">BIGINT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">BLOB</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">BOOLEAN</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">BY</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CALLED</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">CLUSTERING</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">COLUMNFAMILY</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">COMPACT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CONTAINS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">COUNT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">COUNTER</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">CREATE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CUSTOM</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DATE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DECIMAL</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DELETE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DESC</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DESCRIBE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DISTINCT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DOUBLE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ENTRIES</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">EXECUTE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">EXISTS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">FILTERING</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">FINALFUNC</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">FLOAT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">FROM</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">FROZEN</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">FULL</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">FUNCTION</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">FUNCTIONS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">GRANT</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">IF</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">IN</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">INDEX</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">INET</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">INFINITY</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">INITCOND</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">INPUT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">INSERT</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">INT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">INTO</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">JSON</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">KEY</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">KEYS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">KEYSPACE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">KEYSPACES</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">LANGUAGE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">LIMIT</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">LIST</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">LOGIN</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">MAP</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">MODIFY</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">NAN</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">NOLOGIN</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">NORECURSIVE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">NOSUPERUSER</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">NOT</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">NULL</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">OF</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ON</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">OPTIONS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">OR</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ORDER</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">PASSWORD</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PERMISSION</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">PERMISSIONS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PRIMARY</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">RENAME</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">REPLACE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">RETURNS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">REVOKE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ROLE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ROLES</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">SCHEMA</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">SELECT</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">SET</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">SFUNC</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">SMALLINT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">STATIC</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">STORAGE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">STYPE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">SUPERUSER</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TABLE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">TEXT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TIME</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">TIMESTAMP</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TIMEUUID</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">TINYINT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TO</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">TOKEN</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TRIGGER</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">TRUNCATE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TTL</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">TUPLE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TYPE</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">UNLOGGED</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">UPDATE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">USE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">USER</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">USERS</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">USING</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">UUID</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">VALUES</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">VARCHAR</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">VARINT</span></code></td>
-<td>no</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">WHERE</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">WITH</span></code></td>
-<td>yes</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">WRITETIME</span></code></td>
-<td>no</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="appendix-b-cql-reserved-types">
-<h2>Appendix B: CQL Reserved Types<a class="headerlink" href="#appendix-b-cql-reserved-types" title="Permalink to this headline">¶</a></h2>
-<p>The following type names are not currently used by CQL, but are reserved
-for potential future use. User-defined types may not use reserved type
-names as their name.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="100%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">type</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">bitstring</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">byte</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">complex</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">enum</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">interval</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">macaddr</span></code></td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="changes.html" class="btn btn-default pull-right " role="button" title="Changes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="triggers.html" class="btn btn-default" role="button" title="Triggers" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/changes.html b/src/doc/3.10/cql/changes.html
deleted file mode 100644
index 776a8b3..0000000
--- a/src/doc/3.10/cql/changes.html
+++ /dev/null
@@ -1,346 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Changes"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Configuring Cassandra" href="../configuration/index.html"/>
-      <link rel="prev" title="Appendices" href="appendices.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Changes</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#id1">3.4.3</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id2">3.4.2</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id3">3.4.1</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id4">3.4.0</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id5">3.3.1</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id6">3.3.0</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id7">3.2.0</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id8">3.1.7</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id9">3.1.6</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id10">3.1.5</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id11">3.1.4</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id12">3.1.3</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id13">3.1.2</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id14">3.1.1</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id15">3.1.0</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id16">3.0.5</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id17">3.0.4</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id18">3.0.3</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id19">3.0.2</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#id20">3.0.1</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#versioning">Versioning</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="changes">
-<h1>Changes<a class="headerlink" href="#changes" title="Permalink to this headline">¶</a></h1>
-<p>The following describes the changes in each version of CQL.</p>
-<div class="section" id="id1">
-<h2>3.4.3<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Support for <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10707">CASSANDRA-10707</a>).</li>
-<li>Adds a <code class="docutils literal"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> option for <code class="docutils literal"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> to ignore omitted columns (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11424">CASSANDRA-11424</a>).</li>
-<li>Allows <code class="docutils literal"><span class="pre">null</span></code> as a legal value for TTL on insert and update. It will be treated as equivalent to</li>
-</ul>
-<p>inserting a 0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12216">CASSANDRA-12216</a>).</p>
-</div>
-<div class="section" id="id2">
-<h2>3.4.2<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>If a table has a non zero <code class="docutils literal"><span class="pre">default_time_to_live</span></code>, then explicitly specifying a TTL of 0 in an <code class="docutils literal"><span class="pre">INSERT</span></code> or
-<code class="docutils literal"><span class="pre">UPDATE</span></code> statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels
-the <code class="docutils literal"><span class="pre">default_time_to_live</span></code>). This wasn&#8217;t the case before and the <code class="docutils literal"><span class="pre">default_time_to_live</span></code> was applied even though a
-TTL had been explicitly set.</li>
-<li><code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal"><span class="pre">ADD</span></code> and <code class="docutils literal"><span class="pre">DROP</span></code> now allow multiple columns to be added/removed.</li>
-<li>New <code class="docutils literal"><span class="pre">PER</span> <span class="pre">PARTITION</span> <span class="pre">LIMIT</span></code> option for <code class="docutils literal"><span class="pre">SELECT</span></code> statements (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7017)">CASSANDRA-7017</a>.</li>
-<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions</span></a> can now instantiate <code class="docutils literal"><span class="pre">UDTValue</span></code> and <code class="docutils literal"><span class="pre">TupleValue</span></code> instances via the
-new <code class="docutils literal"><span class="pre">UDFContext</span></code> interface (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10818)">CASSANDRA-10818</a>.</li>
-<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> may now be stored in a non-frozen form, allowing individual fields to be updated and
-deleted in <code class="docutils literal"><span class="pre">UPDATE</span></code> statements and <code class="docutils literal"><span class="pre">DELETE</span></code> statements, respectively. (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7423)">CASSANDRA-7423</a>).</li>
-</ul>
-</div>
-<div class="section" id="id3">
-<h2>3.4.1<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Adds <code class="docutils literal"><span class="pre">CAST</span></code> functions.</li>
-</ul>
-</div>
-<div class="section" id="id4">
-<h2>3.4.0<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Support for <a class="reference internal" href="mvs.html#materialized-views"><span class="std std-ref">materialized views</span></a>.</li>
-<li><code class="docutils literal"><span class="pre">DELETE</span></code> support for inequality expressions and <code class="docutils literal"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
-<li><code class="docutils literal"><span class="pre">UPDATE</span></code> support for <code class="docutils literal"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
-</ul>
-</div>
-<div class="section" id="id5">
-<h2>3.3.1<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>The syntax <code class="docutils literal"><span class="pre">TRUNCATE</span> <span class="pre">TABLE</span> <span class="pre">X</span></code> is now accepted as an alias for <code class="docutils literal"><span class="pre">TRUNCATE</span> <span class="pre">X</span></code>.</li>
-</ul>
-</div>
-<div class="section" id="id6">
-<h2>3.3.0<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions and aggregates</span></a> are now supported.</li>
-<li>Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.</li>
-<li>Introduces Roles to supersede user based authentication and access control</li>
-<li>New <code class="docutils literal"><span class="pre">date</span></code>, <code class="docutils literal"><span class="pre">time</span></code>, <code class="docutils literal"><span class="pre">tinyint</span></code> and <code class="docutils literal"><span class="pre">smallint</span></code> <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> have been added.</li>
-<li><a class="reference internal" href="json.html#cql-json"><span class="std std-ref">JSON support</span></a> has been added</li>
-<li>Adds new time conversion functions and deprecate <code class="docutils literal"><span class="pre">dateOf</span></code> and <code class="docutils literal"><span class="pre">unixTimestampOf</span></code>.</li>
-</ul>
-</div>
-<div class="section" id="id7">
-<h2>3.2.0<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> supported.</li>
-<li><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now supports indexing collection columns, including indexing the keys of map collections through the
-<code class="docutils literal"><span class="pre">keys()</span></code> function</li>
-<li>Indexes on collections may be queried using the new <code class="docutils literal"><span class="pre">CONTAINS</span></code> and <code class="docutils literal"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operators</li>
-<li><a class="reference internal" href="types.html#tuples"><span class="std std-ref">Tuple types</span></a> were added to hold fixed-length sets of typed positional fields.</li>
-<li><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> now supports optionally specifying a keyspace.</li>
-</ul>
-</div>
-<div class="section" id="id8">
-<h2>3.1.7<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">SELECT</span></code> statements now support selecting multiple rows in a single partition using an <code class="docutils literal"><span class="pre">IN</span></code> clause on combinations
-of clustering columns.</li>
-<li><code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> and <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax is now supported by <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">USER</span></code> and <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">USER</span></code> statements,
-respectively.</li>
-</ul>
-</div>
-<div class="section" id="id9">
-<h2>3.1.6<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>A new <code class="docutils literal"><span class="pre">uuid()</span></code> method has been added.</li>
-<li>Support for <code class="docutils literal"><span class="pre">DELETE</span> <span class="pre">...</span> <span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax.</li>
-</ul>
-</div>
-<div class="section" id="id10">
-<h2>3.1.5<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>It is now possible to group clustering columns in a relation, see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE</span></a> clauses.</li>
-<li>Added support for <a class="reference internal" href="ddl.html#static-columns"><span class="std std-ref">static columns</span></a>.</li>
-</ul>
-</div>
-<div class="section" id="id11">
-<h2>3.1.4<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now allows specifying options when creating CUSTOM indexes.</li>
-</ul>
-</div>
-<div class="section" id="id12">
-<h2>3.1.3<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Millisecond precision formats have been added to the <a class="reference internal" href="types.html#timestamps"><span class="std std-ref">timestamp</span></a> parser.</li>
-</ul>
-</div>
-<div class="section" id="id13">
-<h2>3.1.2<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">NaN</span></code> and <code class="docutils literal"><span class="pre">Infinity</span></code> has been added as valid float constants. They are now reserved keywords. In the unlikely case
-you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.</li>
-</ul>
-</div>
-<div class="section" id="id14">
-<h2>3.1.1<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">SELECT</span></code> statement now allows listing the partition keys (using the <code class="docutils literal"><span class="pre">DISTINCT</span></code> modifier). See <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4536">CASSANDRA-4536</a>.</li>
-<li>The syntax <code class="docutils literal"><span class="pre">c</span> <span class="pre">IN</span> <span class="pre">?</span></code> is now supported in <code class="docutils literal"><span class="pre">WHERE</span></code> clauses. In that case, the value expected for the bind variable
-will be a list of whatever type <code class="docutils literal"><span class="pre">c</span></code> is.</li>
-<li>It is now possible to use named bind variables (using <code class="docutils literal"><span class="pre">:name</span></code> instead of <code class="docutils literal"><span class="pre">?</span></code>).</li>
-</ul>
-</div>
-<div class="section" id="id15">
-<h2>3.1.0<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal"><span class="pre">DROP</span></code> option added.</li>
-<li><code class="docutils literal"><span class="pre">SELECT</span></code> statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.</li>
-<li><code class="docutils literal"><span class="pre">CREATE</span></code> statements for <code class="docutils literal"><span class="pre">KEYSPACE</span></code>, <code class="docutils literal"><span class="pre">TABLE</span></code> and <code class="docutils literal"><span class="pre">INDEX</span></code> now supports an <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition.
-Similarly, <code class="docutils literal"><span class="pre">DROP</span></code> statements support a <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> condition.</li>
-<li><code class="docutils literal"><span class="pre">INSERT</span></code> statements optionally supports a <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition and <code class="docutils literal"><span class="pre">UPDATE</span></code> supports <code class="docutils literal"><span class="pre">IF</span></code> conditions.</li>
-</ul>
-</div>
-<div class="section" id="id16">
-<h2>3.0.5<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">SELECT</span></code>, <code class="docutils literal"><span class="pre">UPDATE</span></code>, and <code class="docutils literal"><span class="pre">DELETE</span></code> statements now allow empty <code class="docutils literal"><span class="pre">IN</span></code> relations (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5626)">CASSANDRA-5626</a>.</li>
-</ul>
-</div>
-<div class="section" id="id17">
-<h2>3.0.4<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Updated the syntax for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></a>.</li>
-<li>Non-equal condition on the partition key are now never supported, even for ordering partitioner as this was not
-correct (the order was <strong>not</strong> the one of the type of the partition key). Instead, the <code class="docutils literal"><span class="pre">token</span></code> method should always
-be used for range queries on the partition key (see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE clauses</span></a>).</li>
-</ul>
-</div>
-<div class="section" id="id18">
-<h2>3.0.3<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Support for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></a> has been added.</li>
-</ul>
-</div>
-<div class="section" id="id19">
-<h2>3.0.2<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Type validation for the <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">constants</span></a> has been fixed. For instance, the implementation used to allow
-<code class="docutils literal"><span class="pre">'2'</span></code> as a valid value for an <code class="docutils literal"><span class="pre">int</span></code> column (interpreting it has the equivalent of <code class="docutils literal"><span class="pre">2</span></code>), or <code class="docutils literal"><span class="pre">42</span></code> as a valid
-<code class="docutils literal"><span class="pre">blob</span></code> value (in which case <code class="docutils literal"><span class="pre">42</span></code> was interpreted as an hexadecimal representation of the blob). This is no longer
-the case, type validation of constants is now more strict. See the <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> section for details
-on which constant is allowed for which type.</li>
-<li>The type validation fixed of the previous point has lead to the introduction of blobs constants to allow the input of
-blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother
-transition to blob constant), it is now deprecated and will be removed by a future version. If you were using strings
-as blobs, you should thus update your client code ASAP to switch blob constants.</li>
-<li>A number of functions to convert native types to blobs have also been introduced. Furthermore the token function is
-now also allowed in select clauses. See the <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">section on functions</span></a> for details.</li>
-</ul>
-</div>
-<div class="section" id="id20">
-<h2>3.0.1<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Date strings (and timestamps) are no longer accepted as valid <code class="docutils literal"><span class="pre">timeuuid</span></code> values. Doing so was a bug in the sense
-that date string are not valid <code class="docutils literal"><span class="pre">timeuuid</span></code>, and it was thus resulting in <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4936">confusing behaviors</a>. However, the following new methods have been added to help
-working with <code class="docutils literal"><span class="pre">timeuuid</span></code>: <code class="docutils literal"><span class="pre">now</span></code>, <code class="docutils literal"><span class="pre">minTimeuuid</span></code>, <code class="docutils literal"><span class="pre">maxTimeuuid</span></code> ,
-<code class="docutils literal"><span class="pre">dateOf</span></code> and <code class="docutils literal"><span class="pre">unixTimestampOf</span></code>.</li>
-<li>Float constants now support the exponent notation. In other words, <code class="docutils literal"><span class="pre">4.2E10</span></code> is now a valid floating point value.</li>
-</ul>
-</div>
-<div class="section" id="versioning">
-<h2>Versioning<a class="headerlink" href="#versioning" title="Permalink to this headline">¶</a></h2>
-<p>Versioning of the CQL language adheres to the <a class="reference external" href="http://semver.org">Semantic Versioning</a> guidelines. Versions take the
-form X.Y.Z where X, Y, and Z are integer values representing major, minor, and patch level respectively. There is no
-correlation between Cassandra release versions and the CQL language version.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="8%" />
-<col width="92%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">version</th>
-<th class="head">description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Major</td>
-<td>The major version <em>must</em> be bumped when backward incompatible changes are introduced. This should rarely
-occur.</td>
-</tr>
-<tr class="row-odd"><td>Minor</td>
-<td>Minor version increments occur when new, but backward compatible, functionality is introduced.</td>
-</tr>
-<tr class="row-even"><td>Patch</td>
-<td>The patch version is incremented when bugs are fixed.</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../configuration/index.html" class="btn btn-default pull-right " role="button" title="Configuring Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="appendices.html" class="btn btn-default" role="button" title="Appendices" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/ddl.html b/src/doc/3.10/cql/ddl.html
deleted file mode 100644
index ab10025..0000000
--- a/src/doc/3.10/cql/ddl.html
+++ /dev/null
@@ -1,826 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Data Definition"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Data Manipulation" href="dml.html"/>
-      <link rel="prev" title="Data Types" href="types.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Definition</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#common-definitions">Common definitions</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#create-keyspace">CREATE KEYSPACE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#use">USE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#alter-keyspace">ALTER KEYSPACE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#drop-keyspace">DROP KEYSPACE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#create-table">CREATE TABLE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#alter-table">ALTER TABLE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#drop-table">DROP TABLE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#truncate">TRUNCATE</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="data-definition">
-<span id="id1"></span><h1>Data Definition<a class="headerlink" href="#data-definition" title="Permalink to this headline">¶</a></h1>
-<p>CQL stores data in <em>tables</em>, whose schema defines the layout of said data in the table, and those tables are grouped in
-<em>keyspaces</em>. A keyspace defines a number of options that applies to all the tables it contains, most prominently of
-which is the <a class="reference internal" href="../architecture/dynamo.html#replication-strategy"><span class="std std-ref">replication strategy</span></a> used by the keyspace. It is generally encouraged to use
-one keyspace by <em>application</em>, and thus many cluster may define only one keyspace.</p>
-<p>This section describes the statements used to create, modify, and remove those keyspace and tables.</p>
-<div class="section" id="common-definitions">
-<h2>Common definitions<a class="headerlink" href="#common-definitions" title="Permalink to this headline">¶</a></h2>
-<p>The names of the keyspaces and tables are defined by the following grammar:</p>
-<pre>
-<strong id="grammar-token-keyspace_name">keyspace_name</strong> ::=  <a class="reference internal" href="#grammar-token-name"><code class="xref docutils literal"><span class="pre">name</span></code></a>
-<strong id="grammar-token-table_name">table_name   </strong> ::=  [ <a class="reference internal" href="#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="#grammar-token-name"><code class="xref docutils literal"><span class="pre">name</span></code></a>
-<strong id="grammar-token-name">name         </strong> ::=  <a class="reference internal" href="#grammar-token-unquoted_name"><code class="xref docutils literal"><span class="pre">unquoted_name</span></code></a> | <a class="reference internal" href="#grammar-token-quoted_name"><code class="xref docutils literal"><span class="pre">quoted_name</span></code></a>
-<strong id="grammar-token-unquoted_name">unquoted_name</strong> ::=  re('[a-zA-Z_0-9]{1, 48}')
-<strong id="grammar-token-quoted_name">quoted_name  </strong> ::=  '&quot;' <a class="reference internal" href="#grammar-token-unquoted_name"><code class="xref docutils literal"><span class="pre">unquoted_name</span></code></a> '&quot;'
-</pre>
-<p>Both keyspace and table name should be comprised of only alphanumeric characters, cannot be empty and are limited in
-size to 48 characters (that limit exists mostly to avoid filenames (which may include the keyspace and table name) to go
-over the limits of certain file systems). By default, keyspace and table names are case insensitive (<code class="docutils literal"><span class="pre">myTable</span></code> is
-equivalent to <code class="docutils literal"><span class="pre">mytable</span></code>) but case sensitivity can be forced by using double-quotes (<code class="docutils literal"><span class="pre">&quot;myTable&quot;</span></code> is different from
-<code class="docutils literal"><span class="pre">mytable</span></code>).</p>
-<p>Further, a table is always part of a keyspace and a table name can be provided fully-qualified by the keyspace it is
-part of. If is is not fully-qualified, the table is assumed to be in the <em>current</em> keyspace (see <a class="reference internal" href="#use-statement"><span class="std std-ref">USE statement</span></a>).</p>
-<p>Further, the valid names for columns is simply defined as:</p>
-<pre>
-<strong id="grammar-token-column_name">column_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a>
-</pre>
-<p>We also define the notion of statement options for use in the following section:</p>
-<pre>
-<strong id="grammar-token-options">options</strong> ::=  <a class="reference internal" href="#grammar-token-option"><code class="xref docutils literal"><span class="pre">option</span></code></a> ( AND <a class="reference internal" href="#grammar-token-option"><code class="xref docutils literal"><span class="pre">option</span></code></a> )*
-<strong id="grammar-token-option">option </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> '=' ( <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref docutils literal"><span class="pre">constant</span></code></a> | <a class="reference internal" href="types.html#grammar-token-map_literal"><code class="xref docutils literal"><span class="pre">map_literal</span></code></a> )
-</pre>
-</div>
-<div class="section" id="create-keyspace">
-<span id="create-keyspace-statement"></span><h2>CREATE KEYSPACE<a class="headerlink" href="#create-keyspace" title="Permalink to this headline">¶</a></h2>
-<p>A keyspace is created using a <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_keyspace_statement">create_keyspace_statement</strong> ::=  CREATE KEYSPACE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal"><span class="pre">options</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span>
-           <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">};</span>
-
-<span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">Excalibur</span>
-           <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;DC1&#39;</span> <span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="s1">&#39;DC2&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">}</span>
-            <span class="k">AND</span> <span class="n">durable_writes</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The supported <code class="docutils literal"><span class="pre">options</span></code> are:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="16%" />
-<col width="9%" />
-<col width="9%" />
-<col width="8%" />
-<col width="58%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">name</th>
-<th class="head">kind</th>
-<th class="head">mandatory</th>
-<th class="head">default</th>
-<th class="head">description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">replication</span></code></td>
-<td><em>map</em></td>
-<td>yes</td>
-<td>&nbsp;</td>
-<td>The replication strategy and options to use for the keyspace (see
-details below).</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">durable_writes</span></code></td>
-<td><em>simple</em></td>
-<td>no</td>
-<td>true</td>
-<td>Whether to use the commit log for updates on this keyspace
-(disable this option at your own risk!).</td>
-</tr>
-</tbody>
-</table>
-<p>The <code class="docutils literal"><span class="pre">replication</span></code> property is mandatory and must at least contains the <code class="docutils literal"><span class="pre">'class'</span></code> sub-option which defines the
-<a class="reference internal" href="../architecture/dynamo.html#replication-strategy"><span class="std std-ref">replication strategy</span></a> class to use. The rest of the sub-options depends on what replication
-strategy is used. By default, Cassandra support the following <code class="docutils literal"><span class="pre">'class'</span></code>:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">'SimpleStrategy'</span></code>: A simple strategy that defines a replication factor for the whole cluster. The only sub-options
-supported is <code class="docutils literal"><span class="pre">'replication_factor'</span></code> to define that replication factor and is mandatory.</li>
-<li><code class="docutils literal"><span class="pre">'NetworkTopologyStrategy'</span></code>: A replication strategy that allows to set the replication factor independently for
-each data-center. The rest of the sub-options are key-value pairs where a key is a data-center name and its value is
-the associated replication factor.</li>
-</ul>
-<p>Attempting to create a keyspace that already exists will return an error unless the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If
-it is used, the statement will be a no-op if the keyspace already exists.</p>
-</div>
-<div class="section" id="use">
-<span id="use-statement"></span><h2>USE<a class="headerlink" href="#use" title="Permalink to this headline">¶</a></h2>
-<p>The <code class="docutils literal"><span class="pre">USE</span></code> statement allows to change the <em>current</em> keyspace (for the <em>connection</em> on which it is executed). A number
-of objects in CQL are bound to a keyspace (tables, user-defined types, functions, ...) and the current keyspace is the
-default keyspace used when those objects are referred without a fully-qualified name (that is, without being prefixed a
-keyspace name). A <code class="docutils literal"><span class="pre">USE</span></code> statement simply takes the keyspace to use as current as argument:</p>
-<pre>
-<strong id="grammar-token-use_statement">use_statement</strong> ::=  USE <a class="reference internal" href="#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a>
-</pre>
-</div>
-<div class="section" id="alter-keyspace">
-<span id="alter-keyspace-statement"></span><h2>ALTER KEYSPACE<a class="headerlink" href="#alter-keyspace" title="Permalink to this headline">¶</a></h2>
-<p>An <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> statement allows to modify the options of a keyspace:</p>
-<pre>
-<strong id="grammar-token-alter_keyspace_statement">alter_keyspace_statement</strong> ::=  ALTER KEYSPACE <a class="reference internal" href="#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal"><span class="pre">options</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span>
-          <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">4</span><span class="p">};</span>
-</pre></div>
-</div>
-<p>The supported options are the same than for <a class="reference internal" href="#create-keyspace-statement"><span class="std std-ref">creating a keyspace</span></a>.</p>
-</div>
-<div class="section" id="drop-keyspace">
-<span id="drop-keyspace-statement"></span><h2>DROP KEYSPACE<a class="headerlink" href="#drop-keyspace" title="Permalink to this headline">¶</a></h2>
-<p>Dropping a keyspace can be done using the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">KEYSPACE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_keyspace_statement">drop_keyspace_statement</strong> ::=  DROP KEYSPACE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Dropping a keyspace results in the immediate, irreversible removal of that keyspace, including all the tables, UTD and
-functions in it, and all the data contained in those tables.</p>
-<p>If the keyspace does not exists, the statement will return an error, unless <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
-operation is a no-op.</p>
-</div>
-<div class="section" id="create-table">
-<span id="create-table-statement"></span><h2>CREATE TABLE<a class="headerlink" href="#create-table" title="Permalink to this headline">¶</a></h2>
-<p>Creating a new table uses the <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_table_statement">create_table_statement</strong> ::=  CREATE TABLE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-                            '('
-                                <a class="reference internal" href="#grammar-token-column_definition"><code class="xref docutils literal"><span class="pre">column_definition</span></code></a>
-                                ( ',' <a class="reference internal" href="#grammar-token-column_definition"><code class="xref docutils literal"><span class="pre">column_definition</span></code></a> )*
-                                [ ',' PRIMARY KEY '(' <a class="reference internal" href="#grammar-token-primary_key"><code class="xref docutils literal"><span class="pre">primary_key</span></code></a> ')' ]
-                            ')' [ WITH <a class="reference internal" href="#grammar-token-table_options"><code class="xref docutils literal"><span class="pre">table_options</span></code></a> ]
-<strong id="grammar-token-column_definition">column_definition     </strong> ::=  <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> [ STATIC ] [ PRIMARY KEY]
-<strong id="grammar-token-primary_key">primary_key           </strong> ::=  <a class="reference internal" href="#grammar-token-partition_key"><code class="xref docutils literal"><span class="pre">partition_key</span></code></a> [ ',' <a class="reference internal" href="#grammar-token-clustering_columns"><code class="xref docutils literal"><span class="pre">clustering_columns</span></code></a> ]
-<strong id="grammar-token-partition_key">partition_key         </strong> ::=  <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a>
-                            | '(' <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )* ')'
-<strong id="grammar-token-clustering_columns">clustering_columns    </strong> ::=  <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )*
-<strong id="grammar-token-table_options">table_options         </strong> ::=  COMPACT STORAGE [ AND <a class="reference internal" href="#grammar-token-table_options"><code class="xref docutils literal"><span class="pre">table_options</span></code></a> ]
-                            | CLUSTERING ORDER BY '(' <a class="reference internal" href="#grammar-token-clustering_order"><code class="xref docutils literal"><span class="pre">clustering_order</span></code></a> ')' [ AND <a class="reference internal" href="#grammar-token-table_options"><code class="xref docutils literal"><span class="pre">table_options</span></code></a> ]
-                            | <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal"><span class="pre">options</span></code></a>
-<strong id="grammar-token-clustering_order">clustering_order      </strong> ::=  <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> (ASC | DESC) ( ',' <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> (ASC | DESC) )*
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">monkeySpecies</span> <span class="p">(</span>
-    <span class="n">species</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">common_name</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">population</span> <span class="nb">varint</span><span class="p">,</span>
-    <span class="n">average_size</span> <span class="nb">int</span>
-<span class="p">)</span> <span class="k">WITH</span> <span class="n">comment</span><span class="o">=</span><span class="s1">&#39;Important biological records&#39;</span>
-   <span class="k">AND</span> <span class="n">read_repair_chance</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">timeline</span> <span class="p">(</span>
-    <span class="n">userid</span> <span class="nb">uuid</span><span class="p">,</span>
-    <span class="n">posted_month</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">posted_time</span> <span class="nb">uuid</span><span class="p">,</span>
-    <span class="n">body</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">posted_by</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="n">posted_month</span><span class="p">,</span> <span class="n">posted_time</span><span class="p">)</span>
-<span class="p">)</span> <span class="k">WITH</span> <span class="n">compaction</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;class&#39;</span> <span class="p">:</span> <span class="s1">&#39;LeveledCompactionStrategy&#39;</span> <span class="p">};</span>
-
-<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">loads</span> <span class="p">(</span>
-    <span class="n">machine</span> <span class="nb">inet</span><span class="p">,</span>
-    <span class="n">cpu</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">mtime</span> <span class="nb">timeuuid</span><span class="p">,</span>
-    <span class="n">load</span> <span class="nb">float</span><span class="p">,</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">machine</span><span class="p">,</span> <span class="n">cpu</span><span class="p">),</span> <span class="n">mtime</span><span class="p">)</span>
-<span class="p">)</span> <span class="k">WITH</span> <span class="k">CLUSTERING</span> <span class="k">ORDER</span> <span class="k">BY</span> <span class="p">(</span><span class="n">mtime</span> <span class="k">DESC</span><span class="p">);</span>
-</pre></div>
-</div>
-<p>A CQL table has a name and is composed of a set of <em>rows</em>. Creating a table amounts to defining which <a class="reference internal" href="#column-definition"><span class="std std-ref">columns</span></a> the rows will be composed, which of those columns compose the <a class="reference internal" href="#primary-key"><span class="std std-ref">primary key</span></a>, as
-well as optional <a class="reference internal" href="#create-table-options"><span class="std std-ref">options</span></a> for the table.</p>
-<p>Attempting to create an already existing table will return an error unless the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> directive is used. If
-it is used, the statement will be a no-op if the table already exists.</p>
-<div class="section" id="column-definitions">
-<span id="column-definition"></span><h3>Column definitions<a class="headerlink" href="#column-definitions" title="Permalink to this headline">¶</a></h3>
-<p>Every rows in a CQL table has a set of predefined columns defined at the time of the table creation (or added later
-using an <a class="reference internal" href="#alter-table-statement"><span class="std std-ref">alter statement</span></a>).</p>
-<p>A <a class="reference internal" href="#grammar-token-column_definition"><code class="xref std std-token docutils literal"><span class="pre">column_definition</span></code></a> is primarily comprised of the name of the column defined and it&#8217;s <a class="reference internal" href="types.html#data-types"><span class="std std-ref">type</span></a>,
-which restrict which values are accepted for that column. Additionally, a column definition can have the following
-modifiers:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">STATIC</span></code></dt>
-<dd>it declares the column as being a <a class="reference internal" href="#static-columns"><span class="std std-ref">static column</span></a>.</dd>
-<dt><code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code></dt>
-<dd>it declares the column as being the sole component of the <a class="reference internal" href="#primary-key"><span class="std std-ref">primary key</span></a> of the table.</dd>
-</dl>
-<div class="section" id="static-columns">
-<span id="id2"></span><h4>Static columns<a class="headerlink" href="#static-columns" title="Permalink to this headline">¶</a></h4>
-<p>Some columns can be declared as <code class="docutils literal"><span class="pre">STATIC</span></code> in a table definition. A column that is static will be “shared” by all the
-rows belonging to the same partition (having the same <a class="reference internal" href="#partition-key"><span class="std std-ref">partition key</span></a>). For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
-    <span class="n">pk</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">t</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">v</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">s</span> <span class="nb">text</span> <span class="k">static</span><span class="p">,</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
-<span class="p">);</span>
-
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">0</span><span class="p">,</span> <span class="s1">&#39;val0&#39;</span><span class="p">,</span> <span class="s1">&#39;static0&#39;</span><span class="p">);</span>
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">1</span><span class="p">,</span> <span class="s1">&#39;val1&#39;</span><span class="p">,</span> <span class="s1">&#39;static1&#39;</span><span class="p">);</span>
-
-<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
-   <span class="n">pk</span> <span class="o">|</span> <span class="n">t</span> <span class="o">|</span> <span class="n">v</span>      <span class="o">|</span> <span class="n">s</span>
-  <span class="c1">----+---+--------+-----------</span>
-   <span class="mf">0</span>  <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="s1">&#39;val0&#39;</span> <span class="o">|</span> <span class="s1">&#39;static1&#39;</span>
-   <span class="mf">0</span>  <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="s1">&#39;val1&#39;</span> <span class="o">|</span> <span class="s1">&#39;static1&#39;</span>
-</pre></div>
-</div>
-<p>As can be seen, the <code class="docutils literal"><span class="pre">s</span></code> value is the same (<code class="docutils literal"><span class="pre">static1</span></code>) for both of the row in the partition (the partition key in
-that example being <code class="docutils literal"><span class="pre">pk</span></code>, both rows are in that same partition): the 2nd insertion has overridden the value for <code class="docutils literal"><span class="pre">s</span></code>.</p>
-<p>The use of static columns as the following restrictions:</p>
-<ul class="simple">
-<li>tables with the <code class="docutils literal"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option (see below) cannot use them.</li>
-<li>a table without clustering columns cannot have static columns (in a table without clustering columns, every partition
-has only one row, and so every column is inherently static).</li>
-<li>only non <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> columns can be static.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="the-primary-key">
-<span id="primary-key"></span><h3>The Primary key<a class="headerlink" href="#the-primary-key" title="Permalink to this headline">¶</a></h3>
-<p>Within a table, a row is uniquely identified by its <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>, and hence all table <strong>must</strong> define a PRIMARY KEY
-(and only one). A <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> definition is composed of one or more of the columns defined in the table.
-Syntactically, the primary key is defined the keywords <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> followed by comma-separated list of the column
-names composing it within parenthesis, but if the primary key has only one column, one can alternatively follow that
-column definition by the <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> keywords. The order of the columns in the primary key definition matter.</p>
-<p>A CQL primary key is composed of 2 parts:</p>
-<ul>
-<li><p class="first">the <a class="reference internal" href="#partition-key"><span class="std std-ref">partition key</span></a> part. It is the first component of the primary key definition. It can be a
-single column or, using additional parenthesis, can be multiple columns. A table always have at least a partition key,
-the smallest possible table definition is:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span><span class="n">k</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">);</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">the <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a>. Those are the columns after the first component of the primary key
-definition, and the order of those columns define the <em>clustering order</em>.</p>
-</li>
-</ul>
-<p>Some example of primary key definition are:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">(a)</span></code>: <code class="docutils literal"><span class="pre">a</span></code> is the partition key and there is no clustering columns.</li>
-<li><code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">(a,</span> <span class="pre">b,</span> <span class="pre">c)</span></code> : <code class="docutils literal"><span class="pre">a</span></code> is the partition key and <code class="docutils literal"><span class="pre">b</span></code> and <code class="docutils literal"><span class="pre">c</span></code> are the clustering columns.</li>
-<li><code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">((a,</span> <span class="pre">b),</span> <span class="pre">c)</span></code> : <code class="docutils literal"><span class="pre">a</span></code> and <code class="docutils literal"><span class="pre">b</span></code> compose the partition key (this is often called a <em>composite</em> partition
-key) and <code class="docutils literal"><span class="pre">c</span></code> is the clustering column.</li>
-</ul>
-<div class="section" id="the-partition-key">
-<span id="partition-key"></span><h4>The partition key<a class="headerlink" href="#the-partition-key" title="Permalink to this headline">¶</a></h4>
-<p>Within a table, CQL defines the notion of a <em>partition</em>. A partition is simply the set of rows that share the same value
-for their partition key. Note that if the partition key is composed of multiple columns, then rows belong to the same
-partition only they have the same values for all those partition key column. So for instance, given the following table
-definition and content:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
-    <span class="n">a</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">b</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">c</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">d</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">),</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
-<span class="p">);</span>
-
-<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
-   <span class="n">a</span> <span class="o">|</span> <span class="n">b</span> <span class="o">|</span> <span class="n">c</span> <span class="o">|</span> <span class="n">d</span>
-  <span class="c1">---+---+---+---</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span>    <span class="c1">// row 1</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">1</span>    <span class="c1">// row 2</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">2</span> <span class="o">|</span> <span class="mf">2</span>    <span class="c1">// row 3</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">3</span> <span class="o">|</span> <span class="mf">3</span>    <span class="c1">// row 4</span>
-   <span class="mf">1</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">4</span> <span class="o">|</span> <span class="mf">4</span>    <span class="c1">// row 5</span>
-</pre></div>
-</div>
-<p><code class="docutils literal"><span class="pre">row</span> <span class="pre">1</span></code> and <code class="docutils literal"><span class="pre">row</span> <span class="pre">2</span></code> are in the same partition, <code class="docutils literal"><span class="pre">row</span> <span class="pre">3</span></code> and <code class="docutils literal"><span class="pre">row</span> <span class="pre">4</span></code> are also in the same partition (but a
-different one) and <code class="docutils literal"><span class="pre">row</span> <span class="pre">5</span></code> is in yet another partition.</p>
-<p>Note that a table always has a partition key, and that if the table has no <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a>, then every partition of that table is only comprised of a single row (since the primary key
-uniquely identifies rows and the primary key is equal to the partition key if there is no clustering columns).</p>
-<p>The most important property of partition is that all the rows belonging to the same partition are guarantee to be stored
-on the same set of replica nodes. In other words, the partition key of a table defines which of the rows will be
-localized together in the Cluster, and it is thus important to choose your partition key wisely so that rows that needs
-to be fetch together are in the same partition (so that querying those rows together require contacting a minimum of
-nodes).</p>
-<p>Please note however that there is a flip-side to this guarantee: as all rows sharing a partition key are guaranteed to
-be stored on the same set of replica node, a partition key that groups too much data can create a hotspot.</p>
-<p>Another useful property of a partition is that when writing data, all the updates belonging to a single partition are
-done <em>atomically</em> and in <em>isolation</em>, which is not the case across partitions.</p>
-<p>The proper choice of the partition key and clustering columns for a table is probably one of the most important aspect
-of data modeling in Cassandra, and it largely impact which queries can be performed, and how efficiently they are.</p>
-</div>
-<div class="section" id="the-clustering-columns">
-<span id="clustering-columns"></span><h4>The clustering columns<a class="headerlink" href="#the-clustering-columns" title="Permalink to this headline">¶</a></h4>
-<p>The clustering columns of a table defines the clustering order for the partition of that table. For a given
-<a class="reference internal" href="#partition-key"><span class="std std-ref">partition</span></a>, all the rows are physically ordered inside Cassandra by that clustering order. For
-instance, given:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
-    <span class="n">a</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">b</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">c</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
-<span class="p">);</span>
-
-<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
-   <span class="n">a</span> <span class="o">|</span> <span class="n">b</span> <span class="o">|</span> <span class="n">c</span>
-  <span class="c1">---+---+---</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">4</span>     <span class="c1">// row 1</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">9</span>     <span class="c1">// row 2</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">2</span> <span class="o">|</span> <span class="mf">2</span>     <span class="c1">// row 3</span>
-   <span class="mf">0</span> <span class="o">|</span> <span class="mf">3</span> <span class="o">|</span> <span class="mf">3</span>     <span class="c1">// row 4</span>
-</pre></div>
-</div>
-<p>then the rows (which all belong to the same partition) are all stored internally in the order of the values of their
-<code class="docutils literal"><span class="pre">b</span></code> column (the order they are displayed above). So where the partition key of the table allows to group rows on the
-same replica set, the clustering columns controls how those rows are stored on the replica. That sorting allows the
-retrieval of a range of rows within a partition (for instance, in the example above, <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">FROM</span> <span class="pre">t</span> <span class="pre">WHERE</span> <span class="pre">a</span> <span class="pre">=</span> <span class="pre">0</span> <span class="pre">AND</span> <span class="pre">b</span>
-<span class="pre">&gt;</span> <span class="pre">1</span> <span class="pre">and</span> <span class="pre">b</span> <span class="pre">&lt;=</span> <span class="pre">3</span></code>) very efficient.</p>
-</div>
-</div>
-<div class="section" id="table-options">
-<span id="create-table-options"></span><h3>Table options<a class="headerlink" href="#table-options" title="Permalink to this headline">¶</a></h3>
-<p>A CQL table has a number of options that can be set at creation (and, for most of them, <a class="reference internal" href="#alter-table-statement"><span class="std std-ref">altered</span></a> later). These options are specified after the <code class="docutils literal"><span class="pre">WITH</span></code> keyword.</p>
-<p>Amongst those options, two important ones cannot be changed after creation and influence which queries can be done
-against the table: the <code class="docutils literal"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option and the <code class="docutils literal"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option. Those, as well as the other
-options of a table are described in the following sections.</p>
-<div class="section" id="compact-tables">
-<span id="id3"></span><h4>Compact tables<a class="headerlink" href="#compact-tables" title="Permalink to this headline">¶</a></h4>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Since Cassandra 3.0, compact tables have the exact same layout internally than non compact ones (for the
-same schema obviously), and declaring a table compact <strong>only</strong> creates artificial limitations on the table definition
-and usage that are necessary to ensure backward compatibility with the deprecated Thrift API. And as <code class="docutils literal"><span class="pre">COMPACT</span>
-<span class="pre">STORAGE</span></code> cannot, as of Cassandra 3.10, be removed, it is strongly discouraged to create new table with the
-<code class="docutils literal"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option.</p>
-</div>
-<p>A <em>compact</em> table is one defined with the <code class="docutils literal"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option. This option is mainly targeted towards backward
-compatibility for definitions created before CQL version 3 (see <a class="reference external" href="http://www.datastax.com/dev/blog/thrift-to-cql3">www.datastax.com/dev/blog/thrift-to-cql3</a> for more details) and shouldn&#8217;t be used for new tables. Declaring a
-table with this option creates limitations for the table which are largely arbitrary but necessary for backward
-compatibility with the (deprecated) Thrift API. Amongst those limitation:</p>
-<ul class="simple">
-<li>a compact table cannot use collections nor static columns.</li>
-<li>if a compact table has at least one clustering column, then it must have <em>exactly</em> one column outside of the primary
-key ones. This imply you cannot add or remove columns after creation in particular.</li>
-<li>a compact table is limited in the indexes it can create, and no materialized view can be created on it.</li>
-</ul>
-</div>
-<div class="section" id="reversing-the-clustering-order">
-<span id="clustering-order"></span><h4>Reversing the clustering order<a class="headerlink" href="#reversing-the-clustering-order" title="Permalink to this headline">¶</a></h4>
-<p>The clustering order of a table is defined by the <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a> of that table. By
-default, that ordering is based on natural order of those clustering order, but the <code class="docutils literal"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> allows to
-change that clustering order to use the <em>reverse</em> natural order for some (potentially all) of the columns.</p>
-<p>The <code class="docutils literal"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option takes the comma-separated list of the clustering column, each with a <code class="docutils literal"><span class="pre">ASC</span></code> (for
-<em>ascendant</em>, e.g. the natural order) or <code class="docutils literal"><span class="pre">DESC</span></code> (for <em>descendant</em>, e.g. the reverse natural order). Note in particular
-that the default (if the <code class="docutils literal"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option is not used) is strictly equivalent to using the option with all
-clustering columns using the <code class="docutils literal"><span class="pre">ASC</span></code> modifier.</p>
-<p>Note that this option is basically a hint for the storage engine to change the order in which it stores the row but it
-has 3 visible consequences:</p>
-<dl class="docutils">
-<dt># it limits which <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause are allowed for <a class="reference internal" href="dml.html#select-statement"><span class="std std-ref">selects</span></a> on that table. You can only</dt>
-<dd>order results by the clustering order or the reverse clustering order. Meaning that if a table has 2 clustering column
-<code class="docutils literal"><span class="pre">a</span></code> and <code class="docutils literal"><span class="pre">b</span></code> and you defined <code class="docutils literal"><span class="pre">WITH</span> <span class="pre">CLUSTERING</span> <span class="pre">ORDER</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code>, then in queries you will be allowed to use
-<code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code> and (reverse clustering order) <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">ASC,</span> <span class="pre">b</span> <span class="pre">DESC)</span></code> but <strong>not</strong> <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span>
-<span class="pre">ASC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code> (nor <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">DESC)</span></code>).</dd>
-<dt># it also change the default order of results when queried (if no <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span></code> is provided). Results are always returned</dt>
-<dd>in clustering order (within a partition).</dd>
-<dt># it has a small performance impact on some queries as queries in reverse clustering order are slower than the one in</dt>
-<dd>forward clustering order. In practice, this means that if you plan on querying mostly in the reverse natural order of
-your columns (which is common with time series for instance where you often want data from the newest to the oldest),
-it is an optimization to declare a descending clustering order.</dd>
-</dl>
-</div>
-<div class="section" id="other-table-options">
-<span id="create-table-general-options"></span><h4>Other table options<a class="headerlink" href="#other-table-options" title="Permalink to this headline">¶</a></h4>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">review (misses cdc if nothing else) and link to proper categories when appropriate (compaction for instance)</p>
-</div>
-<p>A table supports the following options:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="28%" />
-<col width="9%" />
-<col width="11%" />
-<col width="52%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">option</th>
-<th class="head">kind</th>
-<th class="head">default</th>
-<th class="head">description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">comment</span></code></td>
-<td><em>simple</em></td>
-<td>none</td>
-<td>A free-form, human-readable comment.</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">read_repair_chance</span></code></td>
-<td><em>simple</em></td>
-<td>0.1</td>
-<td>The probability with which to query extra nodes (e.g.
-more nodes than required by the consistency level) for
-the purpose of read repairs.</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">dclocal_read_repair_chance</span></code></td>
-<td><em>simple</em></td>
-<td>0</td>
-<td>The probability with which to query extra nodes (e.g.
-more nodes than required by the consistency level)
-belonging to the same data center than the read
-coordinator for the purpose of read repairs.</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">gc_grace_seconds</span></code></td>
-<td><em>simple</em></td>
-<td>864000</td>
-<td>Time to wait before garbage collecting tombstones
-(deletion markers).</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code></td>
-<td><em>simple</em></td>
-<td>0.00075</td>
-<td>The target probability of false positive of the sstable
-bloom filters. Said bloom filters will be sized to provide
-the provided probability (thus lowering this value impact
-the size of bloom filters in-memory and on-disk)</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">default_time_to_live</span></code></td>
-<td><em>simple</em></td>
-<td>0</td>
-<td>The default expiration time (“TTL”) in seconds for a
-table.</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">compaction</span></code></td>
-<td><em>map</em></td>
-<td><em>see below</em></td>
-<td><a class="reference internal" href="#cql-compaction-options"><span class="std std-ref">Compaction options</span></a>.</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">compression</span></code></td>
-<td><em>map</em></td>
-<td><em>see below</em></td>
-<td><a class="reference internal" href="#cql-compression-options"><span class="std std-ref">Compression options</span></a>.</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">caching</span></code></td>
-<td><em>map</em></td>
-<td><em>see below</em></td>
-<td><a class="reference internal" href="#cql-caching-options"><span class="std std-ref">Caching options</span></a>.</td>
-</tr>
-</tbody>
-</table>
-<div class="section" id="compaction-options">
-<span id="cql-compaction-options"></span><h5>Compaction options<a class="headerlink" href="#compaction-options" title="Permalink to this headline">¶</a></h5>
-<p>The <code class="docutils literal"><span class="pre">compaction</span></code> options must at least define the <code class="docutils literal"><span class="pre">'class'</span></code> sub-option, that defines the compaction strategy class
-to use. The default supported class are <code class="docutils literal"><span class="pre">'SizeTieredCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction.html#stcs"><span class="std std-ref">STCS</span></a>),
-<code class="docutils literal"><span class="pre">'LeveledCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction.html#lcs"><span class="std std-ref">LCS</span></a>) and <code class="docutils literal"><span class="pre">'TimeWindowCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction.html#twcs"><span class="std std-ref">TWCS</span></a>) (the
-<code class="docutils literal"><span class="pre">'DateTieredCompactionStrategy'</span></code> is also supported but is deprecated and <code class="docutils literal"><span class="pre">'TimeWindowCompactionStrategy'</span></code> should be
-preferred instead). Custom strategy can be provided by specifying the full class name as a <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">string constant</span></a>.</p>
-<p>All default strategies support a number of <a class="reference internal" href="../operating/compaction.html#compaction-options"><span class="std std-ref">common options</span></a>, as well as options specific to
-the strategy chosen (see the section corresponding to your strategy for details: <a class="reference internal" href="../operating/compaction.html#stcs-options"><span class="std std-ref">STCS</span></a>, <a class="reference internal" href="../operating/compaction.html#lcs-options"><span class="std std-ref">LCS</span></a> and <a class="reference internal" href="../operating/compaction.html#twcs"><span class="std std-ref">TWCS</span></a>).</p>
-</div>
-<div class="section" id="compression-options">
-<span id="cql-compression-options"></span><h5>Compression options<a class="headerlink" href="#compression-options" title="Permalink to this headline">¶</a></h5>
-<p>The <code class="docutils literal"><span class="pre">compression</span></code> options define if and how the sstables of the table are compressed. The following sub-options are
-available:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="21%" />
-<col width="13%" />
-<col width="66%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Option</th>
-<th class="head">Default</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">class</span></code></td>
-<td>LZ4Compressor</td>
-<td>The compression algorithm to use. Default compressor are: LZ4Compressor,
-SnappyCompressor and DeflateCompressor. Use <code class="docutils literal"><span class="pre">'enabled'</span> <span class="pre">:</span> <span class="pre">false</span></code> to disable
-compression. Custom compressor can be provided by specifying the full class
-name as a “string constant”:#constants.</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">enabled</span></code></td>
-<td>true</td>
-<td>Enable/disable sstable compression.</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">chunk_length_in_kb</span></code></td>
-<td>64KB</td>
-<td>On disk SSTables are compressed by block (to allow random reads). This
-defines the size (in KB) of said block. Bigger values may improve the
-compression rate, but increases the minimum size of data to be read from disk
-for a read</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">crc_check_chance</span></code></td>
-<td>1.0</td>
-<td>When compression is enabled, each compressed block includes a checksum of
-that block for the purpose of detecting disk bitrot and avoiding the
-propagation of corruption to other replica. This option defines the
-probability with which those checksums are checked during read. By default
-they are always checked. Set to 0 to disable checksum checking and to 0.5 for
-instance to check them every other read   |</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="caching-options">
-<span id="cql-caching-options"></span><h5>Caching options<a class="headerlink" href="#caching-options" title="Permalink to this headline">¶</a></h5>
-<p>The <code class="docutils literal"><span class="pre">caching</span></code> options allows to configure both the <em>key cache</em> and the <em>row cache</em> for the table. The following
-sub-options are available:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="21%" />
-<col width="8%" />
-<col width="72%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Option</th>
-<th class="head">Default</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">keys</span></code></td>
-<td>ALL</td>
-<td>Whether to cache keys (“key cache”) for this table. Valid values are: <code class="docutils literal"><span class="pre">ALL</span></code> and
-<code class="docutils literal"><span class="pre">NONE</span></code>.</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">rows_per_partition</span></code></td>
-<td>NONE</td>
-<td>The amount of rows to cache per partition (“row cache”). If an integer <code class="docutils literal"><span class="pre">n</span></code> is
-specified, the first <code class="docutils literal"><span class="pre">n</span></code> queried rows of a partition will be cached. Other
-possible options are <code class="docutils literal"><span class="pre">ALL</span></code>, to cache all rows of a queried partition, or <code class="docutils literal"><span class="pre">NONE</span></code>
-to disable row caching.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="other-considerations">
-<h5>Other considerations:<a class="headerlink" href="#other-considerations" title="Permalink to this headline">¶</a></h5>
-<ul class="simple">
-<li>Adding new columns (see <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> below) is a constant time operation. There is thus no need to try to
-anticipate future usage when creating a table.</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="section" id="alter-table">
-<span id="alter-table-statement"></span><h2>ALTER TABLE<a class="headerlink" href="#alter-table" title="Permalink to this headline">¶</a></h2>
-<p>Altering an existing table uses the <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-alter_table_statement">alter_table_statement  </strong> ::=  ALTER TABLE <a class="reference internal" href="#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a> <a class="reference internal" href="#grammar-token-alter_table_instruction"><code class="xref docutils literal"><span class="pre">alter_table_instruction</span></code></a>
-<strong id="grammar-token-alter_table_instruction">alter_table_instruction</strong> ::=  ALTER <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> TYPE <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a>
-                             | ADD <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> )*
-                             | DROP <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( <a class="reference internal" href="#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )*
-                             | WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal"><span class="pre">options</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">addamsFamily</span> <span class="k">ALTER</span> <span class="n">lastKnownLocation</span> <span class="k">TYPE</span> <span class="nb">uuid</span><span class="p">;</span>
-
-<span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">addamsFamily</span> <span class="k">ADD</span> <span class="n">gravesite</span> <span class="nb">varchar</span><span class="p">;</span>
-
-<span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">addamsFamily</span>
-       <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="s1">&#39;A most excellent and useful table&#39;</span>
-       <span class="k">AND</span> <span class="n">read_repair_chance</span> <span class="o">=</span> <span class="mf">0.2</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement can:</p>
-<ul class="simple">
-<li>Change the type of one of the column in the table (through the <code class="docutils literal"><span class="pre">ALTER</span></code> instruction). Note that the type of a column
-cannot be changed arbitrarily. The change of type should be such that any value of the previous type should be a valid
-value of the new type. Further, for <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a> and columns on which a secondary
-index is defined, the new type must sort values in the same way the previous type does. See the <a class="reference internal" href="#alter-table-type-compatibility"><span class="std std-ref">type
-compatibility table</span></a> below for detail on which type changes are accepted.</li>
-<li>Add new column(s) to the table (through the <code class="docutils literal"><span class="pre">ADD</span></code> instruction). Note that the primary key of a table cannot be
-changed and thus newly added column will, by extension, never be part of the primary key. Also note that <a class="reference internal" href="#compact-tables"><span class="std std-ref">compact
-tables</span></a> have restrictions regarding column addition. Note that this is constant (in the amount of
-data the cluster contains) time operation.</li>
-<li>Remove column(s) from the table. This drops both the column and all its content, but note that while the column
-becomes immediately unavailable, its content is only removed lazily during compaction. Please also see the warnings
-below. Due to lazy removal, the altering itself is a constant (in the amount of data removed or contained in the
-cluster) time operation.</li>
-<li>Change some of the table options (through the <code class="docutils literal"><span class="pre">WITH</span></code> instruction). The <a class="reference internal" href="#create-table-options"><span class="std std-ref">supported options</span></a> are the same that when creating a table (outside of <code class="docutils literal"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> and <code class="docutils literal"><span class="pre">CLUSTERING</span>
-<span class="pre">ORDER</span></code> that cannot be changed after creation). Note that setting any <code class="docutils literal"><span class="pre">compaction</span></code> sub-options has the effect of
-erasing all previous <code class="docutils literal"><span class="pre">compaction</span></code> options, so you need to re-specify all the sub-options if you want to keep them.
-The same note applies to the set of <code class="docutils literal"><span class="pre">compression</span></code> sub-options.</li>
-</ul>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Dropping a column assumes that the timestamps used for the value of this column are &#8220;real&#8221; timestamp in
-microseconds. Using &#8220;real&#8221; timestamps in microseconds is the default is and is <strong>strongly</strong> recommended but as
-Cassandra allows the client to provide any timestamp on any table it is theoretically possible to use another
-convention. Please be aware that if you do so, dropping a column will not work correctly.</p>
-</div>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Once a column is dropped, it is allowed to re-add a column with the same name than the dropped one
-<strong>unless</strong> the type of the dropped column was a (non-frozen) column (due to an internal technical limitation).</p>
-</div>
-<div class="section" id="cql-type-compatibility">
-<span id="alter-table-type-compatibility"></span><h3>CQL type compatibility:<a class="headerlink" href="#cql-type-compatibility" title="Permalink to this headline">¶</a></h3>
-<p>CQL data types may be converted only as the following table.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="73%" />
-<col width="27%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Existing type</th>
-<th class="head">Can be altered to:</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>timestamp</td>
-<td>bigint</td>
-</tr>
-<tr class="row-odd"><td>ascii, bigint, boolean, date, decimal, double, float,
-inet, int, smallint, text, time, timestamp, timeuuid,
-tinyint, uuid, varchar, varint</td>
-<td>blob</td>
-</tr>
-<tr class="row-even"><td>int</td>
-<td>date</td>
-</tr>
-<tr class="row-odd"><td>ascii, varchar</td>
-<td>text</td>
-</tr>
-<tr class="row-even"><td>bigint</td>
-<td>time</td>
-</tr>
-<tr class="row-odd"><td>bigint</td>
-<td>timestamp</td>
-</tr>
-<tr class="row-even"><td>timeuuid</td>
-<td>uuid</td>
-</tr>
-<tr class="row-odd"><td>ascii, text</td>
-<td>varchar</td>
-</tr>
-<tr class="row-even"><td>bigint, int, timestamp</td>
-<td>varint</td>
-</tr>
-</tbody>
-</table>
-<p>Clustering columns have stricter requirements, only the following conversions are allowed:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="52%" />
-<col width="48%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Existing type</th>
-<th class="head">Can be altered to</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>ascii, text, varchar</td>
-<td>blob</td>
-</tr>
-<tr class="row-odd"><td>ascii, varchar</td>
-<td>text</td>
-</tr>
-<tr class="row-even"><td>ascii, text</td>
-<td>varchar</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-<div class="section" id="drop-table">
-<span id="drop-table-statement"></span><h2>DROP TABLE<a class="headerlink" href="#drop-table" title="Permalink to this headline">¶</a></h2>
-<p>Dropping a table uses the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_table_statement">drop_table_statement</strong> ::=  DROP TABLE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-</pre>
-<p>Dropping a table results in the immediate, irreversible removal of the table, including all data it contains.</p>
-<p>If the table does not exist, the statement will return an error, unless <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
-operation is a no-op.</p>
-</div>
-<div class="section" id="truncate">
-<span id="truncate-statement"></span><h2>TRUNCATE<a class="headerlink" href="#truncate" title="Permalink to this headline">¶</a></h2>
-<p>A table can be truncated using the <code class="docutils literal"><span class="pre">TRUNCATE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-truncate_statement">truncate_statement</strong> ::=  TRUNCATE [ TABLE ] <a class="reference internal" href="#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-</pre>
-<p>Note that <code class="docutils literal"><span class="pre">TRUNCATE</span> <span class="pre">TABLE</span> <span class="pre">foo</span></code> is allowed for consistency with other DDL statements but tables are the only object
-that can be truncated currently and so the <code class="docutils literal"><span class="pre">TABLE</span></code> keyword can be omitted.</p>
-<p>Truncating a table permanently removes all existing data from the table, but without removing the table itself.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="dml.html" class="btn btn-default pull-right " role="button" title="Data Manipulation" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="types.html" class="btn btn-default" role="button" title="Data Types" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/definitions.html b/src/doc/3.10/cql/definitions.html
deleted file mode 100644
index 52a2011..0000000
--- a/src/doc/3.10/cql/definitions.html
+++ /dev/null
@@ -1,314 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Definitions"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Data Types" href="types.html"/>
-      <link rel="prev" title="The Cassandra Query Language (CQL)" href="index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Definitions</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#conventions">Conventions</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#identifiers">Identifiers and keywords</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#constants">Constants</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#terms">Terms</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#comments">Comments</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#statements">Statements</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#prepared-statements">Prepared Statements</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="definitions">
-<h1>Definitions<a class="headerlink" href="#definitions" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="conventions">
-<span id="id1"></span><h2>Conventions<a class="headerlink" href="#conventions" title="Permalink to this headline">¶</a></h2>
-<p>To aid in specifying the CQL syntax, we will use the following conventions in this document:</p>
-<ul class="simple">
-<li>Language rules will be given in an informal <a class="reference external" href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#Variants">BNF variant</a> notation. In particular, we&#8217;ll use square brakets
-(<code class="docutils literal"><span class="pre">[</span> <span class="pre">item</span> <span class="pre">]</span></code>) for optional items, <code class="docutils literal"><span class="pre">*</span></code> and <code class="docutils literal"><span class="pre">+</span></code> for repeated items (where <code class="docutils literal"><span class="pre">+</span></code> imply at least one).</li>
-<li>The grammar will also use the following convention for convenience: non-terminal term will be lowercase (and link to
-their definition) while terminal keywords will be provided &#8220;all caps&#8221;. Note however that keywords are
-<a class="reference internal" href="#identifiers"><span class="std std-ref">Identifiers and keywords</span></a> and are thus case insensitive in practice. We will also define some early construction using
-regexp, which we&#8217;ll indicate with <code class="docutils literal"><span class="pre">re(&lt;some</span> <span class="pre">regular</span> <span class="pre">expression&gt;)</span></code>.</li>
-<li>The grammar is provided for documentation purposes and leave some minor details out.  For instance, the comma on the
-last column definition in a <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> statement is optional but supported if present even though the grammar in
-this document suggests otherwise. Also, not everything accepted by the grammar is necessarily valid CQL.</li>
-<li>References to keywords or pieces of CQL code in running text will be shown in a <code class="docutils literal"><span class="pre">fixed-width</span> <span class="pre">font</span></code>.</li>
-</ul>
-</div>
-<div class="section" id="identifiers">
-<span id="identifiers-and-keywords"></span><h2>Identifiers and keywords<a class="headerlink" href="#identifiers" title="Permalink to this headline">¶</a></h2>
-<p>The CQL language uses <em>identifiers</em> (or <em>names</em>) to identify tables, columns and other objects. An identifier is a token
-matching the regular expression <code class="docutils literal"><span class="pre">[a-zA-Z][a-zA-Z0-9_]*</span></code>.</p>
-<p>A number of such identifiers, like <code class="docutils literal"><span class="pre">SELECT</span></code> or <code class="docutils literal"><span class="pre">WITH</span></code>, are <em>keywords</em>. They have a fixed meaning for the language
-and most are reserved. The list of those keywords can be found in <a class="reference internal" href="appendices.html#appendix-a"><span class="std std-ref">Appendix A: CQL Keywords</span></a>.</p>
-<p>Identifiers and (unquoted) keywords are case insensitive. Thus <code class="docutils literal"><span class="pre">SELECT</span></code> is the same than <code class="docutils literal"><span class="pre">select</span></code> or <code class="docutils literal"><span class="pre">sElEcT</span></code>, and
-<code class="docutils literal"><span class="pre">myId</span></code> is the same than <code class="docutils literal"><span class="pre">myid</span></code> or <code class="docutils literal"><span class="pre">MYID</span></code>. A convention often used (in particular by the samples of this
-documentation) is to use upper case for keywords and lower case for other identifiers.</p>
-<p>There is a second kind of identifiers called <em>quoted identifiers</em> defined by enclosing an arbitrary sequence of
-characters (non empty) in double-quotes(<code class="docutils literal"><span class="pre">&quot;</span></code>). Quoted identifiers are never keywords. Thus <code class="docutils literal"><span class="pre">&quot;select&quot;</span></code> is not a
-reserved keyword and can be used to refer to a column (note that using this is particularly advised), while <code class="docutils literal"><span class="pre">select</span></code>
-would raise a parsing error. Also, contrarily to unquoted identifiers and keywords, quoted identifiers are case
-sensitive (<code class="docutils literal"><span class="pre">&quot;My</span> <span class="pre">Quoted</span> <span class="pre">Id&quot;</span></code> is <em>different</em> from <code class="docutils literal"><span class="pre">&quot;my</span> <span class="pre">quoted</span> <span class="pre">id&quot;</span></code>). A fully lowercase quoted identifier that matches
-<code class="docutils literal"><span class="pre">[a-zA-Z][a-zA-Z0-9_]*</span></code> is however <em>equivalent</em> to the unquoted identifier obtained by removing the double-quote (so
-<code class="docutils literal"><span class="pre">&quot;myid&quot;</span></code> is equivalent to <code class="docutils literal"><span class="pre">myid</span></code> and to <code class="docutils literal"><span class="pre">myId</span></code> but different from <code class="docutils literal"><span class="pre">&quot;myId&quot;</span></code>).  Inside a quoted identifier, the
-double-quote character can be repeated to escape it, so <code class="docutils literal"><span class="pre">&quot;foo</span> <span class="pre">&quot;&quot;</span> <span class="pre">bar&quot;</span></code> is a valid identifier.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last"><em>quoted identifiers</em> allows to declare columns with arbitrary names, and those can sometime clash with
-specific names used by the server. For instance, when using conditional update, the server will respond with a
-result-set containing a special result named <code class="docutils literal"><span class="pre">&quot;[applied]&quot;</span></code>. If you’ve declared a column with such a name, this
-could potentially confuse some tools and should be avoided. In general, unquoted identifiers should be preferred but
-if you use quoted identifiers, it is strongly advised to avoid any name enclosed by squared brackets (like
-<code class="docutils literal"><span class="pre">&quot;[applied]&quot;</span></code>) and any name that looks like a function call (like <code class="docutils literal"><span class="pre">&quot;f(x)&quot;</span></code>).</p>
-</div>
-<p>More formally, we have:</p>
-<pre>
-<strong id="grammar-token-identifier">identifier         </strong> ::=  <a class="reference internal" href="#grammar-token-unquoted_identifier"><code class="xref docutils literal"><span class="pre">unquoted_identifier</span></code></a> | <a class="reference internal" href="#grammar-token-quoted_identifier"><code class="xref docutils literal"><span class="pre">quoted_identifier</span></code></a>
-<strong id="grammar-token-unquoted_identifier">unquoted_identifier</strong> ::=  re('[a-zA-Z][a-zA-Z0-9_]*')
-<strong id="grammar-token-quoted_identifier">quoted_identifier  </strong> ::=  '&quot;' (any character where &quot; can appear if doubled)+ '&quot;'
-</pre>
-</div>
-<div class="section" id="constants">
-<span id="id2"></span><h2>Constants<a class="headerlink" href="#constants" title="Permalink to this headline">¶</a></h2>
-<p>CQL defines the following kind of <em>constants</em>:</p>
-<pre>
-<strong id="grammar-token-constant">constant</strong> ::=  <a class="reference internal" href="#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a> | <a class="reference internal" href="#grammar-token-integer"><code class="xref docutils literal"><span class="pre">integer</span></code></a> | <a class="reference internal" href="#grammar-token-float"><code class="xref docutils literal"><span class="pre">float</span></code></a> | <a class="reference internal" href="#grammar-token-boolean"><code class="xref docutils literal"><span class="pre">boolean</span></code></a> | <a class="reference internal" href="#grammar-token-uuid"><code class="xref docutils literal"><span class="pre">uuid</span></code></a> | <a class="reference internal" href="#grammar-token-blob"><code class="xref docutils literal"><span class="pre">blob</span></code></a> | NULL
-<strong id="grammar-token-string">string  </strong> ::=  '\'' (any character where ' can appear if doubled)+ '\''
-              '$$' (any character other than '$$') '$$'
-<strong id="grammar-token-integer">integer </strong> ::=  re('-?[0-9]+')
-<strong id="grammar-token-float">float   </strong> ::=  re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
-<strong id="grammar-token-boolean">boolean </strong> ::=  TRUE | FALSE
-<strong id="grammar-token-uuid">uuid    </strong> ::=  <a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal"><span class="pre">hex</span></code></a>{8}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal"><span class="pre">hex</span></code></a>{12}
-<strong id="grammar-token-hex">hex     </strong> ::=  re(&quot;[0-9a-fA-F]&quot;)
-<strong id="grammar-token-blob">blob    </strong> ::=  '0' ('x' | 'X') <a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal"><span class="pre">hex</span></code></a>+
-</pre>
-<p>In other words:</p>
-<ul class="simple">
-<li>A string constant is an arbitrary sequence of characters enclosed by single-quote(<code class="docutils literal"><span class="pre">'</span></code>). A single-quote
-can be included by repeating it, e.g. <code class="docutils literal"><span class="pre">'It''s</span> <span class="pre">raining</span> <span class="pre">today'</span></code>. Those are not to be confused with quoted
-<a class="reference internal" href="#identifiers"><span class="std std-ref">Identifiers and keywords</span></a> that use double-quotes. Alternatively, a string can be defined by enclosing the arbitrary sequence
-of characters by two dollar characters, in which case single-quote can be use without escaping (<code class="docutils literal"><span class="pre">$$It's</span> <span class="pre">raining</span>
-<span class="pre">today$$</span></code>). That latter form is often used when defining <a class="reference internal" href="functions.html#udfs"><span class="std std-ref">user-defined functions</span></a> to avoid having to
-escape single-quote characters in function body (as they are more likely to occur than <code class="docutils literal"><span class="pre">$$</span></code>).</li>
-<li>Integer, float and boolean constant are defined as expected. Note however than float allows the special <code class="docutils literal"><span class="pre">NaN</span></code> and
-<code class="docutils literal"><span class="pre">Infinity</span></code> constants.</li>
-<li>CQL supports <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a> constants.</li>
-<li>Blobs content are provided in hexadecimal and prefixed by <code class="docutils literal"><span class="pre">0x</span></code>.</li>
-<li>The special <code class="docutils literal"><span class="pre">NULL</span></code> constant denotes the absence of value.</li>
-</ul>
-<p>For how these constants are typed, see the <a class="reference internal" href="types.html#data-types"><span class="std std-ref">Data Types</span></a> section.</p>
-</div>
-<div class="section" id="terms">
-<h2>Terms<a class="headerlink" href="#terms" title="Permalink to this headline">¶</a></h2>
-<p>CQL has the notion of a <em>term</em>, which denotes the kind of values that CQL support. Terms are defined by:</p>
-<pre>
-<strong id="grammar-token-term">term         </strong> ::=  <a class="reference internal" href="#grammar-token-constant"><code class="xref docutils literal"><span class="pre">constant</span></code></a> | <a class="reference internal" href="#grammar-token-literal"><code class="xref docutils literal"><span class="pre">literal</span></code></a> | <a class="reference internal" href="#grammar-token-function_call"><code class="xref docutils literal"><span class="pre">function_call</span></code></a> | <a class="reference internal" href="#grammar-token-type_hint"><code class="xref docutils literal"><span class="pre">type_hint</span></code></a> | <a class="reference internal" href="#grammar-token-bind_marker"><code class="xref docutils literal"><span class="pre">bind_marker</span></code></a>
-<strong id="grammar-token-literal">literal      </strong> ::=  <a class="reference internal" href="types.html#grammar-token-collection_literal"><code class="xref docutils literal"><span class="pre">collection_literal</span></code></a> | <a class="reference internal" href="types.html#grammar-token-udt_literal"><code class="xref docutils literal"><span class="pre">udt_literal</span></code></a> | <a class="reference internal" href="types.html#grammar-token-tuple_literal"><code class="xref docutils literal"><span class="pre">tuple_literal</span></code></a>
-<strong id="grammar-token-function_call">function_call</strong> ::=  <a class="reference internal" href="#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> '(' [ <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>)* ] ')'
-<strong id="grammar-token-type_hint">type_hint    </strong> ::=  '(' <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> `)` term
-<strong id="grammar-token-bind_marker">bind_marker  </strong> ::=  '?' | ':' <a class="reference internal" href="#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a>
-</pre>
-<p>A term is thus one of:</p>
-<ul class="simple">
-<li>A <a class="reference internal" href="#constants"><span class="std std-ref">constant</span></a>.</li>
-<li>A literal for either <a class="reference internal" href="types.html#collections"><span class="std std-ref">a collection</span></a>, <a class="reference internal" href="types.html#udts"><span class="std std-ref">a user-defined type</span></a> or <a class="reference internal" href="types.html#tuples"><span class="std std-ref">a tuple</span></a>
-(see the linked sections for details).</li>
-<li>A function call: see <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">the section on functions</span></a> for details on which <a class="reference internal" href="functions.html#native-functions"><span class="std std-ref">native function</span></a> exists and how to define your own <a class="reference internal" href="functions.html#udfs"><span class="std std-ref">user-defined ones</span></a>.</li>
-<li>A <em>type hint</em>: see the <span class="xref std std-ref">related section</span> for details.</li>
-<li>A bind marker, which denotes a variable to be bound at execution time. See the section on <a class="reference internal" href="#prepared-statements"><span class="std std-ref">Prepared Statements</span></a>
-for details. A bind marker can be either anonymous (<code class="docutils literal"><span class="pre">?</span></code>) or named (<code class="docutils literal"><span class="pre">:some_name</span></code>). The latter form provides a more
-convenient way to refer to the variable for binding it and should generally be preferred.</li>
-</ul>
-</div>
-<div class="section" id="comments">
-<h2>Comments<a class="headerlink" href="#comments" title="Permalink to this headline">¶</a></h2>
-<p>A comment in CQL is a line beginning by either double dashes (<code class="docutils literal"><span class="pre">--</span></code>) or double slash (<code class="docutils literal"><span class="pre">//</span></code>).</p>
-<p>Multi-line comments are also supported through enclosure within <code class="docutils literal"><span class="pre">/*</span></code> and <code class="docutils literal"><span class="pre">*/</span></code> (but nesting is not supported).</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="c1">-- This is a comment</span>
-<span class="c1">// This is a comment too</span>
-<span class="cm">/* This is</span>
-<span class="cm">   a multi-line comment */</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="statements">
-<h2>Statements<a class="headerlink" href="#statements" title="Permalink to this headline">¶</a></h2>
-<p>CQL consists of statements that can be divided in the following categories:</p>
-<ul class="simple">
-<li><a class="reference internal" href="ddl.html#data-definition"><span class="std std-ref">Data Definition</span></a> statements, to define and change how the data is stored (keyspaces and tables).</li>
-<li><a class="reference internal" href="dml.html#data-manipulation"><span class="std std-ref">Data Manipulation</span></a> statements, for selecting, inserting and deleting data.</li>
-<li><a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">Secondary Indexes</span></a> statements.</li>
-<li><a class="reference internal" href="mvs.html#materialized-views"><span class="std std-ref">Materialized Views</span></a> statements.</li>
-<li><a class="reference internal" href="security.html#cql-roles"><span class="std std-ref">Database Roles</span></a> statements.</li>
-<li><a class="reference internal" href="security.html#cql-permissions"><span class="std std-ref">Permissions</span></a> statements.</li>
-<li><a class="reference internal" href="functions.html#udfs"><span class="std std-ref">User-Defined Functions</span></a> statements.</li>
-<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-Defined Types</span></a> statements.</li>
-<li><a class="reference internal" href="triggers.html#cql-triggers"><span class="std std-ref">Triggers</span></a> statements.</li>
-</ul>
-<p>All the statements are listed below and are described in the rest of this documentation (see links above):</p>
-<pre>
-<strong id="grammar-token-cql_statement">cql_statement               </strong> ::=  <a class="reference internal" href="#grammar-token-statement"><code class="xref docutils literal"><span class="pre">statement</span></code></a> [ ';' ]
-<strong id="grammar-token-statement">statement                   </strong> ::=  <a class="reference internal" href="#grammar-token-ddl_statement"><code class="xref docutils literal"><span class="pre">ddl_statement</span></code></a>
-                                  | <a class="reference internal" href="#grammar-token-dml_statement"><code class="xref docutils literal"><span class="pre">dml_statement</span></code></a>
-                                  | <a class="reference internal" href="#grammar-token-secondary_index_statement"><code class="xref docutils literal"><span class="pre">secondary_index_statement</span></code></a>
-                                  | <a class="reference internal" href="#grammar-token-materialized_view_statement"><code class="xref docutils literal"><span class="pre">materialized_view_statement</span></code></a>
-                                  | <a class="reference internal" href="#grammar-token-role_or_permission_statement"><code class="xref docutils literal"><span class="pre">role_or_permission_statement</span></code></a>
-                                  | <a class="reference internal" href="#grammar-token-udf_statement"><code class="xref docutils literal"><span class="pre">udf_statement</span></code></a>
-                                  | <a class="reference internal" href="#grammar-token-udt_statement"><code class="xref docutils literal"><span class="pre">udt_statement</span></code></a>
-                                  | <a class="reference internal" href="#grammar-token-trigger_statement"><code class="xref docutils literal"><span class="pre">trigger_statement</span></code></a>
-<strong id="grammar-token-ddl_statement">ddl_statement               </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-use_statement"><code class="xref docutils literal"><span class="pre">use_statement</span></code></a>
-                                  | <a class="reference internal" href="ddl.html#grammar-token-create_keyspace_statement"><code class="xref docutils literal"><span class="pre">create_keyspace_statement</span></code></a>
-                                  | <a class="reference internal" href="ddl.html#grammar-token-alter_keyspace_statement"><code class="xref docutils literal"><span class="pre">alter_keyspace_statement</span></code></a>
-                                  | <a class="reference internal" href="ddl.html#grammar-token-drop_keyspace_statement"><code class="xref docutils literal"><span class="pre">drop_keyspace_statement</span></code></a>
-                                  | <a class="reference internal" href="ddl.html#grammar-token-create_table_statement"><code class="xref docutils literal"><span class="pre">create_table_statement</span></code></a>
-                                  | <a class="reference internal" href="ddl.html#grammar-token-alter_table_statement"><code class="xref docutils literal"><span class="pre">alter_table_statement</span></code></a>
-                                  | <a class="reference internal" href="ddl.html#grammar-token-drop_table_statement"><code class="xref docutils literal"><span class="pre">drop_table_statement</span></code></a>
-                                  | <a class="reference internal" href="ddl.html#grammar-token-truncate_statement"><code class="xref docutils literal"><span class="pre">truncate_statement</span></code></a>
-<strong id="grammar-token-dml_statement">dml_statement               </strong> ::=  <a class="reference internal" href="dml.html#grammar-token-select_statement"><code class="xref docutils literal"><span class="pre">select_statement</span></code></a>
-                                  | <a class="reference internal" href="dml.html#grammar-token-insert_statement"><code class="xref docutils literal"><span class="pre">insert_statement</span></code></a>
-                                  | <a class="reference internal" href="dml.html#grammar-token-update_statement"><code class="xref docutils literal"><span class="pre">update_statement</span></code></a>
-                                  | <a class="reference internal" href="dml.html#grammar-token-delete_statement"><code class="xref docutils literal"><span class="pre">delete_statement</span></code></a>
-                                  | <a class="reference internal" href="dml.html#grammar-token-batch_statement"><code class="xref docutils literal"><span class="pre">batch_statement</span></code></a>
-<strong id="grammar-token-secondary_index_statement">secondary_index_statement   </strong> ::=  <a class="reference internal" href="indexes.html#grammar-token-create_index_statement"><code class="xref docutils literal"><span class="pre">create_index_statement</span></code></a>
-                                  | <a class="reference internal" href="indexes.html#grammar-token-drop_index_statement"><code class="xref docutils literal"><span class="pre">drop_index_statement</span></code></a>
-<strong id="grammar-token-materialized_view_statement">materialized_view_statement </strong> ::=  <a class="reference internal" href="mvs.html#grammar-token-create_materialized_view_statement"><code class="xref docutils literal"><span class="pre">create_materialized_view_statement</span></code></a>
-                                  | <a class="reference internal" href="mvs.html#grammar-token-drop_materialized_view_statement"><code class="xref docutils literal"><span class="pre">drop_materialized_view_statement</span></code></a>
-<strong id="grammar-token-role_or_permission_statement">role_or_permission_statement</strong> ::=  <a class="reference internal" href="security.html#grammar-token-create_role_statement"><code class="xref docutils literal"><span class="pre">create_role_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-alter_role_statement"><code class="xref docutils literal"><span class="pre">alter_role_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-drop_role_statement"><code class="xref docutils literal"><span class="pre">drop_role_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-grant_role_statement"><code class="xref docutils literal"><span class="pre">grant_role_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-revoke_role_statement"><code class="xref docutils literal"><span class="pre">revoke_role_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-list_roles_statement"><code class="xref docutils literal"><span class="pre">list_roles_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-grant_permission_statement"><code class="xref docutils literal"><span class="pre">grant_permission_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-revoke_permission_statement"><code class="xref docutils literal"><span class="pre">revoke_permission_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-list_permissions_statement"><code class="xref docutils literal"><span class="pre">list_permissions_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-create_user_statement"><code class="xref docutils literal"><span class="pre">create_user_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-alter_user_statement"><code class="xref docutils literal"><span class="pre">alter_user_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-drop_user_statement"><code class="xref docutils literal"><span class="pre">drop_user_statement</span></code></a>
-                                  | <a class="reference internal" href="security.html#grammar-token-list_users_statement"><code class="xref docutils literal"><span class="pre">list_users_statement</span></code></a>
-<strong id="grammar-token-udf_statement">udf_statement               </strong> ::=  <a class="reference internal" href="functions.html#grammar-token-create_function_statement"><code class="xref docutils literal"><span class="pre">create_function_statement</span></code></a>
-                                  | <a class="reference internal" href="functions.html#grammar-token-drop_function_statement"><code class="xref docutils literal"><span class="pre">drop_function_statement</span></code></a>
-                                  | <a class="reference internal" href="functions.html#grammar-token-create_aggregate_statement"><code class="xref docutils literal"><span class="pre">create_aggregate_statement</span></code></a>
-                                  | <a class="reference internal" href="functions.html#grammar-token-drop_aggregate_statement"><code class="xref docutils literal"><span class="pre">drop_aggregate_statement</span></code></a>
-<strong id="grammar-token-udt_statement">udt_statement               </strong> ::=  <a class="reference internal" href="types.html#grammar-token-create_type_statement"><code class="xref docutils literal"><span class="pre">create_type_statement</span></code></a>
-                                  | <a class="reference internal" href="types.html#grammar-token-alter_type_statement"><code class="xref docutils literal"><span class="pre">alter_type_statement</span></code></a>
-                                  | <a class="reference internal" href="types.html#grammar-token-drop_type_statement"><code class="xref docutils literal"><span class="pre">drop_type_statement</span></code></a>
-<strong id="grammar-token-trigger_statement">trigger_statement           </strong> ::=  <a class="reference internal" href="triggers.html#grammar-token-create_trigger_statement"><code class="xref docutils literal"><span class="pre">create_trigger_statement</span></code></a>
-                                  | <a class="reference internal" href="triggers.html#grammar-token-drop_trigger_statement"><code class="xref docutils literal"><span class="pre">drop_trigger_statement</span></code></a>
-</pre>
-</div>
-<div class="section" id="prepared-statements">
-<span id="id3"></span><h2>Prepared Statements<a class="headerlink" href="#prepared-statements" title="Permalink to this headline">¶</a></h2>
-<p>CQL supports <em>prepared statements</em>. Prepared statements are an optimization that allows to parse a query only once but
-execute it multiple times with different concrete values.</p>
-<p>Any statement that uses at least one bind marker (see <a class="reference internal" href="#grammar-token-bind_marker"><code class="xref std std-token docutils literal"><span class="pre">bind_marker</span></code></a>) will need to be <em>prepared</em>. After which the statement
-can be <em>executed</em> by provided concrete values for each of its marker. The exact details of how a statement is prepared
-and then executed depends on the CQL driver used and you should refer to your driver documentation.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="types.html" class="btn btn-default pull-right " role="button" title="Data Types" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="index.html" class="btn btn-default" role="button" title="The Cassandra Query Language (CQL)" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/dml.html b/src/doc/3.10/cql/dml.html
deleted file mode 100644
index 91180f6..0000000
--- a/src/doc/3.10/cql/dml.html
+++ /dev/null
@@ -1,559 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Data Manipulation"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Secondary Indexes" href="indexes.html"/>
-      <link rel="prev" title="Data Definition" href="ddl.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Manipulation</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#select">SELECT</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#insert">INSERT</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#update">UPDATE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#delete">DELETE</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#batch">BATCH</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="data-manipulation">
-<span id="id1"></span><h1>Data Manipulation<a class="headerlink" href="#data-manipulation" title="Permalink to this headline">¶</a></h1>
-<p>This section describes the statements supported by CQL to insert, update, delete and query data.</p>
-<div class="section" id="select">
-<span id="select-statement"></span><h2>SELECT<a class="headerlink" href="#select" title="Permalink to this headline">¶</a></h2>
-<p>Querying data from data is done using a <code class="docutils literal"><span class="pre">SELECT</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-select_statement">select_statement</strong> ::=  SELECT [ JSON | DISTINCT ] ( <a class="reference internal" href="#grammar-token-select_clause"><code class="xref docutils literal"><span class="pre">select_clause</span></code></a> | '*' )
-                      FROM <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-                      [ WHERE <a class="reference internal" href="#grammar-token-where_clause"><code class="xref docutils literal"><span class="pre">where_clause</span></code></a> ]
-                      [ GROUP BY <a class="reference internal" href="#grammar-token-group_by_clause"><code class="xref docutils literal"><span class="pre">group_by_clause</span></code></a> ]
-                      [ ORDER BY <a class="reference internal" href="#grammar-token-ordering_clause"><code class="xref docutils literal"><span class="pre">ordering_clause</span></code></a> ]
-                      [ PER PARTITION LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind_marker"><code class="xref docutils literal"><span class="pre">bind_marker</span></code></a>) ]
-                      [ LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind_marker"><code class="xref docutils literal"><span class="pre">bind_marker</span></code></a>) ]
-                      [ ALLOW FILTERING ]
-<strong id="grammar-token-select_clause">select_clause   </strong> ::=  <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal"><span class="pre">selector</span></code></a> [ AS <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> ] ( ',' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal"><span class="pre">selector</span></code></a> [ AS <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> ] )
-<strong id="grammar-token-selector">selector        </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a>
-                      | <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>
-                      | CAST '(' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal"><span class="pre">selector</span></code></a> AS <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> ')'
-                      | <a class="reference internal" href="functions.html#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a> '(' [ <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal"><span class="pre">selector</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal"><span class="pre">selector</span></code></a> )* ] ')'
-                      | COUNT '(' '*' ')'
-<strong id="grammar-token-where_clause">where_clause    </strong> ::=  <a class="reference internal" href="#grammar-token-relation"><code class="xref docutils literal"><span class="pre">relation</span></code></a> ( AND <a class="reference internal" href="#grammar-token-relation"><code class="xref docutils literal"><span class="pre">relation</span></code></a> )*
-<strong id="grammar-token-relation">relation        </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>
-                      '(' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal"><span class="pre">operator</span></code></a> <a class="reference internal" href="types.html#grammar-token-tuple_literal"><code class="xref docutils literal"><span class="pre">tuple_literal</span></code></a>
-                      TOKEN '(' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>
-<strong id="grammar-token-operator">operator        </strong> ::=  '=' | '&lt;' | '&gt;' | '&lt;=' | '&gt;=' | '!=' | IN | CONTAINS | CONTAINS KEY
-<strong id="grammar-token-group_by_clause">group_by_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )*
-<strong id="grammar-token-ordering_clause">ordering_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> [ ASC | DESC ] ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> [ ASC | DESC ] )*
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="k">IN</span> <span class="p">(</span><span class="mf">199</span><span class="p">,</span> <span class="mf">200</span><span class="p">,</span> <span class="mf">207</span><span class="p">);</span>
-<span class="k">SELECT</span> <span class="k">JSON</span> <span class="n">name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="mf">199</span><span class="p">;</span>
-<span class="k">SELECT</span> <span class="n">name</span> <span class="k">AS</span> <span class="n">user_name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">AS</span> <span class="n">user_occupation</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
-
-<span class="k">SELECT</span> <span class="nb">time</span><span class="p">,</span> <span class="n">value</span>
-<span class="k">FROM</span> <span class="n">events</span>
-<span class="k">WHERE</span> <span class="n">event_type</span> <span class="o">=</span> <span class="s1">&#39;myEvent&#39;</span>
-  <span class="k">AND</span> <span class="nb">time</span> <span class="o">&gt;</span> <span class="s1">&#39;2011-02-03&#39;</span>
-  <span class="k">AND</span> <span class="nb">time</span> <span class="o">&lt;=</span> <span class="s1">&#39;2012-01-01&#39;</span>
-
-<span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">AS</span> <span class="n">user_count</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">SELECT</span></code> statements reads one or more columns for one or more rows in a table. It returns a result-set of the rows
-matching the request, where each row contains the values for the selection corresponding to the query. Additionally,
-<a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">functions</span></a> including <a class="reference internal" href="functions.html#aggregate-functions"><span class="std std-ref">aggregation</span></a> ones can be applied to the result.</p>
-<p>A <code class="docutils literal"><span class="pre">SELECT</span></code> statement contains at least a <a class="reference internal" href="#selection-clause"><span class="std std-ref">selection clause</span></a> and the name of the table on which
-the selection is on (note that CQL does <strong>not</strong> joins or sub-queries and thus a select statement only apply to a single
-table). In most case, a select will also have a <a class="reference internal" href="#where-clause"><span class="std std-ref">where clause</span></a> and it can optionally have additional
-clauses to <a class="reference internal" href="#ordering-clause"><span class="std std-ref">order</span></a> or <a class="reference internal" href="#limit-clause"><span class="std std-ref">limit</span></a> the results. Lastly, <a class="reference internal" href="#allow-filtering"><span class="std std-ref">queries that require
-filtering</span></a> can be allowed if the <code class="docutils literal"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> flag is provided.</p>
-<div class="section" id="selection-clause">
-<span id="id2"></span><h3>Selection clause<a class="headerlink" href="#selection-clause" title="Permalink to this headline">¶</a></h3>
-<p>The <a class="reference internal" href="#grammar-token-select_clause"><code class="xref std std-token docutils literal"><span class="pre">select_clause</span></code></a> determines which columns needs to be queried and returned in the result-set, as well as any
-transformation to apply to this result before returning. It consists of a comma-separated list of <em>selectors</em> or,
-alternatively, of the wildcard character (<code class="docutils literal"><span class="pre">*</span></code>) to select all the columns defined in the table.</p>
-<div class="section" id="selectors">
-<h4>Selectors<a class="headerlink" href="#selectors" title="Permalink to this headline">¶</a></h4>
-<p>A <a class="reference internal" href="#grammar-token-selector"><code class="xref std std-token docutils literal"><span class="pre">selector</span></code></a> can be one of:</p>
-<ul class="simple">
-<li>A column name of the table selected, to retrieve the values for that column.</li>
-<li>A term, which is usually used nested inside other selectors like functions (if a term is selected directly, then the
-corresponding column of the result-set will simply have the value of this term for every row returned).</li>
-<li>A casting, which allows to convert a nested selector to a (compatible) type.</li>
-<li>A function call, where the arguments are selector themselves. See the section on <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">functions</span></a> for
-more details.</li>
-<li>The special call <code class="docutils literal"><span class="pre">COUNT(*)</span></code> to the <a class="reference internal" href="functions.html#count-function"><span class="std std-ref">COUNT function</span></a>, which counts all non-null results.</li>
-</ul>
-</div>
-<div class="section" id="aliases">
-<h4>Aliases<a class="headerlink" href="#aliases" title="Permalink to this headline">¶</a></h4>
-<p>Every <em>top-level</em> selector can also be aliased (using <cite>AS</cite>). If so, the name of the corresponding column in the result
-set will be that of the alias. For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="c1">// Without alias</span>
-<span class="k">SELECT</span> <span class="n">intAsBlob</span><span class="p">(</span><span class="mf">4</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
-
-<span class="c1">//  intAsBlob(4)</span>
-<span class="c1">// --------------</span>
-<span class="c1">//  0x00000004</span>
-
-<span class="c1">// With alias</span>
-<span class="k">SELECT</span> <span class="n">intAsBlob</span><span class="p">(</span><span class="mf">4</span><span class="p">)</span> <span class="k">AS</span> <span class="n">four</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
-
-<span class="c1">//  four</span>
-<span class="c1">// ------------</span>
-<span class="c1">//  0x00000004</span>
-</pre></div>
-</div>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Currently, aliases aren&#8217;t recognized anywhere else in the statement where they are used (not in the <code class="docutils literal"><span class="pre">WHERE</span></code>
-clause, not in the <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause, ...). You must use the orignal column name instead.</p>
-</div>
-</div>
-<div class="section" id="writetime-and-ttl-function">
-<h4><code class="docutils literal"><span class="pre">WRITETIME</span></code> and <code class="docutils literal"><span class="pre">TTL</span></code> function<a class="headerlink" href="#writetime-and-ttl-function" title="Permalink to this headline">¶</a></h4>
-<p>Selection supports two special functions (that aren&#8217;t allowed anywhere else): <code class="docutils literal"><span class="pre">WRITETIME</span></code> and <code class="docutils literal"><span class="pre">TTL</span></code>. Both function
-take only one argument and that argument <em>must</em> be a column name (so for instance <code class="docutils literal"><span class="pre">TTL(3)</span></code> is invalid).</p>
-<p>Those functions allow to retrieve meta-information that are stored internally for each column, namely:</p>
-<ul class="simple">
-<li>the timestamp of the value of the column for <code class="docutils literal"><span class="pre">WRITETIME</span></code>.</li>
-<li>the remaining time to live (in seconds) for the value of the column if it set to expire (and <code class="docutils literal"><span class="pre">null</span></code> otherwise).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="the-where-clause">
-<span id="where-clause"></span><h3>The <code class="docutils literal"><span class="pre">WHERE</span></code> clause<a class="headerlink" href="#the-where-clause" title="Permalink to this headline">¶</a></h3>
-<p>The <code class="docutils literal"><span class="pre">WHERE</span></code> clause specifies which rows must be queried. It is composed of relations on the columns that are part of
-the <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> and/or have a <a class="reference external" href="#createIndexStmt">secondary index</a> defined on them.</p>
-<p>Not all relations are allowed in a query. For instance, non-equal relations (where <code class="docutils literal"><span class="pre">IN</span></code> is considered as an equal
-relation) on a partition key are not supported (but see the use of the <code class="docutils literal"><span class="pre">TOKEN</span></code> method below to do non-equal queries on
-the partition key). Moreover, for a given partition key, the clustering columns induce an ordering of rows and relations
-on them is restricted to the relations that allow to select a <strong>contiguous</strong> (for the ordering) set of rows. For
-instance, given:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">posts</span> <span class="p">(</span>
-    <span class="n">userid</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">blog_title</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">posted_at</span> <span class="nb">timestamp</span><span class="p">,</span>
-    <span class="n">entry_title</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">content</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">category</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span>
-<span class="p">)</span>
-</pre></div>
-</div>
-<p>The following query is allowed:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">entry_title</span><span class="p">,</span> <span class="n">content</span> <span class="k">FROM</span> <span class="n">posts</span>
- <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
-   <span class="k">AND</span> <span class="n">blog_title</span><span class="o">=</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span>
-   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;=</span> <span class="s1">&#39;2012-01-01&#39;</span> <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&lt;</span> <span class="s1">&#39;2012-01-31&#39;</span>
-</pre></div>
-</div>
-<p>But the following one is not, as it does not select a contiguous set of rows (and we suppose no secondary indexes are
-set):</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="c1">// Needs a blog_title to be set to select ranges of posted_at</span>
-<span class="k">SELECT</span> <span class="n">entry_title</span><span class="p">,</span> <span class="n">content</span> <span class="k">FROM</span> <span class="n">posts</span>
- <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
-   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;=</span> <span class="s1">&#39;2012-01-01&#39;</span> <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&lt;</span> <span class="s1">&#39;2012-01-31&#39;</span>
-</pre></div>
-</div>
-<p>When specifying relations, the <code class="docutils literal"><span class="pre">TOKEN</span></code> function can be used on the <code class="docutils literal"><span class="pre">PARTITION</span> <span class="pre">KEY</span></code> column to query. In that case,
-rows will be selected based on the token of their <code class="docutils literal"><span class="pre">PARTITION_KEY</span></code> rather than on the value. Note that the token of a
-key depends on the partitioner in use, and that in particular the RandomPartitioner won&#8217;t yield a meaningful order. Also
-note that ordering partitioners always order token values by bytes (so even if the partition key is of type int,
-<code class="docutils literal"><span class="pre">token(-1)</span> <span class="pre">&gt;</span> <span class="pre">token(0)</span></code> in particular). Example:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
- <span class="k">WHERE</span> <span class="k">token</span><span class="p">(</span><span class="n">userid</span><span class="p">)</span> <span class="o">&gt;</span> <span class="k">token</span><span class="p">(</span><span class="s1">&#39;tom&#39;</span><span class="p">)</span> <span class="k">AND</span> <span class="k">token</span><span class="p">(</span><span class="n">userid</span><span class="p">)</span> <span class="o">&lt;</span> <span class="k">token</span><span class="p">(</span><span class="s1">&#39;bob&#39;</span><span class="p">)</span>
-</pre></div>
-</div>
-<p>Moreover, the <code class="docutils literal"><span class="pre">IN</span></code> relation is only allowed on the last column of the partition key and on the last column of the full
-primary key.</p>
-<p>It is also possible to “group” <code class="docutils literal"><span class="pre">CLUSTERING</span> <span class="pre">COLUMNS</span></code> together in a relation using the tuple notation. For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
- <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
-   <span class="k">AND</span> <span class="p">(</span><span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span> <span class="o">&gt;</span> <span class="p">(</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span><span class="p">,</span> <span class="s1">&#39;2012-01-01&#39;</span><span class="p">)</span>
-</pre></div>
-</div>
-<p>will request all rows that sorts after the one having “John&#8217;s Blog” as <code class="docutils literal"><span class="pre">blog_tile</span></code> and &#8216;2012-01-01&#8217; for <code class="docutils literal"><span class="pre">posted_at</span></code>
-in the clustering order. In particular, rows having a <code class="docutils literal"><span class="pre">post_at</span> <span class="pre">&lt;=</span> <span class="pre">'2012-01-01'</span></code> will be returned as long as their
-<code class="docutils literal"><span class="pre">blog_title</span> <span class="pre">&gt;</span> <span class="pre">'John''s</span> <span class="pre">Blog'</span></code>, which would not be the case for:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
- <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
-   <span class="k">AND</span> <span class="n">blog_title</span> <span class="o">&gt;</span> <span class="s1">&#39;John&#39;&#39;s Blog&#39;</span>
-   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;</span> <span class="s1">&#39;2012-01-01&#39;</span>
-</pre></div>
-</div>
-<p>The tuple notation may also be used for <code class="docutils literal"><span class="pre">IN</span></code> clauses on clustering columns:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
- <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
-   <span class="k">AND</span> <span class="p">(</span><span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span> <span class="k">IN</span> <span class="p">((</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span><span class="p">,</span> <span class="s1">&#39;2012-01-01&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Extreme Chess&#39;</span><span class="p">,</span> <span class="s1">&#39;2014-06-01&#39;</span><span class="p">))</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">CONTAINS</span></code> operator may only be used on collection columns (lists, sets, and maps). In the case of maps,
-<code class="docutils literal"><span class="pre">CONTAINS</span></code> applies to the map values. The <code class="docutils literal"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operator may only be used on map columns and applies to the
-map keys.</p>
-</div>
-<div class="section" id="grouping-results">
-<span id="group-by-clause"></span><h3>Grouping results<a class="headerlink" href="#grouping-results" title="Permalink to this headline">¶</a></h3>
-<p>The <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option allows to condense into a single row all selected rows that share the same values for a set
-of columns.</p>
-<p>Using the <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option, it is only possible to group rows at the partition key level or at a clustering column
-level. By consequence, the <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option only accept as arguments primary key column names in the primary key
-order. If a primary key column is restricted by an equality restriction it is not required to be present in the
-<code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause.</p>
-<p>Aggregate functions will produce a separate value for each group. If no <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause is specified,
-aggregates functions will produce a single value for all the rows.</p>
-<p>If a column is selected without an aggregate function, in a statement with a <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code>, the first value encounter
-in each group will be returned.</p>
-</div>
-<div class="section" id="ordering-results">
-<span id="ordering-clause"></span><h3>Ordering results<a class="headerlink" href="#ordering-results" title="Permalink to this headline">¶</a></h3>
-<p>The <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause allows to select the order of the returned results. It takes as argument a list of column names
-along with the order for the column (<code class="docutils literal"><span class="pre">ASC</span></code> for ascendant and <code class="docutils literal"><span class="pre">DESC</span></code> for descendant, omitting the order being
-equivalent to <code class="docutils literal"><span class="pre">ASC</span></code>). Currently the possible orderings are limited by the <a class="reference internal" href="ddl.html#clustering-order"><span class="std std-ref">clustering order</span></a>
-defined on the table:</p>
-<ul class="simple">
-<li>if the table has been defined without any specific <code class="docutils literal"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code>, then then allowed orderings are the order
-induced by the clustering columns and the reverse of that one.</li>
-<li>otherwise, the orderings allowed are the order of the <code class="docutils literal"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option and the reversed one.</li>
-</ul>
-</div>
-<div class="section" id="limiting-results">
-<span id="limit-clause"></span><h3>Limiting results<a class="headerlink" href="#limiting-results" title="Permalink to this headline">¶</a></h3>
-<p>The <code class="docutils literal"><span class="pre">LIMIT</span></code> option to a <code class="docutils literal"><span class="pre">SELECT</span></code> statement limits the number of rows returned by a query, while the <code class="docutils literal"><span class="pre">PER</span> <span class="pre">PARTITION</span>
-<span class="pre">LIMIT</span></code> option limits the number of rows returned for a given partition by the query. Note that both type of limit can
-used in the same statement.</p>
-</div>
-<div class="section" id="allowing-filtering">
-<span id="allow-filtering"></span><h3>Allowing filtering<a class="headerlink" href="#allowing-filtering" title="Permalink to this headline">¶</a></h3>
-<p>By default, CQL only allows select queries that don&#8217;t involve “filtering” server side, i.e. queries where we know that
-all (live) record read will be returned (maybe partly) in the result set. The reasoning is that those “non filtering”
-queries have predictable performance in the sense that they will execute in a time that is proportional to the amount of
-data <strong>returned</strong> by the query (which can be controlled through <code class="docutils literal"><span class="pre">LIMIT</span></code>).</p>
-<p>The <code class="docutils literal"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> option allows to explicitly allow (some) queries that require filtering. Please note that a
-query using <code class="docutils literal"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> may thus have unpredictable performance (for the definition above), i.e. even a query
-that selects a handful of records <strong>may</strong> exhibit performance that depends on the total amount of data stored in the
-cluster.</p>
-<p>For instance, considering the following table holding user profiles with their year of birth (with a secondary index on
-it) and country of residence:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
-    <span class="n">username</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">firstname</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">lastname</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">birth_year</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">country</span> <span class="nb">text</span>
-<span class="p">)</span>
-
-<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span><span class="p">(</span><span class="n">birth_year</span><span class="p">);</span>
-</pre></div>
-</div>
-<p>Then the following queries are valid:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
-<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>because in both case, Cassandra guarantees that these queries performance will be proportional to the amount of data
-returned. In particular, if no users are born in 1981, then the second query performance will not depend of the number
-of user profile stored in the database (not directly at least: due to secondary index implementation consideration, this
-query may still depend on the number of node in the cluster, which indirectly depends on the amount of data stored.
-Nevertheless, the number of nodes will always be multiple number of magnitude lower than the number of user profile
-stored). Of course, both query may return very large result set in practice, but the amount of data returned can always
-be controlled by adding a <code class="docutils literal"><span class="pre">LIMIT</span></code>.</p>
-<p>However, the following query will be rejected:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span> <span class="k">AND</span> <span class="n">country</span> <span class="o">=</span> <span class="s1">&#39;FR&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>because Cassandra cannot guarantee that it won&#8217;t have to scan large amount of data even if the result to those query is
-small. Typically, it will scan all the index entries for users born in 1981 even if only a handful are actually from
-France. However, if you “know what you are doing”, you can force the execution of this query by using <code class="docutils literal"><span class="pre">ALLOW</span>
-<span class="pre">FILTERING</span></code> and so the following query is valid:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span> <span class="k">AND</span> <span class="n">country</span> <span class="o">=</span> <span class="s1">&#39;FR&#39;</span> <span class="k">ALLOW</span> <span class="k">FILTERING</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-</div>
-<div class="section" id="insert">
-<span id="insert-statement"></span><h2>INSERT<a class="headerlink" href="#insert" title="Permalink to this headline">¶</a></h2>
-<p>Inserting data for a row is done using an <code class="docutils literal"><span class="pre">INSERT</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-insert_statement">insert_statement</strong> ::=  INSERT INTO <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a> ( <a class="reference internal" href="#grammar-token-names_values"><code class="xref docutils literal"><span class="pre">names_values</span></code></a> | <a class="reference internal" href="#grammar-token-json_clause"><code class="xref docutils literal"><span class="pre">json_clause</span></code></a> )
-                      [ IF NOT EXISTS ]
-                      [ USING <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> )* ]
-<strong id="grammar-token-names_values">names_values    </strong> ::=  <a class="reference internal" href="#grammar-token-names"><code class="xref docutils literal"><span class="pre">names</span></code></a> VALUES <a class="reference internal" href="types.html#grammar-token-tuple_literal"><code class="xref docutils literal"><span class="pre">tuple_literal</span></code></a>
-<strong id="grammar-token-json_clause">json_clause     </strong> ::=  JSON <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a> [ DEFAULT ( NULL | UNSET ) ]
-<strong id="grammar-token-names">names           </strong> ::=  '(' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )* ')'
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">NerdMovies</span> <span class="p">(</span><span class="n">movie</span><span class="p">,</span> <span class="n">director</span><span class="p">,</span> <span class="n">main_actor</span><span class="p">,</span> <span class="n">year</span><span class="p">)</span>
-                <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;Serenity&#39;</span><span class="p">,</span> <span class="s1">&#39;Joss Whedon&#39;</span><span class="p">,</span> <span class="s1">&#39;Nathan Fillion&#39;</span><span class="p">,</span> <span class="mf">2005</span><span class="p">)</span>
-      <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">86400</span><span class="p">;</span>
-
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">NerdMovies</span> <span class="k">JSON</span> <span class="s1">&#39;{&quot;movie&quot;: &quot;Serenity&quot;,</span>
-<span class="s1">                              &quot;director&quot;: &quot;Joss Whedon&quot;,</span>
-<span class="s1">                              &quot;year&quot;: 2005}&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">INSERT</span></code> statement writes one or more columns for a given row in a table. Note that since a row is identified by
-its <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>, at least the columns composing it must be specified. The list of columns to insert to must be
-supplied when using the <code class="docutils literal"><span class="pre">VALUES</span></code> syntax. When using the <code class="docutils literal"><span class="pre">JSON</span></code> syntax, they are optional. See the
-section on <a class="reference internal" href="json.html#cql-json"><span class="std std-ref">JSON support</span></a> for more detail.</p>
-<p>Note that unlike in SQL, <code class="docutils literal"><span class="pre">INSERT</span></code> does not check the prior existence of the row by default: the row is created if none
-existed before, and updated otherwise. Furthermore, there is no mean to know which of creation or update happened.</p>
-<p>It is however possible to use the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition to only insert if the row does not exist prior to the
-insertion. But please note that using <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> will incur a non negligible performance cost (internally, Paxos
-will be used) so this should be used sparingly.</p>
-<p>All updates for an <code class="docutils literal"><span class="pre">INSERT</span></code> are applied atomically and in isolation.</p>
-<p>Please refer to the <a class="reference internal" href="#update-parameters"><span class="std std-ref">UPDATE</span></a> section for informations on the <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref std std-token docutils literal"><span class="pre">update_parameter</span></code></a>.</p>
-<p>Also note that <code class="docutils literal"><span class="pre">INSERT</span></code> does not support counters, while <code class="docutils literal"><span class="pre">UPDATE</span></code> does.</p>
-</div>
-<div class="section" id="update">
-<span id="update-statement"></span><h2>UPDATE<a class="headerlink" href="#update" title="Permalink to this headline">¶</a></h2>
-<p>Updating a row is done using an <code class="docutils literal"><span class="pre">UPDATE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-update_statement">update_statement</strong> ::=  UPDATE <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-                      [ USING <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> )* ]
-                      SET <a class="reference internal" href="#grammar-token-assignment"><code class="xref docutils literal"><span class="pre">assignment</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-assignment"><code class="xref docutils literal"><span class="pre">assignment</span></code></a> )*
-                      WHERE <a class="reference internal" href="#grammar-token-where_clause"><code class="xref docutils literal"><span class="pre">where_clause</span></code></a>
-                      [ IF ( EXISTS | <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal"><span class="pre">condition</span></code></a> ( AND <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal"><span class="pre">condition</span></code></a> )*) ]
-<strong id="grammar-token-update_parameter">update_parameter</strong> ::=  ( TIMESTAMP | TTL ) ( <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind_marker"><code class="xref docutils literal"><span class="pre">bind_marker</span></code></a> )
-<strong id="grammar-token-assignment">assignment      </strong> ::=  <a class="reference internal" href="#grammar-token-simple_selection"><code class="xref docutils literal"><span class="pre">simple_selection</span></code></a> '=' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>
-                     | <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> '=' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( '+' | '-' ) <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>
-                     | <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> '=' <a class="reference internal" href="types.html#grammar-token-list_literal"><code class="xref docutils literal"><span class="pre">list_literal</span></code></a> '+' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a>
-<strong id="grammar-token-simple_selection">simple_selection</strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a>
-                     | <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> '[' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> ']'
-                     | <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> '.' `field_name
-<strong id="grammar-token-condition">condition       </strong> ::=  <a class="reference internal" href="#grammar-token-simple_selection"><code class="xref docutils literal"><span class="pre">simple_selection</span></code></a> <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">NerdMovies</span> <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">400</span>
-   <span class="k">SET</span> <span class="n">director</span>   <span class="o">=</span> <span class="s1">&#39;Joss Whedon&#39;</span><span class="p">,</span>
-       <span class="n">main_actor</span> <span class="o">=</span> <span class="s1">&#39;Nathan Fillion&#39;</span><span class="p">,</span>
-       <span class="n">year</span>       <span class="o">=</span> <span class="mf">2005</span>
- <span class="k">WHERE</span> <span class="n">movie</span> <span class="o">=</span> <span class="s1">&#39;Serenity&#39;</span><span class="p">;</span>
-
-<span class="k">UPDATE</span> <span class="n">UserActions</span>
-   <span class="k">SET</span> <span class="n">total</span> <span class="o">=</span> <span class="n">total</span> <span class="o">+</span> <span class="mf">2</span>
-   <span class="k">WHERE</span> <span class="k">user</span> <span class="o">=</span> <span class="m">B70DE1D0-9908-4AE3-BE34-5573E5B09F14</span>
-     <span class="k">AND</span> <span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;click&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">UPDATE</span></code> statement writes one or more columns for a given row in a table. The <a class="reference internal" href="#grammar-token-where_clause"><code class="xref std std-token docutils literal"><span class="pre">where_clause</span></code></a> is used to
-select the row to update and must include all columns composing the <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>. Non primary key columns are then
-set using the <code class="docutils literal"><span class="pre">SET</span></code> keyword.</p>
-<p>Note that unlike in SQL, <code class="docutils literal"><span class="pre">UPDATE</span></code> does not check the prior existence of the row by default (except through <code class="docutils literal"><span class="pre">IF</span></code>, see
-below): the row is created if none existed before, and updated otherwise. Furthermore, there are no means to know
-whether a creation or update occurred.</p>
-<p>It is however possible to use the conditions on some columns through <code class="docutils literal"><span class="pre">IF</span></code>, in which case the row will not be updated
-unless the conditions are met. But, please note that using <code class="docutils literal"><span class="pre">IF</span></code> conditions will incur a non-negligible performance
-cost (internally, Paxos will be used) so this should be used sparingly.</p>
-<p>In an <code class="docutils literal"><span class="pre">UPDATE</span></code> statement, all updates within the same partition key are applied atomically and in isolation.</p>
-<p>Regarding the <a class="reference internal" href="#grammar-token-assignment"><code class="xref std std-token docutils literal"><span class="pre">assignment</span></code></a>:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">c</span> <span class="pre">=</span> <span class="pre">c</span> <span class="pre">+</span> <span class="pre">3</span></code> is used to increment/decrement counters. The column name after the &#8216;=&#8217; sign <strong>must</strong> be the same than
-the one before the &#8216;=&#8217; sign. Note that increment/decrement is only allowed on counters, and are the <em>only</em> update
-operations allowed on counters. See the section on <a class="reference internal" href="types.html#counters"><span class="std std-ref">counters</span></a> for details.</li>
-<li><code class="docutils literal"><span class="pre">id</span> <span class="pre">=</span> <span class="pre">id</span> <span class="pre">+</span> <span class="pre">&lt;some-collection&gt;</span></code> and <code class="docutils literal"><span class="pre">id[value1]</span> <span class="pre">=</span> <span class="pre">value2</span></code> are for collections, see the <a class="reference internal" href="types.html#collections"><span class="std std-ref">relevant section</span></a> for details.</li>
-<li><code class="docutils literal"><span class="pre">id.field</span> <span class="pre">=</span> <span class="pre">3</span></code> is for setting the value of a field on a non-frozen user-defined types. see the <a class="reference internal" href="types.html#udts"><span class="std std-ref">relevant section</span></a> for details.</li>
-</ul>
-<div class="section" id="update-parameters">
-<span id="id3"></span><h3>Update parameters<a class="headerlink" href="#update-parameters" title="Permalink to this headline">¶</a></h3>
-<p>The <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code> (and <code class="docutils literal"><span class="pre">DELETE</span></code> and <code class="docutils literal"><span class="pre">BATCH</span></code> for the <code class="docutils literal"><span class="pre">TIMESTAMP</span></code>) statements support the following
-parameters:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">TIMESTAMP</span></code>: sets the timestamp for the operation. If not specified, the coordinator will use the current time (in
-microseconds) at the start of statement execution as the timestamp. This is usually a suitable default.</li>
-<li><code class="docutils literal"><span class="pre">TTL</span></code>: specifies an optional Time To Live (in seconds) for the inserted values. If set, the inserted values are
-automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
-the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
-is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
-default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of <code class="docutils literal"><span class="pre">null</span></code> is equivalent
-to inserting with a TTL of 0.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="delete">
-<span id="delete-statement"></span><h2>DELETE<a class="headerlink" href="#delete" title="Permalink to this headline">¶</a></h2>
-<p>Deleting rows or parts of rows uses the <code class="docutils literal"><span class="pre">DELETE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-delete_statement">delete_statement</strong> ::=  DELETE [ <a class="reference internal" href="#grammar-token-simple_selection"><code class="xref docutils literal"><span class="pre">simple_selection</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-simple_selection"><code class="xref docutils literal"><span class="pre">simple_selection</span></code></a> ) ]
-                      FROM <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-                      [ USING <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> )* ]
-                      WHERE <a class="reference internal" href="#grammar-token-where_clause"><code class="xref docutils literal"><span class="pre">where_clause</span></code></a>
-                      [ IF ( EXISTS | <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal"><span class="pre">condition</span></code></a> ( AND <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal"><span class="pre">condition</span></code></a> )*) ]
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="k">FROM</span> <span class="n">NerdMovies</span> <span class="k">USING</span> <span class="nb">TIMESTAMP</span> <span class="mf">1240003134</span>
- <span class="k">WHERE</span> <span class="n">movie</span> <span class="o">=</span> <span class="s1">&#39;Serenity&#39;</span><span class="p">;</span>
-
-<span class="k">DELETE</span> <span class="n">phone</span> <span class="k">FROM</span> <span class="k">Users</span>
- <span class="k">WHERE</span> <span class="n">userid</span> <span class="k">IN</span> <span class="p">(</span><span class="m">C73DE1D3-AF08-40F3-B124-3FF3E5109F22</span><span class="p">,</span> <span class="m">B70DE1D0-9908-4AE3-BE34-5573E5B09F14</span><span class="p">);</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">DELETE</span></code> statement deletes columns and rows. If column names are provided directly after the <code class="docutils literal"><span class="pre">DELETE</span></code> keyword,
-only those columns are deleted from the row indicated by the <code class="docutils literal"><span class="pre">WHERE</span></code> clause. Otherwise, whole rows are removed.</p>
-<p>The <code class="docutils literal"><span class="pre">WHERE</span></code> clause specifies which rows are to be deleted. Multiple rows may be deleted with one statement by using an
-<code class="docutils literal"><span class="pre">IN</span></code> operator. A range of rows may be deleted using an inequality operator (such as <code class="docutils literal"><span class="pre">&gt;=</span></code>).</p>
-<p><code class="docutils literal"><span class="pre">DELETE</span></code> supports the <code class="docutils literal"><span class="pre">TIMESTAMP</span></code> option with the same semantics as in <a class="reference internal" href="#update-parameters"><span class="std std-ref">updates</span></a>.</p>
-<p>In a <code class="docutils literal"><span class="pre">DELETE</span></code> statement, all deletions within the same partition key are applied atomically and in isolation.</p>
-<p>A <code class="docutils literal"><span class="pre">DELETE</span></code> operation can be conditional through the use of an <code class="docutils literal"><span class="pre">IF</span></code> clause, similar to <code class="docutils literal"><span class="pre">UPDATE</span></code> and <code class="docutils literal"><span class="pre">INSERT</span></code>
-statements. However, as with <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">UPDATE</span></code> statements, this will incur a non-negligible performance cost
-(internally, Paxos will be used) and so should be used sparingly.</p>
-</div>
-<div class="section" id="batch">
-<span id="batch-statement"></span><h2>BATCH<a class="headerlink" href="#batch" title="Permalink to this headline">¶</a></h2>
-<p>Multiple <code class="docutils literal"><span class="pre">INSERT</span></code>, <code class="docutils literal"><span class="pre">UPDATE</span></code> and <code class="docutils literal"><span class="pre">DELETE</span></code> can be executed in a single statement by grouping them through a
-<code class="docutils literal"><span class="pre">BATCH</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-batch_statement">batch_statement       </strong> ::=  BEGIN [ UNLOGGED | COUNTER ] BATCH
-                            [ USING <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update_parameter"><code class="xref docutils literal"><span class="pre">update_parameter</span></code></a> )* ]
-                            <a class="reference internal" href="#grammar-token-modification_statement"><code class="xref docutils literal"><span class="pre">modification_statement</span></code></a> ( ';' <a class="reference internal" href="#grammar-token-modification_statement"><code class="xref docutils literal"><span class="pre">modification_statement</span></code></a> )*
-                            APPLY BATCH
-<strong id="grammar-token-modification_statement">modification_statement</strong> ::=  <a class="reference internal" href="#grammar-token-insert_statement"><code class="xref docutils literal"><span class="pre">insert_statement</span></code></a> | <a class="reference internal" href="#grammar-token-update_statement"><code class="xref docutils literal"><span class="pre">update_statement</span></code></a> | <a class="reference internal" href="#grammar-token-delete_statement"><code class="xref docutils literal"><span class="pre">delete_statement</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">BEGIN</span> <span class="k">BATCH</span>
-   <span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="k">password</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;user2&#39;</span><span class="p">,</span> <span class="s1">&#39;ch@ngem3b&#39;</span><span class="p">,</span> <span class="s1">&#39;second user&#39;</span><span class="p">);</span>
-   <span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="k">password</span> <span class="o">=</span> <span class="s1">&#39;ps22dhds&#39;</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;user3&#39;</span><span class="p">;</span>
-   <span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="k">password</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;user4&#39;</span><span class="p">,</span> <span class="s1">&#39;ch@ngem3c&#39;</span><span class="p">);</span>
-   <span class="k">DELETE</span> <span class="n">name</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;user1&#39;</span><span class="p">;</span>
-<span class="k">APPLY</span> <span class="k">BATCH</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">BATCH</span></code> statement group multiple modification statements (insertions/updates and deletions) into a single
-statement. It serves several purposes:</p>
-<ul class="simple">
-<li>It saves network round-trips between the client and the server (and sometimes between the server coordinator and the
-replicas) when batching multiple updates.</li>
-<li>All updates in a <code class="docutils literal"><span class="pre">BATCH</span></code> belonging to a given partition key are performed in isolation.</li>
-<li>By default, all operations in the batch are performed as <em>logged</em>, to ensure all mutations eventually complete (or
-none will). See the notes on <a class="reference internal" href="#unlogged-batches"><span class="std std-ref">UNLOGGED batches</span></a> for more details.</li>
-</ul>
-<p>Note that:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">BATCH</span></code> statements may only contain <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">DELETE</span></code> statements (not other batches for instance).</li>
-<li>Batches are <em>not</em> a full analogue for SQL transactions.</li>
-<li>If a timestamp is not specified for each operation, then all operations will be applied with the same timestamp
-(either one generated automatically, or the timestamp provided at the batch level). Due to Cassandra&#8217;s conflict
-resolution procedure in the case of <a class="reference external" href="http://wiki.apache.org/cassandra/FAQ#clocktie">timestamp ties</a>, operations may
-be applied in an order that is different from the order they are listed in the <code class="docutils literal"><span class="pre">BATCH</span></code> statement. To force a
-particular operation ordering, you must specify per-operation timestamps.</li>
-</ul>
-<div class="section" id="unlogged-batches">
-<span id="id4"></span><h3><code class="docutils literal"><span class="pre">UNLOGGED</span></code> batches<a class="headerlink" href="#unlogged-batches" title="Permalink to this headline">¶</a></h3>
-<p>By default, Cassandra uses a batch log to ensure all operations in a batch eventually complete or none will (note
-however that operations are only isolated within a single partition).</p>
-<p>There is a performance penalty for batch atomicity when a batch spans multiple partitions. If you do not want to incur
-this penalty, you can tell Cassandra to skip the batchlog with the <code class="docutils literal"><span class="pre">UNLOGGED</span></code> option. If the <code class="docutils literal"><span class="pre">UNLOGGED</span></code> option is
-used, a failed batch might leave the patch only partly applied.</p>
-</div>
-<div class="section" id="counter-batches">
-<h3><code class="docutils literal"><span class="pre">COUNTER</span></code> batches<a class="headerlink" href="#counter-batches" title="Permalink to this headline">¶</a></h3>
-<p>Use the <code class="docutils literal"><span class="pre">COUNTER</span></code> option for batched counter updates. Unlike other
-updates in Cassandra, counter updates are not idempotent.</p>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="indexes.html" class="btn btn-default pull-right " role="button" title="Secondary Indexes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="ddl.html" class="btn btn-default" role="button" title="Data Definition" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/functions.html b/src/doc/3.10/cql/functions.html
deleted file mode 100644
index e311146..0000000
--- a/src/doc/3.10/cql/functions.html
+++ /dev/null
@@ -1,668 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Functions"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="JSON Support" href="json.html"/>
-      <link rel="prev" title="Security" href="security.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Functions</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#scalar-functions">Scalar functions</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#aggregate-functions">Aggregate functions</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <span class="target" id="cql-functions"></span><div class="section" id="functions">
-<span id="native-functions"></span><span id="udfs"></span><h1>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h1>
-<p>CQL supports 2 main categories of functions:</p>
-<ul class="simple">
-<li>the <a class="reference internal" href="#scalar-functions"><span class="std std-ref">scalar functions</span></a>, which simply take a number of values and produce an output with it.</li>
-<li>the <a class="reference internal" href="#aggregate-functions"><span class="std std-ref">aggregate functions</span></a>, which are used to aggregate multiple rows results from a
-<code class="docutils literal"><span class="pre">SELECT</span></code> statement.</li>
-</ul>
-<p>In both cases, CQL provides a number of native &#8220;hard-coded&#8221; functions as well as the ability to create new user-defined
-functions.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">By default, the use of user-defined functions is disabled by default for security concerns (even when
-enabled, the execution of user-defined functions is sandboxed and a &#8220;rogue&#8221; function should not be allowed to do
-evil, but no sandbox is perfect so using user-defined functions is opt-in). See the <code class="docutils literal"><span class="pre">enable_user_defined_functions</span></code>
-in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> to enable them.</p>
-</div>
-<p>A function is identifier by its name:</p>
-<pre>
-<strong id="grammar-token-function_name">function_name</strong> ::=  [ <a class="reference internal" href="ddl.html#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="ddl.html#grammar-token-name"><code class="xref docutils literal"><span class="pre">name</span></code></a>
-</pre>
-<div class="section" id="scalar-functions">
-<span id="id1"></span><h2>Scalar functions<a class="headerlink" href="#scalar-functions" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="scalar-native-functions">
-<span id="id2"></span><h3>Native functions<a class="headerlink" href="#scalar-native-functions" title="Permalink to this headline">¶</a></h3>
-<div class="section" id="cast">
-<h4>Cast<a class="headerlink" href="#cast" title="Permalink to this headline">¶</a></h4>
-<p>The <code class="docutils literal"><span class="pre">cast</span></code> function can be used to converts one native datatype to another.</p>
-<p>The following table describes the conversions supported by the <code class="docutils literal"><span class="pre">cast</span></code> function. Cassandra will silently ignore any
-cast converting a datatype into its own datatype.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="13%" />
-<col width="87%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">From</th>
-<th class="head">To</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ascii</span></code></td>
-<td><code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">bigint</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>, <code class="docutils literal"><span class="pre">text</span></code>,
-<code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">boolean</span></code></td>
-<td><code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">counter</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>,
-<code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">date</span></code></td>
-<td><code class="docutils literal"><span class="pre">timestamp</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">decimal</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>, <code class="docutils literal"><span class="pre">text</span></code>,
-<code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">double</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>, <code class="docutils literal"><span class="pre">text</span></code>,
-<code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">float</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>, <code class="docutils literal"><span class="pre">text</span></code>,
-<code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">inet</span></code></td>
-<td><code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">int</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>, <code class="docutils literal"><span class="pre">text</span></code>,
-<code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">smallint</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>, <code class="docutils literal"><span class="pre">text</span></code>,
-<code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">time</span></code></td>
-<td><code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">timestamp</span></code></td>
-<td><code class="docutils literal"><span class="pre">date</span></code>, <code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td><code class="docutils literal"><span class="pre">timestamp</span></code>, <code class="docutils literal"><span class="pre">date</span></code>, <code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">tinyint</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">varint</span></code>,
-<code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">uuid</span></code></td>
-<td><code class="docutils literal"><span class="pre">text</span></code>, <code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">varint</span></code></td>
-<td><code class="docutils literal"><span class="pre">tinyint</span></code>, <code class="docutils literal"><span class="pre">smallint</span></code>, <code class="docutils literal"><span class="pre">int</span></code>, <code class="docutils literal"><span class="pre">bigint</span></code>, <code class="docutils literal"><span class="pre">float</span></code>, <code class="docutils literal"><span class="pre">double</span></code>, <code class="docutils literal"><span class="pre">decimal</span></code>, <code class="docutils literal"><span class="pre">text</span></code>,
-<code class="docutils literal"><span class="pre">varchar</span></code></td>
-</tr>
-</tbody>
-</table>
-<p>The conversions rely strictly on Java&#8217;s semantics. For example, the double value 1 will be converted to the text value
-&#8216;1.0&#8217;. For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">avg</span><span class="p">(</span><span class="k">cast</span><span class="p">(</span><span class="k">count</span> <span class="k">as</span> <span class="nb">double</span><span class="p">))</span> <span class="k">FROM</span> <span class="n">myTable</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="token">
-<h4>Token<a class="headerlink" href="#token" title="Permalink to this headline">¶</a></h4>
-<p>The <code class="docutils literal"><span class="pre">token</span></code> function allows to compute the token for a given partition key. The exact signature of the token function
-depends on the table concerned and of the partitioner used by the cluster.</p>
-<p>The type of the arguments of the <code class="docutils literal"><span class="pre">token</span></code> depend on the type of the partition key columns. The return type depend on
-the partitioner in use:</p>
-<ul class="simple">
-<li>For Murmur3Partitioner, the return type is <code class="docutils literal"><span class="pre">bigint</span></code>.</li>
-<li>For RandomPartitioner, the return type is <code class="docutils literal"><span class="pre">varint</span></code>.</li>
-<li>For ByteOrderedPartitioner, the return type is <code class="docutils literal"><span class="pre">blob</span></code>.</li>
-</ul>
-<p>For instance, in a cluster using the default Murmur3Partitioner, if a table is defined by:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
-    <span class="n">userid</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">username</span> <span class="nb">text</span><span class="p">,</span>
-<span class="p">)</span>
-</pre></div>
-</div>
-<p>then the <code class="docutils literal"><span class="pre">token</span></code> function will take a single argument of type <code class="docutils literal"><span class="pre">text</span></code> (in that case, the partition key is <code class="docutils literal"><span class="pre">userid</span></code>
-(there is no clustering columns so the partition key is the same than the primary key)), and the return type will be
-<code class="docutils literal"><span class="pre">bigint</span></code>.</p>
-</div>
-<div class="section" id="uuid">
-<h4>Uuid<a class="headerlink" href="#uuid" title="Permalink to this headline">¶</a></h4>
-<p>The <code class="docutils literal"><span class="pre">uuid</span></code> function takes no parameters and generates a random type 4 uuid suitable for use in <code class="docutils literal"><span class="pre">INSERT</span></code> or
-<code class="docutils literal"><span class="pre">UPDATE</span></code> statements.</p>
-</div>
-<div class="section" id="timeuuid-functions">
-<span id="id3"></span><h4>Timeuuid functions<a class="headerlink" href="#timeuuid-functions" title="Permalink to this headline">¶</a></h4>
-<div class="section" id="now">
-<h5><code class="docutils literal"><span class="pre">now</span></code><a class="headerlink" href="#now" title="Permalink to this headline">¶</a></h5>
-<p>The <code class="docutils literal"><span class="pre">now</span></code> function takes no arguments and generates, on the coordinator node, a new unique timeuuid (at the time where
-the statement using it is executed). Note that this method is useful for insertion but is largely non-sensical in
-<code class="docutils literal"><span class="pre">WHERE</span></code> clauses. For instance, a query of the form:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span> <span class="k">WHERE</span> <span class="n">t</span> <span class="o">=</span> <span class="n">now</span><span class="p">()</span>
-</pre></div>
-</div>
-<p>will never return any result by design, since the value returned by <code class="docutils literal"><span class="pre">now()</span></code> is guaranteed to be unique.</p>
-</div>
-<div class="section" id="mintimeuuid-and-maxtimeuuid">
-<h5><code class="docutils literal"><span class="pre">minTimeuuid</span></code> and <code class="docutils literal"><span class="pre">maxTimeuuid</span></code><a class="headerlink" href="#mintimeuuid-and-maxtimeuuid" title="Permalink to this headline">¶</a></h5>
-<p>The <code class="docutils literal"><span class="pre">minTimeuuid</span></code> (resp. <code class="docutils literal"><span class="pre">maxTimeuuid</span></code>) function takes a <code class="docutils literal"><span class="pre">timestamp</span></code> value <code class="docutils literal"><span class="pre">t</span></code> (which can be <cite>either a timestamp
-or a date string &lt;timestamps&gt;</cite>) and return a <em>fake</em> <code class="docutils literal"><span class="pre">timeuuid</span></code> corresponding to the <em>smallest</em> (resp. <em>biggest</em>)
-possible <code class="docutils literal"><span class="pre">timeuuid</span></code> having for timestamp <code class="docutils literal"><span class="pre">t</span></code>. So for instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span>
- <span class="k">WHERE</span> <span class="n">t</span> <span class="o">&gt;</span> <span class="n">maxTimeuuid</span><span class="p">(</span><span class="s1">&#39;2013-01-01 00:05+0000&#39;</span><span class="p">)</span>
-   <span class="k">AND</span> <span class="n">t</span> <span class="o">&lt;</span> <span class="n">minTimeuuid</span><span class="p">(</span><span class="s1">&#39;2013-02-02 10:00+0000&#39;</span><span class="p">)</span>
-</pre></div>
-</div>
-<p>will select all rows where the <code class="docutils literal"><span class="pre">timeuuid</span></code> column <code class="docutils literal"><span class="pre">t</span></code> is strictly older than <code class="docutils literal"><span class="pre">'2013-01-01</span> <span class="pre">00:05+0000'</span></code> but strictly
-younger than <code class="docutils literal"><span class="pre">'2013-02-02</span> <span class="pre">10:00+0000'</span></code>. Please note that <code class="docutils literal"><span class="pre">t</span> <span class="pre">&gt;=</span> <span class="pre">maxTimeuuid('2013-01-01</span> <span class="pre">00:05+0000')</span></code> would still
-<em>not</em> select a <code class="docutils literal"><span class="pre">timeuuid</span></code> generated exactly at &#8216;2013-01-01 00:05+0000&#8217; and is essentially equivalent to <code class="docutils literal"><span class="pre">t</span> <span class="pre">&gt;</span>
-<span class="pre">maxTimeuuid('2013-01-01</span> <span class="pre">00:05+0000')</span></code>.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">We called the values generated by <code class="docutils literal"><span class="pre">minTimeuuid</span></code> and <code class="docutils literal"><span class="pre">maxTimeuuid</span></code> <em>fake</em> UUID because they do no respect
-the Time-Based UUID generation process specified by the <a class="reference external" href="http://www.ietf.org/rfc/rfc4122.txt">RFC 4122</a>. In
-particular, the value returned by these 2 methods will not be unique. This means you should only use those methods
-for querying (as in the example above). Inserting the result of those methods is almost certainly <em>a bad idea</em>.</p>
-</div>
-</div>
-</div>
-<div class="section" id="time-conversion-functions">
-<h4>Time conversion functions<a class="headerlink" href="#time-conversion-functions" title="Permalink to this headline">¶</a></h4>
-<p>A number of functions are provided to “convert” a <code class="docutils literal"><span class="pre">timeuuid</span></code>, a <code class="docutils literal"><span class="pre">timestamp</span></code> or a <code class="docutils literal"><span class="pre">date</span></code> into another <code class="docutils literal"><span class="pre">native</span></code>
-type.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="20%" />
-<col width="15%" />
-<col width="65%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Function name</th>
-<th class="head">Input type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">toDate</span></code></td>
-<td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td>Converts the <code class="docutils literal"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal"><span class="pre">date</span></code> type</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">toDate</span></code></td>
-<td><code class="docutils literal"><span class="pre">timestamp</span></code></td>
-<td>Converts the <code class="docutils literal"><span class="pre">timestamp</span></code> argument into a <code class="docutils literal"><span class="pre">date</span></code> type</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">toTimestamp</span></code></td>
-<td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td>Converts the <code class="docutils literal"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal"><span class="pre">timestamp</span></code> type</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">toTimestamp</span></code></td>
-<td><code class="docutils literal"><span class="pre">date</span></code></td>
-<td>Converts the <code class="docutils literal"><span class="pre">date</span></code> argument into a <code class="docutils literal"><span class="pre">timestamp</span></code> type</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">toUnixTimestamp</span></code></td>
-<td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td>Converts the <code class="docutils literal"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal"><span class="pre">bigInt</span></code> raw value</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">toUnixTimestamp</span></code></td>
-<td><code class="docutils literal"><span class="pre">timestamp</span></code></td>
-<td>Converts the <code class="docutils literal"><span class="pre">timestamp</span></code> argument into a <code class="docutils literal"><span class="pre">bigInt</span></code> raw value</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">toUnixTimestamp</span></code></td>
-<td><code class="docutils literal"><span class="pre">date</span></code></td>
-<td>Converts the <code class="docutils literal"><span class="pre">date</span></code> argument into a <code class="docutils literal"><span class="pre">bigInt</span></code> raw value</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">dateOf</span></code></td>
-<td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td>Similar to <code class="docutils literal"><span class="pre">toTimestamp(timeuuid)</span></code> (DEPRECATED)</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">unixTimestampOf</span></code></td>
-<td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td>Similar to <code class="docutils literal"><span class="pre">toUnixTimestamp(timeuuid)</span></code> (DEPRECATED)</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="blob-conversion-functions">
-<h4>Blob conversion functions<a class="headerlink" href="#blob-conversion-functions" title="Permalink to this headline">¶</a></h4>
-<p>A number of functions are provided to “convert” the native types into binary data (<code class="docutils literal"><span class="pre">blob</span></code>). For every
-<code class="docutils literal"><span class="pre">&lt;native-type&gt;</span></code> <code class="docutils literal"><span class="pre">type</span></code> supported by CQL (a notable exceptions is <code class="docutils literal"><span class="pre">blob</span></code>, for obvious reasons), the function
-<code class="docutils literal"><span class="pre">typeAsBlob</span></code> takes a argument of type <code class="docutils literal"><span class="pre">type</span></code> and return it as a <code class="docutils literal"><span class="pre">blob</span></code>. Conversely, the function <code class="docutils literal"><span class="pre">blobAsType</span></code>
-takes a 64-bit <code class="docutils literal"><span class="pre">blob</span></code> argument and convert it to a <code class="docutils literal"><span class="pre">bigint</span></code> value. And so for instance, <code class="docutils literal"><span class="pre">bigintAsBlob(3)</span></code> is
-<code class="docutils literal"><span class="pre">0x0000000000000003</span></code> and <code class="docutils literal"><span class="pre">blobAsBigint(0x0000000000000003)</span></code> is <code class="docutils literal"><span class="pre">3</span></code>.</p>
-</div>
-</div>
-<div class="section" id="user-defined-functions">
-<span id="user-defined-scalar-functions"></span><h3>User-defined functions<a class="headerlink" href="#user-defined-functions" title="Permalink to this headline">¶</a></h3>
-<p>User-defined functions allow execution of user-provided code in Cassandra. By default, Cassandra supports defining
-functions in <em>Java</em> and <em>JavaScript</em>. Support for other JSR 223 compliant scripting languages (such as Python, Ruby, and
-Scala) can be added by adding a JAR to the classpath.</p>
-<p>UDFs are part of the Cassandra schema. As such, they are automatically propagated to all nodes in the cluster.</p>
-<p>UDFs can be <em>overloaded</em> - i.e. multiple UDFs with different argument types but the same function name. Example:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">sample</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">int</span> <span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">sample</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">text</span> <span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>User-defined functions are susceptible to all of the normal problems with the chosen programming language. Accordingly,
-implementations should be safe against null pointer exceptions, illegal arguments, or any other potential source of
-exceptions. An exception during function execution will result in the entire statement failing.</p>
-<p>It is valid to use <em>complex</em> types like collections, tuple types and user-defined types as argument and return types.
-Tuple types and user-defined types are handled by the conversion functions of the DataStax Java Driver. Please see the
-documentation of the Java Driver for details on handling tuple types and user-defined types.</p>
-<p>Arguments for functions can be literals or terms. Prepared statement placeholders can be used, too.</p>
-<p>Note that you can use the double-quoted string syntax to enclose the UDF source code. For example:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">some_function</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">int</span> <span class="p">)</span>
-    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
-    <span class="k">RETURNS</span> <span class="nb">int</span>
-    <span class="k">LANGUAGE</span> <span class="n">java</span>
-    <span class="k">AS</span> <span class="s">$$</span> <span class="k">return</span> <span class="n">arg</span><span class="o">;</span> <span class="s">$$</span><span class="p">;</span>
-
-<span class="k">SELECT</span> <span class="n">some_function</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">atable</span> <span class="mf">...</span><span class="p">;</span>
-<span class="k">UPDATE</span> <span class="n">atable</span> <span class="k">SET</span> <span class="n">col</span> <span class="o">=</span> <span class="n">some_function</span><span class="p">(</span><span class="o">?</span><span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">custom_type</span> <span class="p">(</span><span class="n">txt</span> <span class="nb">text</span><span class="p">,</span> <span class="n">i</span> <span class="nb">int</span><span class="p">);</span>
-<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">fct_using_udt</span> <span class="p">(</span> <span class="n">udtarg</span> <span class="k">frozen</span> <span class="p">)</span>
-    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
-    <span class="k">RETURNS</span> <span class="nb">text</span>
-    <span class="k">LANGUAGE</span> <span class="n">java</span>
-    <span class="k">AS</span> <span class="s">$$</span> <span class="k">return</span> <span class="n">udtarg</span><span class="o">.</span><span class="na">getString</span><span class="o">(</span><span class="s">&quot;txt&quot;</span><span class="o">);</span> <span class="s">$$</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>User-defined functions can be used in <code class="docutils literal"><span class="pre">SELECT</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">UPDATE</span></code> statements.</p>
-<p>The implicitly available <code class="docutils literal"><span class="pre">udfContext</span></code> field (or binding for script UDFs) provides the necessary functionality to
-create new UDT and tuple values:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">custom_type</span> <span class="p">(</span><span class="n">txt</span> <span class="nb">text</span><span class="p">,</span> <span class="n">i</span> <span class="nb">int</span><span class="p">);</span>
-<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">fct</span><span class="err">\</span><span class="n">_using</span><span class="err">\</span><span class="n">_udt</span> <span class="p">(</span> <span class="n">somearg</span> <span class="nb">int</span> <span class="p">)</span>
-    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
-    <span class="k">RETURNS</span> <span class="n">custom_type</span>
-    <span class="k">LANGUAGE</span> <span class="n">java</span>
-    <span class="k">AS</span> <span class="s">$$</span>
-        <span class="n">UDTValue</span> <span class="n">udt</span> <span class="o">=</span> <span class="n">udfContext</span><span class="o">.</span><span class="na">newReturnUDTValue</span><span class="o">();</span>
-        <span class="n">udt</span><span class="o">.</span><span class="na">setString</span><span class="o">(</span><span class="s">&quot;txt&quot;</span><span class="o">,</span> <span class="s">&quot;some string&quot;</span><span class="o">);</span>
-        <span class="n">udt</span><span class="o">.</span><span class="na">setInt</span><span class="o">(</span><span class="s">&quot;i&quot;</span><span class="o">,</span> <span class="mi">42</span><span class="o">);</span>
-        <span class="k">return</span> <span class="n">udt</span><span class="o">;</span>
-    <span class="s">$$</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The definition of the <code class="docutils literal"><span class="pre">UDFContext</span></code> interface can be found in the Apache Cassandra source code for
-<code class="docutils literal"><span class="pre">org.apache.cassandra.cql3.functions.UDFContext</span></code>.</p>
-<div class="highlight-java"><div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">UDFContext</span>
-<span class="o">{</span>
-    <span class="n">UDTValue</span> <span class="nf">newArgUDTValue</span><span class="o">(</span><span class="n">String</span> <span class="n">argName</span><span class="o">);</span>
-    <span class="n">UDTValue</span> <span class="nf">newArgUDTValue</span><span class="o">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="o">);</span>
-    <span class="n">UDTValue</span> <span class="nf">newReturnUDTValue</span><span class="o">();</span>
-    <span class="n">UDTValue</span> <span class="nf">newUDTValue</span><span class="o">(</span><span class="n">String</span> <span class="n">udtName</span><span class="o">);</span>
-    <span class="n">TupleValue</span> <span class="nf">newArgTupleValue</span><span class="o">(</span><span class="n">String</span> <span class="n">argName</span><span class="o">);</span>
-    <span class="n">TupleValue</span> <span class="nf">newArgTupleValue</span><span class="o">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="o">);</span>
-    <span class="n">TupleValue</span> <span class="nf">newReturnTupleValue</span><span class="o">();</span>
-    <span class="n">TupleValue</span> <span class="nf">newTupleValue</span><span class="o">(</span><span class="n">String</span> <span class="n">cqlDefinition</span><span class="o">);</span>
-<span class="o">}</span>
-</pre></div>
-</div>
-<p>Java UDFs already have some imports for common interfaces and classes defined. These imports are:</p>
-<div class="highlight-java"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.nio.ByteBuffer</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.util.List</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.util.Map</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.util.Set</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.apache.cassandra.cql3.functions.UDFContext</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">com.datastax.driver.core.TypeCodec</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">com.datastax.driver.core.TupleValue</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">com.datastax.driver.core.UDTValue</span><span class="o">;</span>
-</pre></div>
-</div>
-<p>Please note, that these convenience imports are not available for script UDFs.</p>
-<div class="section" id="create-function">
-<span id="create-function-statement"></span><h4>CREATE FUNCTION<a class="headerlink" href="#create-function" title="Permalink to this headline">¶</a></h4>
-<p>Creating a new user-defined function uses the <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_function_statement">create_function_statement</strong> ::=  CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS]
-                                   <a class="reference internal" href="#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-arguments_declaration"><code class="xref docutils literal"><span class="pre">arguments_declaration</span></code></a> ')'
-                                   [ CALLED | RETURNS NULL ] ON NULL INPUT
-                                   RETURNS <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a>
-                                   LANGUAGE <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a>
-                                   AS <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a>
-<strong id="grammar-token-arguments_declaration">arguments_declaration    </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> )*
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">somefunction</span><span class="p">(</span><span class="n">somearg</span> <span class="nb">int</span><span class="p">,</span> <span class="n">anotherarg</span> <span class="nb">text</span><span class="p">,</span> <span class="n">complexarg</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">someUDT</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">listarg</span> <span class="k">list</span><span class="p">)</span>
-    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
-    <span class="k">RETURNS</span> <span class="nb">text</span>
-    <span class="k">LANGUAGE</span> <span class="n">java</span>
-    <span class="k">AS</span> <span class="s">$$</span>
-        <span class="c1">// some Java code</span>
-    <span class="s">$$</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">akeyspace</span><span class="mf">.</span><span class="n">fname</span><span class="p">(</span><span class="n">someArg</span> <span class="nb">int</span><span class="p">)</span>
-    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
-    <span class="k">RETURNS</span> <span class="nb">text</span>
-    <span class="k">LANGUAGE</span> <span class="n">java</span>
-    <span class="k">AS</span> <span class="s">$$</span>
-        <span class="c1">// some Java code</span>
-    <span class="s">$$</span><span class="p">;</span>
-</pre></div>
-</div>
-<p><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> with the optional <code class="docutils literal"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> keywords either creates a function or replaces an existing one with
-the same signature. A <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> without <code class="docutils literal"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> fails if a function with the same signature already
-exists.</p>
-<p>If the optional <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> keywords are used, the function will
-only be created if another function with the same signature does not
-exist.</p>
-<p><code class="docutils literal"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> and <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> cannot be used together.</p>
-<p>Behavior on invocation with <code class="docutils literal"><span class="pre">null</span></code> values must be defined for each
-function. There are two options:</p>
-<ol class="arabic simple">
-<li><code class="docutils literal"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> declares that the function will always
-return <code class="docutils literal"><span class="pre">null</span></code> if any of the input arguments is <code class="docutils literal"><span class="pre">null</span></code>.</li>
-<li><code class="docutils literal"><span class="pre">CALLED</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> declares that the function will always be
-executed.</li>
-</ol>
-<div class="section" id="function-signature">
-<h5>Function Signature<a class="headerlink" href="#function-signature" title="Permalink to this headline">¶</a></h5>
-<p>Signatures are used to distinguish individual functions. The signature consists of:</p>
-<ol class="arabic simple">
-<li>The fully qualified function name - i.e <em>keyspace</em> plus <em>function-name</em></li>
-<li>The concatenated list of all argument types</li>
-</ol>
-<p>Note that keyspace names, function names and argument types are subject to the default naming conventions and
-case-sensitivity rules.</p>
-<p>Functions belong to a keyspace. If no keyspace is specified in <code class="docutils literal"><span class="pre">&lt;function-name&gt;</span></code>, the current keyspace is used (i.e.
-the keyspace specified using the <code class="docutils literal"><span class="pre">USE</span></code> statement). It is not possible to create a user-defined function in one of the
-system keyspaces.</p>
-</div>
-</div>
-<div class="section" id="drop-function">
-<span id="drop-function-statement"></span><h4>DROP FUNCTION<a class="headerlink" href="#drop-function" title="Permalink to this headline">¶</a></h4>
-<p>Dropping a function uses the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_function_statement">drop_function_statement</strong> ::=  DROP FUNCTION [ IF EXISTS ] <a class="reference internal" href="#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a> [ '(' <a class="reference internal" href="#grammar-token-arguments_signature"><code class="xref docutils literal"><span class="pre">arguments_signature</span></code></a> ')' ]
-<strong id="grammar-token-arguments_signature">arguments_signature    </strong> ::=  <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> )*
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">myfunction</span><span class="p">;</span>
-<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">mykeyspace</span><span class="mf">.</span><span class="n">afunction</span><span class="p">;</span>
-<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">afunction</span> <span class="p">(</span> <span class="nb">int</span> <span class="p">);</span>
-<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">afunction</span> <span class="p">(</span> <span class="nb">text</span> <span class="p">);</span>
-</pre></div>
-</div>
-<p>You must specify the argument types (<a class="reference internal" href="#grammar-token-arguments_signature"><code class="xref std std-token docutils literal"><span class="pre">arguments_signature</span></code></a>) of the function to drop if there are multiple
-functions with the same name but a different signature (overloaded functions).</p>
-<p><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> with the optional <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> keywords drops a function if it exists, but does not throw an error if
-it doesn&#8217;t</p>
-</div>
-</div>
-</div>
-<div class="section" id="aggregate-functions">
-<span id="id4"></span><h2>Aggregate functions<a class="headerlink" href="#aggregate-functions" title="Permalink to this headline">¶</a></h2>
-<p>Aggregate functions work on a set of rows. They receive values for each row and returns one value for the whole set.</p>
-<p>If <code class="docutils literal"><span class="pre">normal</span></code> columns, <code class="docutils literal"><span class="pre">scalar</span> <span class="pre">functions</span></code>, <code class="docutils literal"><span class="pre">UDT</span></code> fields, <code class="docutils literal"><span class="pre">writetime</span></code> or <code class="docutils literal"><span class="pre">ttl</span></code> are selected together with
-aggregate functions, the values returned for them will be the ones of the first row matching the query.</p>
-<div class="section" id="native-aggregates">
-<h3>Native aggregates<a class="headerlink" href="#native-aggregates" title="Permalink to this headline">¶</a></h3>
-<div class="section" id="count">
-<span id="count-function"></span><h4>Count<a class="headerlink" href="#count" title="Permalink to this headline">¶</a></h4>
-<p>The <code class="docutils literal"><span class="pre">count</span></code> function can be used to count the rows returned by a query. Example:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
-<span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="mf">1</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>It also can be used to count the non null value of a given column:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="n">scores</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="max-and-min">
-<h4>Max and Min<a class="headerlink" href="#max-and-min" title="Permalink to this headline">¶</a></h4>
-<p>The <code class="docutils literal"><span class="pre">max</span></code> and <code class="docutils literal"><span class="pre">min</span></code> functions can be used to compute the maximum and the minimum value returned by a query for a
-given column. For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">MIN</span> <span class="p">(</span><span class="n">players</span><span class="p">),</span> <span class="n">MAX</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span> <span class="k">WHERE</span> <span class="n">game</span> <span class="o">=</span> <span class="s1">&#39;quake&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="sum">
-<h4>Sum<a class="headerlink" href="#sum" title="Permalink to this headline">¶</a></h4>
-<p>The <code class="docutils literal"><span class="pre">sum</span></code> function can be used to sum up all the values returned by a query for a given column. For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">SUM</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="avg">
-<h4>Avg<a class="headerlink" href="#avg" title="Permalink to this headline">¶</a></h4>
-<p>The <code class="docutils literal"><span class="pre">avg</span></code> function can be used to compute the average of all the values returned by a query for a given column. For
-instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">AVG</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-</div>
-<div class="section" id="user-defined-aggregates">
-<span id="user-defined-aggregates-functions"></span><h3>User-Defined Aggregates<a class="headerlink" href="#user-defined-aggregates" title="Permalink to this headline">¶</a></h3>
-<p>User-defined aggregates allow the creation of custom aggregate functions. Common examples of aggregate functions are
-<em>count</em>, <em>min</em>, and <em>max</em>.</p>
-<p>Each aggregate requires an <em>initial state</em> (<code class="docutils literal"><span class="pre">INITCOND</span></code>, which defaults to <code class="docutils literal"><span class="pre">null</span></code>) of type <code class="docutils literal"><span class="pre">STYPE</span></code>. The first
-argument of the state function must have type <code class="docutils literal"><span class="pre">STYPE</span></code>. The remaining arguments of the state function must match the
-types of the user-defined aggregate arguments. The state function is called once for each row, and the value returned by
-the state function becomes the new state. After all rows are processed, the optional <code class="docutils literal"><span class="pre">FINALFUNC</span></code> is executed with last
-state value as its argument.</p>
-<p><code class="docutils literal"><span class="pre">STYPE</span></code> is mandatory in order to be able to distinguish possibly overloaded versions of the state and/or final
-function (since the overload can appear after creation of the aggregate).</p>
-<p>User-defined aggregates can be used in <code class="docutils literal"><span class="pre">SELECT</span></code> statement.</p>
-<p>A complete working example for user-defined aggregates (assuming that a keyspace has been selected using the <code class="docutils literal"><span class="pre">USE</span></code>
-statement):</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">averageState</span><span class="p">(</span><span class="n">state</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span><span class="nb">bigint</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">val</span> <span class="nb">int</span><span class="p">)</span>
-    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
-    <span class="k">RETURNS</span> <span class="k">tuple</span>
-    <span class="k">LANGUAGE</span> <span class="n">java</span>
-    <span class="k">AS</span> <span class="s">$$</span>
-        <span class="k">if</span> <span class="o">(</span><span class="n">val</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
-            <span class="n">state</span><span class="o">.</span><span class="na">setInt</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">state</span><span class="o">.</span><span class="na">getInt</span><span class="o">(</span><span class="mi">0</span><span class="o">)+</span><span class="mi">1</span><span class="o">);</span>
-            <span class="n">state</span><span class="o">.</span><span class="na">setLong</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">state</span><span class="o">.</span><span class="na">getLong</span><span class="o">(</span><span class="mi">1</span><span class="o">)+</span><span class="n">val</span><span class="o">.</span><span class="na">intValue</span><span class="o">());</span>
-        <span class="o">}</span>
-        <span class="k">return</span> <span class="n">state</span><span class="o">;</span>
-    <span class="s">$$</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">averageFinal</span> <span class="p">(</span><span class="n">state</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span><span class="nb">bigint</span><span class="o">&gt;</span><span class="p">)</span>
-    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
-    <span class="k">RETURNS</span> <span class="nb">double</span>
-    <span class="k">LANGUAGE</span> <span class="n">java</span>
-    <span class="k">AS</span> <span class="s">$$</span>
-        <span class="kt">double</span> <span class="n">r</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
-        <span class="k">if</span> <span class="o">(</span><span class="n">state</span><span class="o">.</span><span class="na">getInt</span><span class="o">(</span><span class="mi">0</span><span class="o">)</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
-        <span class="n">r</span> <span class="o">=</span> <span class="n">state</span><span class="o">.</span><span class="na">getLong</span><span class="o">(</span><span class="mi">1</span><span class="o">);</span>
-        <span class="n">r</span> <span class="o">/=</span> <span class="n">state</span><span class="o">.</span><span class="na">getInt</span><span class="o">(</span><span class="mi">0</span><span class="o">);</span>
-        <span class="k">return</span> <span class="n">Double</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="n">r</span><span class="o">);</span>
-    <span class="s">$$</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">AGGREGATE</span> <span class="n">average</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
-    <span class="k">SFUNC</span> <span class="n">averageState</span>
-    <span class="k">STYPE</span> <span class="k">tuple</span>
-    <span class="k">FINALFUNC</span> <span class="n">averageFinal</span>
-    <span class="k">INITCOND</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">0</span><span class="p">);</span>
-
-<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">atable</span> <span class="p">(</span>
-    <span class="n">pk</span> <span class="nb">int</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">val</span> <span class="nb">int</span>
-<span class="p">);</span>
-
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">1</span><span class="p">,</span><span class="mf">1</span><span class="p">);</span>
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">2</span><span class="p">,</span><span class="mf">2</span><span class="p">);</span>
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="mf">3</span><span class="p">);</span>
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">4</span><span class="p">,</span><span class="mf">4</span><span class="p">);</span>
-
-<span class="k">SELECT</span> <span class="n">average</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">atable</span><span class="p">;</span>
-</pre></div>
-</div>
-<div class="section" id="create-aggregate">
-<span id="create-aggregate-statement"></span><h4>CREATE AGGREGATE<a class="headerlink" href="#create-aggregate" title="Permalink to this headline">¶</a></h4>
-<p>Creating (or replacing) a user-defined aggregate function uses the <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_aggregate_statement">create_aggregate_statement</strong> ::=  CREATE [ OR REPLACE ] AGGREGATE [ IF NOT EXISTS ]
-                                    <a class="reference internal" href="#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-arguments_signature"><code class="xref docutils literal"><span class="pre">arguments_signature</span></code></a> ')'
-                                    SFUNC <a class="reference internal" href="#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a>
-                                    STYPE <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a>
-                                    [ FINALFUNC <a class="reference internal" href="#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a> ]
-                                    [ INITCOND <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> ]
-</pre>
-<p>See above for a complete example.</p>
-<p><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> keywords either creates an aggregate or replaces an existing one
-with the same signature. A <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> without <code class="docutils literal"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> fails if an aggregate with the same signature
-already exists.</p>
-<p><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> keywords either creates an aggregate if it does not already
-exist.</p>
-<p><code class="docutils literal"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> and <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> cannot be used together.</p>
-<p><code class="docutils literal"><span class="pre">STYPE</span></code> defines the type of the state value and must be specified.</p>
-<p>The optional <code class="docutils literal"><span class="pre">INITCOND</span></code> defines the initial state value for the aggregate. It defaults to <code class="docutils literal"><span class="pre">null</span></code>. A non-<code class="docutils literal"><span class="pre">null</span></code>
-<code class="docutils literal"><span class="pre">INITCOND</span></code> must be specified for state functions that are declared with <code class="docutils literal"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code>.</p>
-<p><code class="docutils literal"><span class="pre">SFUNC</span></code> references an existing function to be used as the state modifying function. The type of first argument of the
-state function must match <code class="docutils literal"><span class="pre">STYPE</span></code>. The remaining argument types of the state function must match the argument types of
-the aggregate function. State is not updated for state functions declared with <code class="docutils literal"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> and called
-with <code class="docutils literal"><span class="pre">null</span></code>.</p>
-<p>The optional <code class="docutils literal"><span class="pre">FINALFUNC</span></code> is called just before the aggregate result is returned. It must take only one argument with
-type <code class="docutils literal"><span class="pre">STYPE</span></code>. The return type of the <code class="docutils literal"><span class="pre">FINALFUNC</span></code> may be a different type. A final function declared with <code class="docutils literal"><span class="pre">RETURNS</span>
-<span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> means that the aggregate&#8217;s return value will be <code class="docutils literal"><span class="pre">null</span></code>, if the last state is <code class="docutils literal"><span class="pre">null</span></code>.</p>
-<p>If no <code class="docutils literal"><span class="pre">FINALFUNC</span></code> is defined, the overall return type of the aggregate function is <code class="docutils literal"><span class="pre">STYPE</span></code>. If a <code class="docutils literal"><span class="pre">FINALFUNC</span></code> is
-defined, it is the return type of that function.</p>
-</div>
-<div class="section" id="drop-aggregate">
-<span id="drop-aggregate-statement"></span><h4>DROP AGGREGATE<a class="headerlink" href="#drop-aggregate" title="Permalink to this headline">¶</a></h4>
-<p>Dropping an user-defined aggregate function uses the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_aggregate_statement">drop_aggregate_statement</strong> ::=  DROP AGGREGATE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a> [ '(' <a class="reference internal" href="#grammar-token-arguments_signature"><code class="xref docutils literal"><span class="pre">arguments_signature</span></code></a> ')' ]
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">myAggregate</span><span class="p">;</span>
-<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">myKeyspace</span><span class="mf">.</span><span class="n">anAggregate</span><span class="p">;</span>
-<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">someAggregate</span> <span class="p">(</span> <span class="nb">int</span> <span class="p">);</span>
-<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">someAggregate</span> <span class="p">(</span> <span class="nb">text</span> <span class="p">);</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> statement removes an aggregate created using <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>. You must specify the argument
-types of the aggregate to drop if there are multiple aggregates with the same name but a different signature (overloaded
-aggregates).</p>
-<p><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> keywords drops an aggregate if it exists, and does nothing if a
-function with the signature does not exist.</p>
-</div>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="json.html" class="btn btn-default pull-right " role="button" title="JSON Support" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="security.html" class="btn btn-default" role="button" title="Security" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/index.html b/src/doc/3.10/cql/index.html
deleted file mode 100644
index ae37927..0000000
--- a/src/doc/3.10/cql/index.html
+++ /dev/null
@@ -1,238 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "The Cassandra Query Language (CQL)"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="Definitions" href="definitions.html"/>
-      <link rel="prev" title="Data Modeling" href="../data_modeling/index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">The Cassandra Query Language (CQL)</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="the-cassandra-query-language-cql">
-<span id="cql"></span><h1>The Cassandra Query Language (CQL)<a class="headerlink" href="#the-cassandra-query-language-cql" title="Permalink to this headline">¶</a></h1>
-<p>This document describes the Cassandra Query Language (CQL) <a class="footnote-reference" href="#id2" id="id1">[1]</a>. Note that this document describes the last version of
-the languages. However, the <a class="reference external" href="#changes">changes</a> section provides the diff between the different versions of CQL.</p>
-<p>CQL offers a model close to SQL in the sense that data is put in <em>tables</em> containing <em>rows</em> of <em>columns</em>. For
-that reason, when used in this document, these terms (tables, rows and columns) have the same definition than they have
-in SQL. But please note that as such, they do <strong>not</strong> refer to the concept of rows and columns found in the deprecated
-thrift API (and earlier version 1 and 2 of CQL).</p>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="definitions.html">Definitions</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html#conventions">Conventions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html#identifiers">Identifiers and keywords</a></li>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html#constants">Constants</a></li>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html#terms">Terms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html#comments">Comments</a></li>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html#statements">Statements</a></li>
-<li class="toctree-l2"><a class="reference internal" href="definitions.html#prepared-statements">Prepared Statements</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="types.html">Data Types</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="types.html#native-types">Native Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-timestamps">Working with timestamps</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-dates">Working with dates</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-times">Working with times</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html#collections">Collections</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html#user-defined-types">User-Defined Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html#tuples">Tuples</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html#custom-types">Custom Types</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="ddl.html">Data Definition</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#common-definitions">Common definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#create-keyspace">CREATE KEYSPACE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#use">USE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#alter-keyspace">ALTER KEYSPACE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#drop-keyspace">DROP KEYSPACE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#create-table">CREATE TABLE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#alter-table">ALTER TABLE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#drop-table">DROP TABLE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html#truncate">TRUNCATE</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="dml.html">Data Manipulation</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="dml.html#select">SELECT</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html#insert">INSERT</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html#update">UPDATE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html#delete">DELETE</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html#batch">BATCH</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="indexes.html">Secondary Indexes</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html#create-index">CREATE INDEX</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html#drop-index">DROP INDEX</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="mvs.html">Materialized Views</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html#create-materialized-view">CREATE MATERIALIZED VIEW</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html#alter-materialized-view">ALTER MATERIALIZED VIEW</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html#drop-materialized-view">DROP MATERIALIZED VIEW</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="security.html#database-roles">Database Roles</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html#users">Users</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html#data-control">Data Control</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="functions.html">Functions</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="functions.html#scalar-functions">Scalar functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html#aggregate-functions">Aggregate functions</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="json.html">JSON Support</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="json.html#select-json">SELECT JSON</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html#insert-json">INSERT JSON</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html#json-encoding-of-cassandra-data-types">JSON Encoding of Cassandra Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html#the-fromjson-function">The fromJson() Function</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html#the-tojson-function">The toJson() Function</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="triggers.html">Triggers</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html#create-trigger">CREATE TRIGGER</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html#drop-trigger">DROP TRIGGER</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="appendices.html">Appendices</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-a-cql-keywords">Appendix A: CQL Keywords</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-b-cql-reserved-types">Appendix B: CQL Reserved Types</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="changes.html">Changes</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id1">3.4.3</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id2">3.4.2</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id3">3.4.1</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id4">3.4.0</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id5">3.3.1</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id6">3.3.0</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id7">3.2.0</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id8">3.1.7</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id9">3.1.6</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id10">3.1.5</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id11">3.1.4</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id12">3.1.3</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id13">3.1.2</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id14">3.1.1</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id15">3.1.0</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id16">3.0.5</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id17">3.0.4</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id18">3.0.3</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id19">3.0.2</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#id20">3.0.1</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html#versioning">Versioning</a></li>
-</ul>
-</li>
-</ul>
-</div>
-<table class="docutils footnote" frame="void" id="id2" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>Technically, this document CQL version 3, which is not backward compatible with CQL version 1 and 2 (which have
-been deprecated and remove) and differs from it in numerous ways.</td></tr>
-</tbody>
-</table>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="definitions.html" class="btn btn-default pull-right " role="button" title="Definitions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../data_modeling/index.html" class="btn btn-default" role="button" title="Data Modeling" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/indexes.html b/src/doc/3.10/cql/indexes.html
deleted file mode 100644
index 0b2a2d1..0000000
--- a/src/doc/3.10/cql/indexes.html
+++ /dev/null
@@ -1,170 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Secondary Indexes"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Materialized Views" href="mvs.html"/>
-      <link rel="prev" title="Data Manipulation" href="dml.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Secondary Indexes</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#create-index">CREATE INDEX</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#drop-index">DROP INDEX</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="secondary-indexes">
-<span id="id1"></span><h1>Secondary Indexes<a class="headerlink" href="#secondary-indexes" title="Permalink to this headline">¶</a></h1>
-<p>CQL supports creating secondary indexes on tables, allowing queries on the table to use those indexes. A secondary index
-is identified by a name defined by:</p>
-<pre>
-<strong id="grammar-token-index_name">index_name</strong> ::=  re('[a-zA-Z_0-9]+')
-</pre>
-<div class="section" id="create-index">
-<span id="create-index-statement"></span><h2>CREATE INDEX<a class="headerlink" href="#create-index" title="Permalink to this headline">¶</a></h2>
-<p>Creating a secondary index on a table uses the <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_index_statement">create_index_statement</strong> ::=  CREATE [ CUSTOM ] INDEX [ IF NOT EXISTS ] [ <a class="reference internal" href="#grammar-token-index_name"><code class="xref docutils literal"><span class="pre">index_name</span></code></a> ]
-                                ON <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-index_identifier"><code class="xref docutils literal"><span class="pre">index_identifier</span></code></a> ')'
-                                [ USING <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a> [ WITH OPTIONS = <a class="reference internal" href="types.html#grammar-token-map_literal"><code class="xref docutils literal"><span class="pre">map_literal</span></code></a> ] ]
-<strong id="grammar-token-index_identifier">index_identifier      </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a>
-                           | ( KEYS | VALUES | ENTRIES | FULL ) '(' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ')'
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">INDEX</span> <span class="n">userIndex</span> <span class="k">ON</span> <span class="n">NerdMovies</span> <span class="p">(</span><span class="k">user</span><span class="p">);</span>
-<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="n">Mutants</span> <span class="p">(</span><span class="n">abilityId</span><span class="p">);</span>
-<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="k">keys</span><span class="p">(</span><span class="n">favs</span><span class="p">));</span>
-<span class="k">CREATE</span> <span class="k">CUSTOM</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="n">email</span><span class="p">)</span> <span class="k">USING</span> <span class="s1">&#39;path.to.the.IndexClass&#39;</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">CUSTOM</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="n">email</span><span class="p">)</span> <span class="k">USING</span> <span class="s1">&#39;path.to.the.IndexClass&#39;</span> <span class="k">WITH</span> <span class="k">OPTIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;storage&#39;</span><span class="p">:</span> <span class="s1">&#39;/mnt/ssd/indexes/&#39;</span><span class="p">};</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> statement is used to create a new (automatic) secondary index for a given (existing) column in a
-given table. A name for the index itself can be specified before the <code class="docutils literal"><span class="pre">ON</span></code> keyword, if desired. If data already exists
-for the column, it will be indexed asynchronously. After the index is created, new data for the column is indexed
-automatically at insertion time.</p>
-<p>Attempting to create an already existing index will return an error unless the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If it
-is used, the statement will be a no-op if the index already exists.</p>
-<div class="section" id="indexes-on-map-keys">
-<h3>Indexes on Map Keys<a class="headerlink" href="#indexes-on-map-keys" title="Permalink to this headline">¶</a></h3>
-<p>When creating an index on a <a class="reference internal" href="types.html#maps"><span class="std std-ref">maps</span></a>, you may index either the keys or the values. If the column identifier is
-placed within the <code class="docutils literal"><span class="pre">keys()</span></code> function, the index will be on the map keys, allowing you to use <code class="docutils literal"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> in
-<code class="docutils literal"><span class="pre">WHERE</span></code> clauses. Otherwise, the index will be on the map values.</p>
-</div>
-</div>
-<div class="section" id="drop-index">
-<span id="drop-index-statement"></span><h2>DROP INDEX<a class="headerlink" href="#drop-index" title="Permalink to this headline">¶</a></h2>
-<p>Dropping a secondary index uses the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_index_statement">drop_index_statement</strong> ::=  DROP INDEX [ IF EXISTS ] <a class="reference internal" href="#grammar-token-index_name"><code class="xref docutils literal"><span class="pre">index_name</span></code></a>
-</pre>
-<p>The <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> statement is used to drop an existing secondary index. The argument of the statement is the index
-name, which may optionally specify the keyspace of the index.</p>
-<p>If the index does not exists, the statement will return an error, unless <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
-operation is a no-op.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="mvs.html" class="btn btn-default pull-right " role="button" title="Materialized Views" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="dml.html" class="btn btn-default" role="button" title="Data Manipulation" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/json.html b/src/doc/3.10/cql/json.html
deleted file mode 100644
index 6f4a78d..0000000
--- a/src/doc/3.10/cql/json.html
+++ /dev/null
@@ -1,317 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "JSON Support"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Triggers" href="triggers.html"/>
-      <link rel="prev" title="Functions" href="functions.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">JSON Support</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#select-json">SELECT JSON</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#insert-json">INSERT JSON</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#json-encoding-of-cassandra-data-types">JSON Encoding of Cassandra Data Types</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#the-fromjson-function">The fromJson() Function</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#the-tojson-function">The toJson() Function</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="json-support">
-<span id="cql-json"></span><h1>JSON Support<a class="headerlink" href="#json-support" title="Permalink to this headline">¶</a></h1>
-<p>Cassandra 2.2 introduces JSON support to <a class="reference internal" href="dml.html#select-statement"><span class="std std-ref">SELECT</span></a> and <a class="reference internal" href="dml.html#insert-statement"><span class="std std-ref">INSERT</span></a>
-statements. This support does not fundamentally alter the CQL API (for example, the schema is still enforced), it simply
-provides a convenient way to work with JSON documents.</p>
-<div class="section" id="select-json">
-<h2>SELECT JSON<a class="headerlink" href="#select-json" title="Permalink to this headline">¶</a></h2>
-<p>With <code class="docutils literal"><span class="pre">SELECT</span></code> statements, the <code class="docutils literal"><span class="pre">JSON</span></code> keyword can be used to return each row as a single <code class="docutils literal"><span class="pre">JSON</span></code> encoded map. The
-remainder of the <code class="docutils literal"><span class="pre">SELECT</span></code> statement behavior is the same.</p>
-<p>The result map keys are the same as the column names in a normal result set. For example, a statement like <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">JSON</span>
-<span class="pre">a,</span> <span class="pre">ttl(b)</span> <span class="pre">FROM</span> <span class="pre">...</span></code> would result in a map with keys <code class="docutils literal"><span class="pre">&quot;a&quot;</span></code> and <code class="docutils literal"><span class="pre">&quot;ttl(b)&quot;</span></code>. However, this is one notable exception:
-for symmetry with <code class="docutils literal"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> behavior, case-sensitive column names with upper-case letters will be surrounded with
-double quotes. For example, <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">JSON</span> <span class="pre">myColumn</span> <span class="pre">FROM</span> <span class="pre">...</span></code> would result in a map key <code class="docutils literal"><span class="pre">&quot;\&quot;myColumn\&quot;&quot;</span></code> (note the
-escaped quotes).</p>
-<p>The map values will <code class="docutils literal"><span class="pre">JSON</span></code>-encoded representations (as described below) of the result set values.</p>
-</div>
-<div class="section" id="insert-json">
-<h2>INSERT JSON<a class="headerlink" href="#insert-json" title="Permalink to this headline">¶</a></h2>
-<p>With <code class="docutils literal"><span class="pre">INSERT</span></code> statements, the new <code class="docutils literal"><span class="pre">JSON</span></code> keyword can be used to enable inserting a <code class="docutils literal"><span class="pre">JSON</span></code> encoded map as a single
-row. The format of the <code class="docutils literal"><span class="pre">JSON</span></code> map should generally match that returned by a <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">JSON</span></code> statement on the same
-table. In particular, case-sensitive column names should be surrounded with double quotes. For example, to insert into a
-table with two columns named &#8220;myKey&#8221; and &#8220;value&#8221;, you would do the following:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">mytable</span> <span class="k">JSON</span> <span class="s1">&#39;{ &quot;\&quot;myKey\&quot;&quot;: 0, &quot;value&quot;: 0}&#39;</span>
-</pre></div>
-</div>
-<p>By default (or if <code class="docutils literal"><span class="pre">DEFAULT</span> <span class="pre">NULL</span></code> is explicitly used), a column omitted from the <code class="docutils literal"><span class="pre">JSON</span></code> map will be set to <code class="docutils literal"><span class="pre">NULL</span></code>,
-meaning that any pre-existing value for that column will be removed (resulting in a tombstone being created).
-Alternatively, if the <code class="docutils literal"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> directive is used after the value, omitted column values will be left unset,
-meaning that pre-existing values for those column will be preserved.</p>
-</div>
-<div class="section" id="json-encoding-of-cassandra-data-types">
-<h2>JSON Encoding of Cassandra Data Types<a class="headerlink" href="#json-encoding-of-cassandra-data-types" title="Permalink to this headline">¶</a></h2>
-<p>Where possible, Cassandra will represent and accept data types in their native <code class="docutils literal"><span class="pre">JSON</span></code> representation. Cassandra will
-also accept string representations matching the CQL literal format for all single-field types. For example, floats,
-ints, UUIDs, and dates can be represented by CQL literal strings. However, compound types, such as collections, tuples,
-and user-defined types must be represented by native <code class="docutils literal"><span class="pre">JSON</span></code> collections (maps and lists) or a JSON-encoded string
-representation of the collection.</p>
-<p>The following table describes the encodings that Cassandra will accept in <code class="docutils literal"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> values (and <code class="docutils literal"><span class="pre">fromJson()</span></code>
-arguments) as well as the format Cassandra will use when returning data for <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">JSON</span></code> statements (and
-<code class="docutils literal"><span class="pre">fromJson()</span></code>):</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="13%" />
-<col width="21%" />
-<col width="13%" />
-<col width="54%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Type</th>
-<th class="head">Formats accepted</th>
-<th class="head">Return format</th>
-<th class="head">Notes</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ascii</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>Uses JSON&#8217;s <code class="docutils literal"><span class="pre">\u</span></code> character escape</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">bigint</span></code></td>
-<td>integer, string</td>
-<td>integer</td>
-<td>String must be valid 64 bit integer</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">blob</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>String should be 0x followed by an even number of hex digits</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">boolean</span></code></td>
-<td>boolean, string</td>
-<td>boolean</td>
-<td>String must be &#8220;true&#8221; or &#8220;false&#8221;</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">date</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>Date in format <code class="docutils literal"><span class="pre">YYYY-MM-DD</span></code>, timezone UTC</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">decimal</span></code></td>
-<td>integer, float, string</td>
-<td>float</td>
-<td>May exceed 32 or 64-bit IEEE-754 floating point precision in
-client-side decoder</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">double</span></code></td>
-<td>integer, float, string</td>
-<td>float</td>
-<td>String must be valid integer or float</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">float</span></code></td>
-<td>integer, float, string</td>
-<td>float</td>
-<td>String must be valid integer or float</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">inet</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>IPv4 or IPv6 address</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">int</span></code></td>
-<td>integer, string</td>
-<td>integer</td>
-<td>String must be valid 32 bit integer</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">list</span></code></td>
-<td>list, string</td>
-<td>list</td>
-<td>Uses JSON&#8217;s native list representation</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">map</span></code></td>
-<td>map, string</td>
-<td>map</td>
-<td>Uses JSON&#8217;s native map representation</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">smallint</span></code></td>
-<td>integer, string</td>
-<td>integer</td>
-<td>String must be valid 16 bit integer</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">set</span></code></td>
-<td>list, string</td>
-<td>list</td>
-<td>Uses JSON&#8217;s native list representation</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">text</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>Uses JSON&#8217;s <code class="docutils literal"><span class="pre">\u</span></code> character escape</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">time</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>Time of day in format <code class="docutils literal"><span class="pre">HH-MM-SS[.fffffffff]</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">timestamp</span></code></td>
-<td>integer, string</td>
-<td>string</td>
-<td>A timestamp. Strings constant allows to input <a class="reference internal" href="types.html#timestamps"><span class="std std-ref">timestamps
-as dates</span></a>. Datestamps with format <code class="docutils literal"><span class="pre">YYYY-MM-DD</span>
-<span class="pre">HH:MM:SS.SSS</span></code> are returned.</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>Type 1 UUID. See <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref std std-token docutils literal"><span class="pre">constant</span></code></a> for the UUID format</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">tinyint</span></code></td>
-<td>integer, string</td>
-<td>integer</td>
-<td>String must be valid 8 bit integer</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">tuple</span></code></td>
-<td>list, string</td>
-<td>list</td>
-<td>Uses JSON&#8217;s native list representation</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">UDT</span></code></td>
-<td>map, string</td>
-<td>map</td>
-<td>Uses JSON&#8217;s native map representation with field names as keys</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">uuid</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>See <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref std std-token docutils literal"><span class="pre">constant</span></code></a> for the UUID format</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">varchar</span></code></td>
-<td>string</td>
-<td>string</td>
-<td>Uses JSON&#8217;s <code class="docutils literal"><span class="pre">\u</span></code> character escape</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">varint</span></code></td>
-<td>integer, string</td>
-<td>integer</td>
-<td>Variable length; may overflow 32 or 64 bit integers in
-client-side decoder</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="the-fromjson-function">
-<h2>The fromJson() Function<a class="headerlink" href="#the-fromjson-function" title="Permalink to this headline">¶</a></h2>
-<p>The <code class="docutils literal"><span class="pre">fromJson()</span></code> function may be used similarly to <code class="docutils literal"><span class="pre">INSERT</span> <span class="pre">JSON</span></code>, but for a single column value. It may only be used
-in the <code class="docutils literal"><span class="pre">VALUES</span></code> clause of an <code class="docutils literal"><span class="pre">INSERT</span></code> statement or as one of the column values in an <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">DELETE</span></code>, or
-<code class="docutils literal"><span class="pre">SELECT</span></code> statement. For example, it cannot be used in the selection clause of a <code class="docutils literal"><span class="pre">SELECT</span></code> statement.</p>
-</div>
-<div class="section" id="the-tojson-function">
-<h2>The toJson() Function<a class="headerlink" href="#the-tojson-function" title="Permalink to this headline">¶</a></h2>
-<p>The <code class="docutils literal"><span class="pre">toJson()</span></code> function may be used similarly to <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">JSON</span></code>, but for a single column value. It may only be used
-in the selection clause of a <code class="docutils literal"><span class="pre">SELECT</span></code> statement.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="triggers.html" class="btn btn-default pull-right " role="button" title="Triggers" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="functions.html" class="btn btn-default" role="button" title="Functions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/mvs.html b/src/doc/3.10/cql/mvs.html
deleted file mode 100644
index c7cd75b..0000000
--- a/src/doc/3.10/cql/mvs.html
+++ /dev/null
@@ -1,243 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Materialized Views"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Security" href="security.html"/>
-      <link rel="prev" title="Secondary Indexes" href="indexes.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Materialized Views</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#create-materialized-view">CREATE MATERIALIZED VIEW</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#alter-materialized-view">ALTER MATERIALIZED VIEW</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#drop-materialized-view">DROP MATERIALIZED VIEW</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="materialized-views">
-<span id="id1"></span><h1>Materialized Views<a class="headerlink" href="#materialized-views" title="Permalink to this headline">¶</a></h1>
-<p>Materialized views names are defined by:</p>
-<pre>
-<strong id="grammar-token-view_name">view_name</strong> ::=  re('[a-zA-Z_0-9]+')
-</pre>
-<div class="section" id="create-materialized-view">
-<span id="create-materialized-view-statement"></span><h2>CREATE MATERIALIZED VIEW<a class="headerlink" href="#create-materialized-view" title="Permalink to this headline">¶</a></h2>
-<p>You can create a materialized view on a table using a <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_materialized_view_statement">create_materialized_view_statement</strong> ::=  CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-view_name"><code class="xref docutils literal"><span class="pre">view_name</span></code></a> AS
-                                            <a class="reference internal" href="dml.html#grammar-token-select_statement"><code class="xref docutils literal"><span class="pre">select_statement</span></code></a>
-                                            PRIMARY KEY '(' <a class="reference internal" href="ddl.html#grammar-token-primary_key"><code class="xref docutils literal"><span class="pre">primary_key</span></code></a> ')'
-                                            WITH <a class="reference internal" href="ddl.html#grammar-token-table_options"><code class="xref docutils literal"><span class="pre">table_options</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">monkeySpecies_by_population</span> <span class="k">AS</span>
-    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">monkeySpecies</span>
-    <span class="k">WHERE</span> <span class="n">population</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">species</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">population</span><span class="p">,</span> <span class="n">species</span><span class="p">)</span>
-    <span class="k">WITH</span> <span class="n">comment</span><span class="o">=</span><span class="s1">&#39;Allow query by population instead of species&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement creates a new materialized view. Each such view is a set of <em>rows</em> which
-corresponds to rows which are present in the underlying, or base, table specified in the <code class="docutils literal"><span class="pre">SELECT</span></code> statement. A
-materialized view cannot be directly updated, but updates to the base table will cause corresponding updates in the
-view.</p>
-<p>Creating a materialized view has 3 main parts:</p>
-<ul class="simple">
-<li>The <a class="reference internal" href="#mv-select"><span class="std std-ref">select statement</span></a> that restrict the data included in the view.</li>
-<li>The <a class="reference internal" href="#mv-primary-key"><span class="std std-ref">primary key</span></a> definition for the view.</li>
-<li>The <a class="reference internal" href="#mv-options"><span class="std std-ref">options</span></a> for the view.</li>
-</ul>
-<p>Attempting to create an already existing materialized view will return an error unless the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is
-used. If it is used, the statement will be a no-op if the materialized view already exists.</p>
-<div class="section" id="mv-select-statement">
-<span id="mv-select"></span><h3>MV select statement<a class="headerlink" href="#mv-select-statement" title="Permalink to this headline">¶</a></h3>
-<p>The select statement of a materialized view creation defines which of the base table is included in the view. That
-statement is limited in a number of ways:</p>
-<ul class="simple">
-<li>the <a class="reference internal" href="dml.html#selection-clause"><span class="std std-ref">selection</span></a> is limited to those that only select columns of the base table. In other
-words, you can&#8217;t use any function (aggregate or not), casting, term, etc. Aliases are also not supported. You can
-however use <cite>*</cite> as a shortcut of selecting all columns. Further, <a class="reference internal" href="ddl.html#static-columns"><span class="std std-ref">static columns</span></a> cannot be
-included in a materialized view (which means <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">*</span></code> isn&#8217;t allowed if the base table has static columns).</li>
-<li>the <code class="docutils literal"><span class="pre">WHERE</span></code> clause have the following restrictions:<ul>
-<li>it cannot include any <a class="reference internal" href="definitions.html#grammar-token-bind_marker"><code class="xref std std-token docutils literal"><span class="pre">bind_marker</span></code></a>.</li>
-<li>the columns that are not part of the <em>base table</em> primary key can only be restricted by an <code class="docutils literal"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code>
-restriction. No other restriction is allowed.</li>
-<li>as the columns that are part of the <em>view</em> primary key cannot be null, they must always be at least restricted by a
-<code class="docutils literal"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code> restriction (or any other restriction, but they must have one).</li>
-</ul>
-</li>
-<li>it cannot have neither an <a class="reference internal" href="dml.html#ordering-clause"><span class="std std-ref">ordering clause</span></a>, nor a <a class="reference internal" href="dml.html#limit-clause"><span class="std std-ref">limit</span></a>, nor <a class="reference internal" href="dml.html#allow-filtering"><span class="std std-ref">ALLOW
-FILTERING</span></a>.</li>
-</ul>
-</div>
-<div class="section" id="mv-primary-key">
-<span id="id2"></span><h3>MV primary key<a class="headerlink" href="#mv-primary-key" title="Permalink to this headline">¶</a></h3>
-<p>A view must have a primary key and that primary key must conform to the following restrictions:</p>
-<ul class="simple">
-<li>it must contain all the primary key columns of the base table. This ensures that every row of the view correspond to
-exactly one row of the base table.</li>
-<li>it can only contain a single column that is not a primary key column in the base table.</li>
-</ul>
-<p>So for instance, give the following base table definition:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
-    <span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">c1</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">c2</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">v1</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">v2</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
-<span class="p">)</span>
-</pre></div>
-</div>
-<p>then the following view definitions are allowed:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
-    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">c1</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
-
-<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
-    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
-</pre></div>
-</div>
-<p>but the following ones are <strong>not</strong> allowed:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="c1">// Error: cannot include both v1 and v2 in the primary key as both are not in the base table primary key</span>
-<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
-    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">v1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">v2</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
-
-<span class="c1">// Error: must include k in the primary as it&#39;s a base table primary key column</span>
-<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
-    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
-    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="mv-options">
-<span id="id3"></span><h3>MV options<a class="headerlink" href="#mv-options" title="Permalink to this headline">¶</a></h3>
-<p>A materialized view is internally implemented by a table and as such, creating a MV allows the <a class="reference internal" href="ddl.html#create-table-options"><span class="std std-ref">same options than
-creating a table</span></a>.</p>
-</div>
-</div>
-<div class="section" id="alter-materialized-view">
-<span id="alter-materialized-view-statement"></span><h2>ALTER MATERIALIZED VIEW<a class="headerlink" href="#alter-materialized-view" title="Permalink to this headline">¶</a></h2>
-<p>After creation, you can alter the options of a materialized view using the <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-alter_materialized_view_statement">alter_materialized_view_statement</strong> ::=  ALTER MATERIALIZED VIEW <a class="reference internal" href="#grammar-token-view_name"><code class="xref docutils literal"><span class="pre">view_name</span></code></a> WITH <a class="reference internal" href="ddl.html#grammar-token-table_options"><code class="xref docutils literal"><span class="pre">table_options</span></code></a>
-</pre>
-<p>The options that can be updated are the same than at creation time and thus the <a class="reference internal" href="ddl.html#create-table-options"><span class="std std-ref">same than for tables</span></a>.</p>
-</div>
-<div class="section" id="drop-materialized-view">
-<span id="drop-materialized-view-statement"></span><h2>DROP MATERIALIZED VIEW<a class="headerlink" href="#drop-materialized-view" title="Permalink to this headline">¶</a></h2>
-<p>Dropping a materialized view users the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_materialized_view_statement">drop_materialized_view_statement</strong> ::=  DROP MATERIALIZED VIEW [ IF EXISTS ] <a class="reference internal" href="#grammar-token-view_name"><code class="xref docutils literal"><span class="pre">view_name</span></code></a>;
-</pre>
-<p>If the materialized view does not exists, the statement will return an error, unless <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case
-the operation is a no-op.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="security.html" class="btn btn-default pull-right " role="button" title="Security" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="indexes.html" class="btn btn-default" role="button" title="Secondary Indexes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/security.html b/src/doc/3.10/cql/security.html
deleted file mode 100644
index 71dac59..0000000
--- a/src/doc/3.10/cql/security.html
+++ /dev/null
@@ -1,706 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Security"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Functions" href="functions.html"/>
-      <link rel="prev" title="Materialized Views" href="mvs.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Security</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#database-roles">Database Roles</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#users">Users</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#data-control">Data Control</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="security">
-<span id="cql-security"></span><h1>Security<a class="headerlink" href="#security" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="database-roles">
-<span id="cql-roles"></span><h2>Database Roles<a class="headerlink" href="#database-roles" title="Permalink to this headline">¶</a></h2>
-<p>CQL uses database roles to represent users and group of users. Syntactically, a role is defined by:</p>
-<pre>
-<strong id="grammar-token-role_name">role_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a>
-</pre>
-<div class="section" id="create-role">
-<span id="create-role-statement"></span><h3>CREATE ROLE<a class="headerlink" href="#create-role" title="Permalink to this headline">¶</a></h3>
-<p>Creating a role uses the <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_role_statement">create_role_statement</strong> ::=  CREATE ROLE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-                               [ WITH <a class="reference internal" href="#grammar-token-role_options"><code class="xref docutils literal"><span class="pre">role_options</span></code></a> ]
-<strong id="grammar-token-role_options">role_options         </strong> ::=  <a class="reference internal" href="#grammar-token-role_option"><code class="xref docutils literal"><span class="pre">role_option</span></code></a> ( AND <a class="reference internal" href="#grammar-token-role_option"><code class="xref docutils literal"><span class="pre">role_option</span></code></a> )*
-<strong id="grammar-token-role_option">role_option          </strong> ::=  PASSWORD '=' <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a>
-                          | LOGIN '=' <a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref docutils literal"><span class="pre">boolean</span></code></a>
-                          | SUPERUSER '=' <a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref docutils literal"><span class="pre">boolean</span></code></a>
-                          | OPTIONS '=' <a class="reference internal" href="types.html#grammar-token-map_literal"><code class="xref docutils literal"><span class="pre">map_literal</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">new_role</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_b&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">carlos</span> <span class="k">WITH</span> <span class="k">OPTIONS</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;custom_option1&#39;</span> <span class="p">:</span> <span class="s1">&#39;option1_value&#39;</span><span class="p">,</span> <span class="s1">&#39;custom_option2&#39;</span> <span class="p">:</span> <span class="mf">99</span> <span class="p">};</span>
-</pre></div>
-</div>
-<p>By default roles do not possess <code class="docutils literal"><span class="pre">LOGIN</span></code> privileges or <code class="docutils literal"><span class="pre">SUPERUSER</span></code> status.</p>
-<p><a class="reference internal" href="#cql-permissions"><span class="std std-ref">Permissions</span></a> on database resources are granted to roles; types of resources include keyspaces,
-tables, functions and roles themselves. Roles may be granted to other roles to create hierarchical permissions
-structures; in these hierarchies, permissions and <code class="docutils literal"><span class="pre">SUPERUSER</span></code> status are inherited, but the <code class="docutils literal"><span class="pre">LOGIN</span></code> privilege is
-not.</p>
-<p>If a role has the <code class="docutils literal"><span class="pre">LOGIN</span></code> privilege, clients may identify as that role when connecting. For the duration of that
-connection, the client will acquire any roles and privileges granted to that role.</p>
-<p>Only a client with with the <code class="docutils literal"><span class="pre">CREATE</span></code> permission on the database roles resource may issue <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> requests (see
-the <a class="reference internal" href="#cql-permissions"><span class="std std-ref">relevant section</span></a> below), unless the client is a <code class="docutils literal"><span class="pre">SUPERUSER</span></code>. Role management in Cassandra
-is pluggable and custom implementations may support only a subset of the listed options.</p>
-<p>Role names should be quoted if they contain non-alphanumeric characters.</p>
-<div class="section" id="setting-credentials-for-internal-authentication">
-<span id="id1"></span><h4>Setting credentials for internal authentication<a class="headerlink" href="#setting-credentials-for-internal-authentication" title="Permalink to this headline">¶</a></h4>
-<p>Use the <code class="docutils literal"><span class="pre">WITH</span> <span class="pre">PASSWORD</span></code> clause to set a password for internal authentication, enclosing the password in single
-quotation marks.</p>
-<p>If internal authentication has not been set up or the role does not have <code class="docutils literal"><span class="pre">LOGIN</span></code> privileges, the <code class="docutils literal"><span class="pre">WITH</span> <span class="pre">PASSWORD</span></code>
-clause is not necessary.</p>
-</div>
-<div class="section" id="creating-a-role-conditionally">
-<h4>Creating a role conditionally<a class="headerlink" href="#creating-a-role-conditionally" title="Permalink to this headline">¶</a></h4>
-<p>Attempting to create an existing role results in an invalid query condition unless the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used.
-If the option is used and the role exists, the statement is a no-op:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">other_role</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">other_role</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-</div>
-<div class="section" id="alter-role">
-<span id="alter-role-statement"></span><h3>ALTER ROLE<a class="headerlink" href="#alter-role" title="Permalink to this headline">¶</a></h3>
-<p>Altering a role options uses the <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-alter_role_statement">alter_role_statement</strong> ::=  ALTER ROLE <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-role_options"><code class="xref docutils literal"><span class="pre">role_options</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">ROLE</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;PASSWORD_B&#39;</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Conditions on executing <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> statements:</p>
-<ul class="simple">
-<li>A client must have <code class="docutils literal"><span class="pre">SUPERUSER</span></code> status to alter the <code class="docutils literal"><span class="pre">SUPERUSER</span></code> status of another role</li>
-<li>A client cannot alter the <code class="docutils literal"><span class="pre">SUPERUSER</span></code> status of any role it currently holds</li>
-<li>A client can only modify certain properties of the role with which it identified at login (e.g. <code class="docutils literal"><span class="pre">PASSWORD</span></code>)</li>
-<li>To modify properties of a role, the client must be granted <code class="docutils literal"><span class="pre">ALTER</span></code> <a class="reference internal" href="#cql-permissions"><span class="std std-ref">permission</span></a> on that role</li>
-</ul>
-</div>
-<div class="section" id="drop-role">
-<span id="drop-role-statement"></span><h3>DROP ROLE<a class="headerlink" href="#drop-role" title="Permalink to this headline">¶</a></h3>
-<p>Dropping a role uses the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_role_statement">drop_role_statement</strong> ::=  DROP ROLE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-</pre>
-<p><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> requires the client to have <code class="docutils literal"><span class="pre">DROP</span></code> <a class="reference internal" href="#cql-permissions"><span class="std std-ref">permission</span></a> on the role in question. In
-addition, client may not <code class="docutils literal"><span class="pre">DROP</span></code> the role with which it identified at login. Finally, only a client with <code class="docutils literal"><span class="pre">SUPERUSER</span></code>
-status may <code class="docutils literal"><span class="pre">DROP</span></code> another <code class="docutils literal"><span class="pre">SUPERUSER</span></code> role.</p>
-<p>Attempting to drop a role which does not exist results in an invalid query condition unless the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> option is
-used. If the option is used and the role does not exist the statement is a no-op.</p>
-</div>
-<div class="section" id="grant-role">
-<span id="grant-role-statement"></span><h3>GRANT ROLE<a class="headerlink" href="#grant-role" title="Permalink to this headline">¶</a></h3>
-<p>Granting a role to another uses the <code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-grant_role_statement">grant_role_statement</strong> ::=  GRANT <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a> TO <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="n">report_writer</span> <span class="k">TO</span> <span class="n">alice</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>This statement grants the <code class="docutils literal"><span class="pre">report_writer</span></code> role to <code class="docutils literal"><span class="pre">alice</span></code>. Any permissions granted to <code class="docutils literal"><span class="pre">report_writer</span></code> are also
-acquired by <code class="docutils literal"><span class="pre">alice</span></code>.</p>
-<p>Roles are modelled as a directed acyclic graph, so circular grants are not permitted. The following examples result in
-error conditions:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="n">role_a</span> <span class="k">TO</span> <span class="n">role_b</span><span class="p">;</span>
-<span class="k">GRANT</span> <span class="n">role_b</span> <span class="k">TO</span> <span class="n">role_a</span><span class="p">;</span>
-
-<span class="k">GRANT</span> <span class="n">role_a</span> <span class="k">TO</span> <span class="n">role_b</span><span class="p">;</span>
-<span class="k">GRANT</span> <span class="n">role_b</span> <span class="k">TO</span> <span class="n">role_c</span><span class="p">;</span>
-<span class="k">GRANT</span> <span class="n">role_c</span> <span class="k">TO</span> <span class="n">role_a</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="revoke-role">
-<span id="revoke-role-statement"></span><h3>REVOKE ROLE<a class="headerlink" href="#revoke-role" title="Permalink to this headline">¶</a></h3>
-<p>Revoking a role uses the <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-revoke_role_statement">revoke_role_statement</strong> ::=  REVOKE <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a> FROM <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">REVOKE</span> <span class="n">report_writer</span> <span class="k">FROM</span> <span class="n">alice</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>This statement revokes the <code class="docutils literal"><span class="pre">report_writer</span></code> role from <code class="docutils literal"><span class="pre">alice</span></code>. Any permissions that <code class="docutils literal"><span class="pre">alice</span></code> has acquired via the
-<code class="docutils literal"><span class="pre">report_writer</span></code> role are also revoked.</p>
-</div>
-<div class="section" id="list-roles">
-<span id="list-roles-statement"></span><h3>LIST ROLES<a class="headerlink" href="#list-roles" title="Permalink to this headline">¶</a></h3>
-<p>All the known roles (in the system or granted to specific role) can be listed using the <code class="docutils literal"><span class="pre">LIST</span> <span class="pre">ROLES</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-list_roles_statement">list_roles_statement</strong> ::=  LIST ROLES [ OF <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a> ] [ NORECURSIVE ]
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>returns all known roles in the system, this requires <code class="docutils literal"><span class="pre">DESCRIBE</span></code> permission on the database roles resource. And:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span> <span class="k">OF</span> <span class="n">alice</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>enumerates all roles granted to <code class="docutils literal"><span class="pre">alice</span></code>, including those transitively acquired. But:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span> <span class="k">OF</span> <span class="n">bob</span> <span class="k">NORECURSIVE</span>
-</pre></div>
-</div>
-<p>lists all roles directly granted to <code class="docutils literal"><span class="pre">bob</span></code> without including any of the transitively acquired ones.</p>
-</div>
-</div>
-<div class="section" id="users">
-<h2>Users<a class="headerlink" href="#users" title="Permalink to this headline">¶</a></h2>
-<p>Prior to the introduction of roles in Cassandra 2.2, authentication and authorization were based around the concept of a
-<code class="docutils literal"><span class="pre">USER</span></code>. For backward compatibility, the legacy syntax has been preserved with <code class="docutils literal"><span class="pre">USER</span></code> centric statements becoming
-synonyms for the <code class="docutils literal"><span class="pre">ROLE</span></code> based equivalents. In other words, creating/updating a user is just a different syntax for
-creating/updating a role.</p>
-<div class="section" id="create-user">
-<span id="create-user-statement"></span><h3>CREATE USER<a class="headerlink" href="#create-user" title="Permalink to this headline">¶</a></h3>
-<p>Creating a user uses the <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">USER</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_user_statement">create_user_statement</strong> ::=  CREATE USER [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a> [ WITH PASSWORD <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a> ] [ <a class="reference internal" href="#grammar-token-user_option"><code class="xref docutils literal"><span class="pre">user_option</span></code></a> ]
-<strong id="grammar-token-user_option">user_option          </strong> ::=  SUPERUSER | NOSUPERUSER
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_b&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
-</pre></div>
-</div>
-<p><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">USER</span></code> is equivalent to <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> where the <code class="docutils literal"><span class="pre">LOGIN</span></code> option is <code class="docutils literal"><span class="pre">true</span></code>. So, the following pairs of
-statements are equivalent:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">USER</span> <span class="k">IF</span> <span class="k">EXISTS</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="k">IF</span> <span class="k">EXISTS</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">WITH</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
-
-<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span><span class="p">;</span>
-<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">WITH</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="alter-user">
-<span id="alter-user-statement"></span><h3>ALTER USER<a class="headerlink" href="#alter-user" title="Permalink to this headline">¶</a></h3>
-<p>Altering the options of a user uses the <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">USER</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-alter_user_statement">alter_user_statement</strong> ::=  ALTER USER <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a> [ WITH PASSWORD <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a> ] [ <a class="reference internal" href="#grammar-token-user_option"><code class="xref docutils literal"><span class="pre">user_option</span></code></a> ]
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;PASSWORD_A&#39;</span><span class="p">;</span>
-<span class="k">ALTER</span> <span class="k">USER</span> <span class="n">bob</span> <span class="k">SUPERUSER</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="drop-user">
-<span id="drop-user-statement"></span><h3>DROP USER<a class="headerlink" href="#drop-user" title="Permalink to this headline">¶</a></h3>
-<p>Dropping a user uses the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">USER</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_user_statement">drop_user_statement</strong> ::=  DROP USER [ IF EXISTS ] <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-</pre>
-</div>
-<div class="section" id="list-users">
-<span id="list-users-statement"></span><h3>LIST USERS<a class="headerlink" href="#list-users" title="Permalink to this headline">¶</a></h3>
-<p>Existing users can be listed using the <code class="docutils literal"><span class="pre">LIST</span> <span class="pre">USERS</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-list_users_statement">list_users_statement</strong> ::=  LIST USERS
-</pre>
-<p>Note that this statement is equivalent to:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>but only roles with the <code class="docutils literal"><span class="pre">LOGIN</span></code> privilege are included in the output.</p>
-</div>
-</div>
-<div class="section" id="data-control">
-<h2>Data Control<a class="headerlink" href="#data-control" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="permissions">
-<span id="cql-permissions"></span><h3>Permissions<a class="headerlink" href="#permissions" title="Permalink to this headline">¶</a></h3>
-<p>Permissions on resources are granted to roles; there are several different types of resources in Cassandra and each type
-is modelled hierarchically:</p>
-<ul class="simple">
-<li>The hierarchy of Data resources, Keyspaces and Tables has the structure <code class="docutils literal"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code> -&gt; <code class="docutils literal"><span class="pre">KEYSPACE</span></code> -&gt;
-<code class="docutils literal"><span class="pre">TABLE</span></code>.</li>
-<li>Function resources have the structure <code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code> -&gt; <code class="docutils literal"><span class="pre">KEYSPACE</span></code> -&gt; <code class="docutils literal"><span class="pre">FUNCTION</span></code></li>
-<li>Resources representing roles have the structure <code class="docutils literal"><span class="pre">ALL</span> <span class="pre">ROLES</span></code> -&gt; <code class="docutils literal"><span class="pre">ROLE</span></code></li>
-<li>Resources representing JMX ObjectNames, which map to sets of MBeans/MXBeans, have the structure <code class="docutils literal"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code> -&gt;
-<code class="docutils literal"><span class="pre">MBEAN</span></code></li>
-</ul>
-<p>Permissions can be granted at any level of these hierarchies and they flow downwards. So granting a permission on a
-resource higher up the chain automatically grants that same permission on all resources lower down. For example,
-granting <code class="docutils literal"><span class="pre">SELECT</span></code> on a <code class="docutils literal"><span class="pre">KEYSPACE</span></code> automatically grants it on all <code class="docutils literal"><span class="pre">TABLES</span></code> in that <code class="docutils literal"><span class="pre">KEYSPACE</span></code>. Likewise, granting
-a permission on <code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code> grants it on every defined function, regardless of which keyspace it is scoped in. It
-is also possible to grant permissions on all functions scoped to a particular keyspace.</p>
-<p>Modifications to permissions are visible to existing client sessions; that is, connections need not be re-established
-following permissions changes.</p>
-<p>The full set of available permissions is:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">CREATE</span></code></li>
-<li><code class="docutils literal"><span class="pre">ALTER</span></code></li>
-<li><code class="docutils literal"><span class="pre">DROP</span></code></li>
-<li><code class="docutils literal"><span class="pre">SELECT</span></code></li>
-<li><code class="docutils literal"><span class="pre">MODIFY</span></code></li>
-<li><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></li>
-<li><code class="docutils literal"><span class="pre">DESCRIBE</span></code></li>
-<li><code class="docutils literal"><span class="pre">EXECUTE</span></code></li>
-</ul>
-<p>Not all permissions are applicable to every type of resource. For instance, <code class="docutils literal"><span class="pre">EXECUTE</span></code> is only relevant in the context
-of functions or mbeans; granting <code class="docutils literal"><span class="pre">EXECUTE</span></code> on a resource representing a table is nonsensical. Attempting to <code class="docutils literal"><span class="pre">GRANT</span></code>
-a permission on resource to which it cannot be applied results in an error response. The following illustrates which
-permissions can be granted on which types of resource, and which statements are enabled by that permission.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="13%" />
-<col width="26%" />
-<col width="61%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Permission</th>
-<th class="head">Resource</th>
-<th class="head">Operations</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">CREATE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> in any keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CREATE</span></code></td>
-<td><code class="docutils literal"><span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">CREATE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> in any keyspace and <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> in any
-keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CREATE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> in specified keyspace</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">CREATE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> in any keyspace</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">TABLE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing any existing</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing existing in
-specified keyspace</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">FUNCTION</span></code></td>
-<td><code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing existing</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> on any role</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ALTER</span></code></td>
-<td><code class="docutils literal"><span class="pre">ROLE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> in any keyspace</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">TABLE</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">TABLE</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> in any keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> in specified keyspace</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">FUNCTION</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> on any role</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DROP</span></code></td>
-<td><code class="docutils literal"><span class="pre">ROLE</span></code></td>
-<td><code class="docutils literal"><span class="pre">DROP</span> <span class="pre">ROLE</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">SELECT</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
-<td><code class="docutils literal"><span class="pre">SELECT</span></code> on any table</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">SELECT</span></code></td>
-<td><code class="docutils literal"><span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">SELECT</span></code> on any table in specified keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">SELECT</span></code></td>
-<td><code class="docutils literal"><span class="pre">TABLE</span></code></td>
-<td><code class="docutils literal"><span class="pre">SELECT</span></code> on specified table</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">SELECT</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
-<td>Call getter methods on any mbean</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">SELECT</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEANS</span></code></td>
-<td>Call getter methods on any mbean matching a wildcard pattern</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">SELECT</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEAN</span></code></td>
-<td>Call getter methods on named mbean</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">MODIFY</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
-<td><code class="docutils literal"><span class="pre">INSERT</span></code>, <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">DELETE</span></code> and <code class="docutils literal"><span class="pre">TRUNCATE</span></code> on any table</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">MODIFY</span></code></td>
-<td><code class="docutils literal"><span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">INSERT</span></code>, <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">DELETE</span></code> and <code class="docutils literal"><span class="pre">TRUNCATE</span></code> on any table in
-specified keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">MODIFY</span></code></td>
-<td><code class="docutils literal"><span class="pre">TABLE</span></code></td>
-<td><code class="docutils literal"><span class="pre">INSERT</span></code>, <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">DELETE</span></code> and <code class="docutils literal"><span class="pre">TRUNCATE</span></code> on specified table</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">MODIFY</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
-<td>Call setter methods on any mbean</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">MODIFY</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEANS</span></code></td>
-<td>Call setter methods on any mbean matching a wildcard pattern</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">MODIFY</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEAN</span></code></td>
-<td>Call setter methods on named mbean</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any table</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any table in
-specified keyspace</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">TABLE</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on specified table</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any function</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> in specified keyspace</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">FUNCTION</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on specified function</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any mbean</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEANS</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any mbean matching
-a wildcard pattern</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEAN</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on named mbean</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> on any role</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">AUTHORIZE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ROLES</span></code></td>
-<td><code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> and <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> on specified roles</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DESCRIBE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
-<td><code class="docutils literal"><span class="pre">LIST</span> <span class="pre">ROLES</span></code> on all roles or only roles granted to another,
-specified role</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DESCRIBE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
-<td>Retrieve metadata about any mbean from the platform&#8217;s MBeanServer</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">DESCRIBE</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEANS</span></code></td>
-<td>Retrieve metadata about any mbean matching a wildcard patter from the
-platform&#8217;s MBeanServer</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">DESCRIBE</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEAN</span></code></td>
-<td>Retrieve metadata about a named mbean from the platform&#8217;s MBeanServer</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">EXECUTE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
-<td><code class="docutils literal"><span class="pre">SELECT</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">UPDATE</span></code> using any function, and use of
-any function in <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">EXECUTE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
-<td><code class="docutils literal"><span class="pre">SELECT</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">UPDATE</span></code> using any function in specified
-keyspace and use of any function in keyspace in <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">EXECUTE</span></code></td>
-<td><code class="docutils literal"><span class="pre">FUNCTION</span></code></td>
-<td><code class="docutils literal"><span class="pre">SELECT</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">UPDATE</span></code> using specified function and use
-of the function in <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">EXECUTE</span></code></td>
-<td><code class="docutils literal"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
-<td>Execute operations on any mbean</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">EXECUTE</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEANS</span></code></td>
-<td>Execute operations on any mbean matching a wildcard pattern</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">EXECUTE</span></code></td>
-<td><code class="docutils literal"><span class="pre">MBEAN</span></code></td>
-<td>Execute operations on named mbean</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="grant-permission">
-<span id="grant-permission-statement"></span><h3>GRANT PERMISSION<a class="headerlink" href="#grant-permission" title="Permalink to this headline">¶</a></h3>
-<p>Granting a permission uses the <code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-grant_permission_statement">grant_permission_statement</strong> ::=  GRANT <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal"><span class="pre">permissions</span></code></a> ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal"><span class="pre">resource</span></code></a> TO <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-<strong id="grammar-token-permissions">permissions               </strong> ::=  ALL [ PERMISSIONS ] | <a class="reference internal" href="#grammar-token-permission"><code class="xref docutils literal"><span class="pre">permission</span></code></a> [ PERMISSION ]
-<strong id="grammar-token-permission">permission                </strong> ::=  CREATE | ALTER | DROP | SELECT | MODIFY | AUTHORIZE | DESCRIBE | EXECUTE
-<strong id="grammar-token-resource">resource                  </strong> ::=  ALL KEYSPACES
-                               | KEYSPACE <a class="reference internal" href="ddl.html#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a>
-                               | [ TABLE ] <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-                               | ALL ROLES
-                               | ROLE <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-                               | ALL FUNCTIONS [ IN KEYSPACE <a class="reference internal" href="ddl.html#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a> ]
-                               | FUNCTION <a class="reference internal" href="functions.html#grammar-token-function_name"><code class="xref docutils literal"><span class="pre">function_name</span></code></a> '(' [ <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="types.html#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> )* ] ')'
-                               | ALL MBEANS
-                               | ( MBEAN | MBEANS ) <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">SELECT</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">KEYSPACES</span> <span class="k">TO</span> <span class="n">data_reader</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>This gives any user with the role <code class="docutils literal"><span class="pre">data_reader</span></code> permission to execute <code class="docutils literal"><span class="pre">SELECT</span></code> statements on any table across all
-keyspaces:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">MODIFY</span> <span class="k">ON</span> <span class="k">KEYSPACE</span> <span class="n">keyspace1</span> <span class="k">TO</span> <span class="n">data_writer</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>This give any user with the role <code class="docutils literal"><span class="pre">data_writer</span></code> permission to perform <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code>, <code class="docutils literal"><span class="pre">UPDATE</span></code>, <code class="docutils literal"><span class="pre">DELETE</span></code>
-and <code class="docutils literal"><span class="pre">TRUNCATE</span></code> queries on all tables in the <code class="docutils literal"><span class="pre">keyspace1</span></code> keyspace:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">DROP</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">TO</span> <span class="n">schema_owner</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>This gives any user with the <code class="docutils literal"><span class="pre">schema_owner</span></code> role permissions to <code class="docutils literal"><span class="pre">DROP</span></code> <code class="docutils literal"><span class="pre">keyspace1.table1</span></code>:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">EXECUTE</span> <span class="k">ON</span> <span class="k">FUNCTION</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">user_function</span><span class="p">(</span> <span class="nb">int</span> <span class="p">)</span> <span class="k">TO</span> <span class="n">report_writer</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>This grants any user with the <code class="docutils literal"><span class="pre">report_writer</span></code> role permission to execute <code class="docutils literal"><span class="pre">SELECT</span></code>, <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">UPDATE</span></code> queries
-which use the function <code class="docutils literal"><span class="pre">keyspace1.user_function(</span> <span class="pre">int</span> <span class="pre">)</span></code>:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">DESCRIBE</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">ROLES</span> <span class="k">TO</span> <span class="n">role_admin</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>This grants any user with the <code class="docutils literal"><span class="pre">role_admin</span></code> role permission to view any and all roles in the system with a <code class="docutils literal"><span class="pre">LIST</span>
-<span class="pre">ROLES</span></code> statement</p>
-<div class="section" id="grant-all">
-<span id="id2"></span><h4>GRANT ALL<a class="headerlink" href="#grant-all" title="Permalink to this headline">¶</a></h4>
-<p>When the <code class="docutils literal"><span class="pre">GRANT</span> <span class="pre">ALL</span></code> form is used, the appropriate set of permissions is determined automatically based on the target
-resource.</p>
-</div>
-<div class="section" id="automatic-granting">
-<h4>Automatic Granting<a class="headerlink" href="#automatic-granting" title="Permalink to this headline">¶</a></h4>
-<p>When a resource is created, via a <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code>, <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code>, <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code>, <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> or
-<code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> statement, the creator (the role the database user who issues the statement is identified as), is
-automatically granted all applicable permissions on the new resource.</p>
-</div>
-</div>
-<div class="section" id="revoke-permission">
-<span id="revoke-permission-statement"></span><h3>REVOKE PERMISSION<a class="headerlink" href="#revoke-permission" title="Permalink to this headline">¶</a></h3>
-<p>Revoking a permission from a role uses the <code class="docutils literal"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-revoke_permission_statement">revoke_permission_statement</strong> ::=  REVOKE <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal"><span class="pre">permissions</span></code></a> ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal"><span class="pre">resource</span></code></a> FROM <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">REVOKE</span> <span class="k">SELECT</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">KEYSPACES</span> <span class="k">FROM</span> <span class="n">data_reader</span><span class="p">;</span>
-<span class="k">REVOKE</span> <span class="k">MODIFY</span> <span class="k">ON</span> <span class="k">KEYSPACE</span> <span class="n">keyspace1</span> <span class="k">FROM</span> <span class="n">data_writer</span><span class="p">;</span>
-<span class="k">REVOKE</span> <span class="k">DROP</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">FROM</span> <span class="n">schema_owner</span><span class="p">;</span>
-<span class="k">REVOKE</span> <span class="k">EXECUTE</span> <span class="k">ON</span> <span class="k">FUNCTION</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">user_function</span><span class="p">(</span> <span class="nb">int</span> <span class="p">)</span> <span class="k">FROM</span> <span class="n">report_writer</span><span class="p">;</span>
-<span class="k">REVOKE</span> <span class="k">DESCRIBE</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">ROLES</span> <span class="k">FROM</span> <span class="n">role_admin</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="list-permissions">
-<span id="list-permissions-statement"></span><h3>LIST PERMISSIONS<a class="headerlink" href="#list-permissions" title="Permalink to this headline">¶</a></h3>
-<p>Listing granted permissions uses the <code class="docutils literal"><span class="pre">LIST</span> <span class="pre">PERMISSIONS</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-list_permissions_statement">list_permissions_statement</strong> ::=  LIST <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal"><span class="pre">permissions</span></code></a> [ ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal"><span class="pre">resource</span></code></a> ] [ OF <a class="reference internal" href="#grammar-token-role_name"><code class="xref docutils literal"><span class="pre">role_name</span></code></a> [ NORECURSIVE ] ]
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ALL</span> <span class="k">PERMISSIONS</span> <span class="k">OF</span> <span class="n">alice</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Show all permissions granted to <code class="docutils literal"><span class="pre">alice</span></code>, including those acquired transitively from any other roles:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ALL</span> <span class="k">PERMISSIONS</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">OF</span> <span class="n">bob</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Show all permissions on <code class="docutils literal"><span class="pre">keyspace1.table1</span></code> granted to <code class="docutils literal"><span class="pre">bob</span></code>, including those acquired transitively from any other
-roles. This also includes any permissions higher up the resource hierarchy which can be applied to <code class="docutils literal"><span class="pre">keyspace1.table1</span></code>.
-For example, should <code class="docutils literal"><span class="pre">bob</span></code> have <code class="docutils literal"><span class="pre">ALTER</span></code> permission on <code class="docutils literal"><span class="pre">keyspace1</span></code>, that would be included in the results of this
-query. Adding the <code class="docutils literal"><span class="pre">NORECURSIVE</span></code> switch restricts the results to only those permissions which were directly granted to
-<code class="docutils literal"><span class="pre">bob</span></code> or one of <code class="docutils literal"><span class="pre">bob</span></code>&#8216;s roles:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">SELECT</span> <span class="k">PERMISSIONS</span> <span class="k">OF</span> <span class="n">carlos</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Show any permissions granted to <code class="docutils literal"><span class="pre">carlos</span></code> or any of <code class="docutils literal"><span class="pre">carlos</span></code>&#8216;s roles, limited to <code class="docutils literal"><span class="pre">SELECT</span></code> permissions on any
-resource.</p>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="functions.html" class="btn btn-default pull-right " role="button" title="Functions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="mvs.html" class="btn btn-default" role="button" title="Materialized Views" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/triggers.html b/src/doc/3.10/cql/triggers.html
deleted file mode 100644
index 2caeb23..0000000
--- a/src/doc/3.10/cql/triggers.html
+++ /dev/null
@@ -1,155 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Triggers"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Appendices" href="appendices.html"/>
-      <link rel="prev" title="JSON Support" href="json.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Triggers</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#create-trigger">CREATE TRIGGER</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#drop-trigger">DROP TRIGGER</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="triggers">
-<span id="cql-triggers"></span><h1>Triggers<a class="headerlink" href="#triggers" title="Permalink to this headline">¶</a></h1>
-<p>Triggers are identified by a name defined by:</p>
-<pre>
-<strong id="grammar-token-trigger_name">trigger_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a>
-</pre>
-<div class="section" id="create-trigger">
-<span id="create-trigger-statement"></span><h2>CREATE TRIGGER<a class="headerlink" href="#create-trigger" title="Permalink to this headline">¶</a></h2>
-<p>Creating a new trigger uses the <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TRIGGER</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-create_trigger_statement">create_trigger_statement</strong> ::=  CREATE TRIGGER [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-trigger_name"><code class="xref docutils literal"><span class="pre">trigger_name</span></code></a>
-                                  ON <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-                                  USING <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TRIGGER</span> <span class="n">myTrigger</span> <span class="k">ON</span> <span class="n">myTable</span> <span class="k">USING</span> <span class="s1">&#39;org.apache.cassandra.triggers.InvertedIndex&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>The actual logic that makes up the trigger can be written in any Java (JVM) language and exists outside the database.
-You place the trigger code in a <code class="docutils literal"><span class="pre">lib/triggers</span></code> subdirectory of the Cassandra installation directory, it loads during
-cluster startup, and exists on every node that participates in a cluster. The trigger defined on a table fires before a
-requested DML statement occurs, which ensures the atomicity of the transaction.</p>
-</div>
-<div class="section" id="drop-trigger">
-<span id="drop-trigger-statement"></span><h2>DROP TRIGGER<a class="headerlink" href="#drop-trigger" title="Permalink to this headline">¶</a></h2>
-<p>Dropping a trigger uses the <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">TRIGGER</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_trigger_statement">drop_trigger_statement</strong> ::=  DROP TRIGGER [ IF EXISTS ] <a class="reference internal" href="#grammar-token-trigger_name"><code class="xref docutils literal"><span class="pre">trigger_name</span></code></a> ON <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
-</pre>
-<p>For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">TRIGGER</span> <span class="n">myTrigger</span> <span class="k">ON</span> <span class="n">myTable</span><span class="p">;</span>
-</pre></div>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="appendices.html" class="btn btn-default pull-right " role="button" title="Appendices" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="json.html" class="btn btn-default" role="button" title="JSON Support" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/cql/types.html b/src/doc/3.10/cql/types.html
deleted file mode 100644
index c35e2d4..0000000
--- a/src/doc/3.10/cql/types.html
+++ /dev/null
@@ -1,652 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "The Cassandra Query Language (CQL)"
-
-doc-title: "Data Types"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
-      <link rel="next" title="Data Definition" href="ddl.html"/>
-      <link rel="prev" title="Definitions" href="definitions.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Types</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#native-types">Native Types</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#working-with-timestamps">Working with timestamps</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#working-with-dates">Working with dates</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#working-with-times">Working with times</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#collections">Collections</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#user-defined-types">User-Defined Types</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#tuples">Tuples</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#custom-types">Custom Types</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
-<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
-<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
-<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="data-types">
-<span id="id1"></span><h1>Data Types<a class="headerlink" href="#data-types" title="Permalink to this headline">¶</a></h1>
-<p>CQL is a typed language and supports a rich set of data types, including <a class="reference internal" href="#native-types"><span class="std std-ref">native types</span></a>,
-<a class="reference internal" href="#collections"><span class="std std-ref">collection types</span></a>, <a class="reference internal" href="#udts"><span class="std std-ref">user-defined types</span></a>, <a class="reference internal" href="#tuples"><span class="std std-ref">tuple types</span></a> and <a class="reference internal" href="#custom-types"><span class="std std-ref">custom
-types</span></a>:</p>
-<pre>
-<strong id="grammar-token-cql_type">cql_type</strong> ::=  <a class="reference internal" href="#grammar-token-native_type"><code class="xref docutils literal"><span class="pre">native_type</span></code></a> | <a class="reference internal" href="#grammar-token-collection_type"><code class="xref docutils literal"><span class="pre">collection_type</span></code></a> | <a class="reference internal" href="#grammar-token-user_defined_type"><code class="xref docutils literal"><span class="pre">user_defined_type</span></code></a> | <a class="reference internal" href="#grammar-token-tuple_type"><code class="xref docutils literal"><span class="pre">tuple_type</span></code></a> | <a class="reference internal" href="#grammar-token-custom_type"><code class="xref docutils literal"><span class="pre">custom_type</span></code></a>
-</pre>
-<div class="section" id="native-types">
-<span id="id2"></span><h2>Native Types<a class="headerlink" href="#native-types" title="Permalink to this headline">¶</a></h2>
-<p>The native types supported by CQL are:</p>
-<pre>
-<strong id="grammar-token-native_type">native_type</strong> ::=  ASCII
-                 | BIGINT
-                 | BLOB
-                 | BOOLEAN
-                 | COUNTER
-                 | DATE
-                 | DECIMAL
-                 | DOUBLE
-                 | FLOAT
-                 | INET
-                 | INT
-                 | SMALLINT
-                 | TEXT
-                 | TIME
-                 | TIMESTAMP
-                 | TIMEUUID
-                 | TINYINT
-                 | UUID
-                 | VARCHAR
-                 | VARINT
-</pre>
-<p>The following table gives additional informations on the native data types, and on which kind of <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">constants</span></a> each type supports:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="13%" />
-<col width="18%" />
-<col width="69%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">type</th>
-<th class="head">constants supported</th>
-<th class="head">description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">ascii</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a></td>
-<td>ASCII character string</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">bigint</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a></td>
-<td>64-bit signed long</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">blob</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-blob"><code class="xref std std-token docutils literal"><span class="pre">blob</span></code></a></td>
-<td>Arbitrary bytes (no validation)</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">boolean</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref std std-token docutils literal"><span class="pre">boolean</span></code></a></td>
-<td>Either <code class="docutils literal"><span class="pre">true</span></code> or <code class="docutils literal"><span class="pre">false</span></code></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">counter</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a></td>
-<td>Counter column (64-bit signed value). See <a class="reference internal" href="#counters"><span class="std std-ref">Counters</span></a> for details</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">date</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a>,
-<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a></td>
-<td>A date (with no corresponding time value). See <a class="reference internal" href="#dates"><span class="std std-ref">Working with dates</span></a> below for details</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">decimal</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a>,
-<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal"><span class="pre">float</span></code></a></td>
-<td>Variable-precision decimal</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">double</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a>
-<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal"><span class="pre">float</span></code></a></td>
-<td>64-bit IEEE-754 floating point</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">float</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a>,
-<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal"><span class="pre">float</span></code></a></td>
-<td>32-bit IEEE-754 floating point</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">inet</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a></td>
-<td>An IP address, either IPv4 (4 bytes long) or IPv6 (16 bytes long). Note that
-there is no <code class="docutils literal"><span class="pre">inet</span></code> constant, IP address should be input as strings</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">int</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a></td>
-<td>32-bit signed int</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">smallint</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a></td>
-<td>16-bit signed int</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">text</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a></td>
-<td>UTF8 encoded string</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">time</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a>,
-<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a></td>
-<td>A time (with no corresponding date value) with nanosecond precision. See
-<a class="reference internal" href="#times"><span class="std std-ref">Working with times</span></a> below for details</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">timestamp</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a>,
-<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a></td>
-<td>A timestamp (date and time) with millisecond precision. See <a class="reference internal" href="#timestamps"><span class="std std-ref">Working with timestamps</span></a>
-below for details</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">timeuuid</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-uuid"><code class="xref std std-token docutils literal"><span class="pre">uuid</span></code></a></td>
-<td>Version 1 <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a>, generally used as a “conflict-free” timestamp. Also see
-<a class="reference internal" href="functions.html#timeuuid-functions"><span class="std std-ref">Timeuuid functions</span></a></td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">tinyint</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a></td>
-<td>8-bit signed int</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">uuid</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-uuid"><code class="xref std std-token docutils literal"><span class="pre">uuid</span></code></a></td>
-<td>A <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a> (of any version)</td>
-</tr>
-<tr class="row-even"><td><code class="docutils literal"><span class="pre">varchar</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a></td>
-<td>UTF8 encoded string</td>
-</tr>
-<tr class="row-odd"><td><code class="docutils literal"><span class="pre">varint</span></code></td>
-<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a></td>
-<td>Arbitrary-precision integer</td>
-</tr>
-</tbody>
-</table>
-<div class="section" id="counters">
-<span id="id3"></span><h3>Counters<a class="headerlink" href="#counters" title="Permalink to this headline">¶</a></h3>
-<p>The <code class="docutils literal"><span class="pre">counter</span></code> type is used to define <em>counter columns</em>. A counter column is a column whose value is a 64-bit signed
-integer and on which 2 operations are supported: incrementing and decrementing (see the <a class="reference internal" href="dml.html#update-statement"><span class="std std-ref">UPDATE statement</span></a> for syntax). Note that the value of a counter cannot be set: a counter does not exist until first
-incremented/decremented, and that first increment/decrement is made as if the prior value was 0.</p>
-<p id="counter-limitations">Counters have a number of important limitations:</p>
-<ul class="simple">
-<li>They cannot be used for columns part of the <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> of a table.</li>
-<li>A table that contains a counter can only contain counters. In other words, either all the columns of a table outside
-the <code class="docutils literal"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> have the <code class="docutils literal"><span class="pre">counter</span></code> type, or none of them have it.</li>
-<li>Counters do not support <span class="xref std std-ref">expiration</span>.</li>
-<li>The deletion of counters is supported, but is only guaranteed to work the first time you delete a counter. In other
-words, you should not re-update a counter that you have deleted (if you do, proper behavior is not guaranteed).</li>
-<li>Counter updates are, by nature, not <a class="reference external" href="https://en.wikipedia.org/wiki/Idempotence">idemptotent</a>. An important
-consequence is that if a counter update fails unexpectedly (timeout or loss of connection to the coordinator node),
-the client has no way to know if the update has been applied or not. In particular, replaying the update may or may
-not lead to an over count.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="working-with-timestamps">
-<span id="timestamps"></span><h2>Working with timestamps<a class="headerlink" href="#working-with-timestamps" title="Permalink to this headline">¶</a></h2>
-<p>Values of the <code class="docutils literal"><span class="pre">timestamp</span></code> type are encoded as 64-bit signed integers representing a number of milliseconds since the
-standard base time known as <a class="reference external" href="https://en.wikipedia.org/wiki/Unix_time">the epoch</a>: January 1 1970 at 00:00:00 GMT.</p>
-<p>Timestamps can be input in CQL either using their value as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a>, or using a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a> that
-represents an <a class="reference external" href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date. For instance, all of the values below are
-valid <code class="docutils literal"><span class="pre">timestamp</span></code> values for  Mar 2, 2011, at 04:05:00 AM, GMT:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">1299038700000</span></code></li>
-<li><code class="docutils literal"><span class="pre">'2011-02-03</span> <span class="pre">04:05+0000'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00+0000'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00.000+0000'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'2011-02-03T04:05+0000'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'2011-02-03T04:05:00+0000'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'2011-02-03T04:05:00.000+0000'</span></code></li>
-</ul>
-<p>The <code class="docutils literal"><span class="pre">+0000</span></code> above is an RFC 822 4-digit time zone specification; <code class="docutils literal"><span class="pre">+0000</span></code> refers to GMT. US Pacific Standard Time is
-<code class="docutils literal"><span class="pre">-0800</span></code>. The time zone may be omitted if desired (<code class="docutils literal"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00'</span></code>), and if so, the date will be interpreted
-as being in the time zone under which the coordinating Cassandra node is configured. There are however difficulties
-inherent in relying on the time zone configuration being as expected, so it is recommended that the time zone always be
-specified for timestamps when feasible.</p>
-<p>The time of day may also be omitted (<code class="docutils literal"><span class="pre">'2011-02-03'</span></code> or <code class="docutils literal"><span class="pre">'2011-02-03+0000'</span></code>), in which case the time of day will
-default to 00:00:00 in the specified or default time zone. However, if only the date part is relevant, consider using
-the <a class="reference internal" href="#dates"><span class="std std-ref">date</span></a> type.</p>
-</div>
-<div class="section" id="working-with-dates">
-<span id="dates"></span><h2>Working with dates<a class="headerlink" href="#working-with-dates" title="Permalink to this headline">¶</a></h2>
-<p>Values of the <code class="docutils literal"><span class="pre">date</span></code> type are encoded as 32-bit unsigned integers representing a number of days with “the epoch” at
-the center of the range (2^31). Epoch is January 1st, 1970</p>
-<p>As for <a class="reference internal" href="#timestamps"><span class="std std-ref">timestamp</span></a>, a date can be input either as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a> or using a date
-<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a>. In the later case, the format should be <code class="docutils literal"><span class="pre">yyyy-mm-dd</span></code> (so <code class="docutils literal"><span class="pre">'2011-02-03'</span></code> for instance).</p>
-</div>
-<div class="section" id="working-with-times">
-<span id="times"></span><h2>Working with times<a class="headerlink" href="#working-with-times" title="Permalink to this headline">¶</a></h2>
-<p>Values of the <code class="docutils literal"><span class="pre">time</span></code> type are encoded as 64-bit signed integers representing the number of nanoseconds since midnight.</p>
-<p>As for <a class="reference internal" href="#timestamps"><span class="std std-ref">timestamp</span></a>, a time can be input either as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal"><span class="pre">integer</span></code></a> or using a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a>
-representing the time. In the later case, the format should be <code class="docutils literal"><span class="pre">hh:mm:ss[.fffffffff]</span></code> (where the sub-second precision
-is optional and if provided, can be less than the nanosecond). So for instance, the following are valid inputs for a
-time:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">'08:12:54'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'08:12:54.123'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'08:12:54.123456'</span></code></li>
-<li><code class="docutils literal"><span class="pre">'08:12:54.123456789'</span></code></li>
-</ul>
-</div>
-<div class="section" id="collections">
-<span id="id4"></span><h2>Collections<a class="headerlink" href="#collections" title="Permalink to this headline">¶</a></h2>
-<p>CQL supports 3 kind of collections: <a class="reference internal" href="#maps"><span class="std std-ref">Maps</span></a>, <a class="reference internal" href="#sets"><span class="std std-ref">Sets</span></a> and <a class="reference internal" href="#lists"><span class="std std-ref">Lists</span></a>. The types of those collections is defined
-by:</p>
-<pre>
-<strong id="grammar-token-collection_type">collection_type</strong> ::=  MAP '&lt;' <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> ',' <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> '&gt;'
-                     | SET '&lt;' <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> '&gt;'
-                     | LIST '&lt;' <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> '&gt;'
-</pre>
-<p>and their values can be inputd using collection literals:</p>
-<pre>
-<strong id="grammar-token-collection_literal">collection_literal</strong> ::=  <a class="reference internal" href="#grammar-token-map_literal"><code class="xref docutils literal"><span class="pre">map_literal</span></code></a> | <a class="reference internal" href="#grammar-token-set_literal"><code class="xref docutils literal"><span class="pre">set_literal</span></code></a> | <a class="reference internal" href="#grammar-token-list_literal"><code class="xref docutils literal"><span class="pre">list_literal</span></code></a>
-<strong id="grammar-token-map_literal">map_literal       </strong> ::=  '{' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> : <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>)* ] '}'
-<strong id="grammar-token-set_literal">set_literal       </strong> ::=  '{' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>)* ] '}'
-<strong id="grammar-token-list_literal">list_literal      </strong> ::=  '[' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>)* ] ']'
-</pre>
-<p>Note however that neither <a class="reference internal" href="definitions.html#grammar-token-bind_marker"><code class="xref std std-token docutils literal"><span class="pre">bind_marker</span></code></a> nor <code class="docutils literal"><span class="pre">NULL</span></code> are supported inside collection literals.</p>
-<div class="section" id="noteworthy-characteristics">
-<h3>Noteworthy characteristics<a class="headerlink" href="#noteworthy-characteristics" title="Permalink to this headline">¶</a></h3>
-<p>Collections are meant for storing/denormalizing relatively small amount of data. They work well for things like “the
-phone numbers of a given user”, “labels applied to an email”, etc. But when items are expected to grow unbounded (“all
-messages sent by a user”, “events registered by a sensor”...), then collections are not appropriate and a specific table
-(with clustering columns) should be used. Concretely, (non-frozen) collections have the following noteworthy
-characteristics and limitations:</p>
-<ul class="simple">
-<li>Individual collections are not indexed internally. Which means that even to access a single element of a collection,
-the while collection has to be read (and reading one is not paged internally).</li>
-<li>While insertion operations on sets and maps never incur a read-before-write internally, some operations on lists do.
-Further, some lists operations are not idempotent by nature (see the section on <a class="reference internal" href="#lists"><span class="std std-ref">lists</span></a> below for
-details), making their retry in case of timeout problematic. It is thus advised to prefer sets over lists when
-possible.</li>
-</ul>
-<p>Please note that while some of those limitations may or may not be removed/improved upon in the future, it is a
-anti-pattern to use a (single) collection to store large amounts of data.</p>
-</div>
-<div class="section" id="maps">
-<span id="id5"></span><h3>Maps<a class="headerlink" href="#maps" title="Permalink to this headline">¶</a></h3>
-<p>A <code class="docutils literal"><span class="pre">map</span></code> is a (sorted) set of key-value pairs, where keys are unique and the map is sorted by its keys. You can define
-and insert a map with:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
-    <span class="n">id</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">name</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">favs</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="nb">text</span><span class="o">&gt;</span> <span class="c1">// A map of text keys, and text values</span>
-<span class="p">);</span>
-
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">favs</span><span class="p">)</span>
-           <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;jsmith&#39;</span><span class="p">,</span> <span class="s1">&#39;John Smith&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s1">&#39;fruit&#39;</span> <span class="p">:</span> <span class="s1">&#39;Apple&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span> <span class="p">:</span> <span class="s1">&#39;Beatles&#39;</span> <span class="p">});</span>
-
-<span class="c1">// Replace the existing map entirely.</span>
-<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;fruit&#39;</span> <span class="p">:</span> <span class="s1">&#39;Banana&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Further, maps support:</p>
-<ul>
-<li><p class="first">Updating or inserting one or more elements:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;author&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;Ed Poe&#39;</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
-<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="n">favs</span> <span class="o">+</span> <span class="p">{</span> <span class="s1">&#39;movie&#39;</span> <span class="p">:</span> <span class="s1">&#39;Cassablanca&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span> <span class="p">:</span> <span class="s1">&#39;ZZ Top&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">Removing one or more element (if an element doesn&#8217;t exist, removing it is a no-op but no error is thrown):</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;author&#39;</span><span class="p">]</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
-<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="n">favs</span> <span class="o">-</span> <span class="p">{</span> <span class="s1">&#39;movie&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span><span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Note that for removing multiple elements in a <code class="docutils literal"><span class="pre">map</span></code>, you remove from it a <code class="docutils literal"><span class="pre">set</span></code> of keys.</p>
-</li>
-</ul>
-<p>Lastly, TTLs are allowed for both <code class="docutils literal"><span class="pre">INSERT</span></code> and <code class="docutils literal"><span class="pre">UPDATE</span></code>, but in both case the TTL set only apply to the newly
-inserted/updated elements. In other words:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="k">users</span> <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">10</span> <span class="k">SET</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;green&#39;</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>will only apply the TTL to the <code class="docutils literal"><span class="pre">{</span> <span class="pre">'color'</span> <span class="pre">:</span> <span class="pre">'green'</span> <span class="pre">}</span></code> record, the rest of the map remaining unaffected.</p>
-</div>
-<div class="section" id="sets">
-<span id="id6"></span><h3>Sets<a class="headerlink" href="#sets" title="Permalink to this headline">¶</a></h3>
-<p>A <code class="docutils literal"><span class="pre">set</span></code> is a (sorted) collection of unique values. You can define and insert a map with:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">images</span> <span class="p">(</span>
-    <span class="n">name</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">owner</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">tags</span> <span class="k">set</span><span class="o">&lt;</span><span class="nb">text</span><span class="o">&gt;</span> <span class="c1">// A set of text values</span>
-<span class="p">);</span>
-
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">images</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">owner</span><span class="p">,</span> <span class="n">tags</span><span class="p">)</span>
-            <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;cat.jpg&#39;</span><span class="p">,</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s1">&#39;pet&#39;</span><span class="p">,</span> <span class="s1">&#39;cute&#39;</span> <span class="p">});</span>
-
-<span class="c1">// Replace the existing set entirely</span>
-<span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;kitten&#39;</span><span class="p">,</span> <span class="s1">&#39;cat&#39;</span><span class="p">,</span> <span class="s1">&#39;lol&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Further, sets support:</p>
-<ul>
-<li><p class="first">Adding one or multiple elements (as this is a set, inserting an already existing element is a no-op):</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">+</span> <span class="p">{</span> <span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="s1">&#39;cuddly&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">Removing one or multiple elements (if an element doesn&#8217;t exist, removing it is a no-op but no error is thrown):</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">-</span> <span class="p">{</span> <span class="s1">&#39;cat&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</li>
-</ul>
-<p>Lastly, as for <a class="reference internal" href="#maps"><span class="std std-ref">maps</span></a>, TTLs if used only apply to the newly inserted values.</p>
-</div>
-<div class="section" id="lists">
-<span id="id7"></span><h3>Lists<a class="headerlink" href="#lists" title="Permalink to this headline">¶</a></h3>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">As mentioned above and further discussed at the end of this section, lists have limitations and specific
-performance considerations that you should take into account before using them. In general, if you can use a
-<a class="reference internal" href="#sets"><span class="std std-ref">set</span></a> instead of list, always prefer a set.</p>
-</div>
-<p>A <code class="docutils literal"><span class="pre">list</span></code> is a (sorted) collection of non-unique values where elements are ordered by there position in the list. You
-can define and insert a list with:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">plays</span> <span class="p">(</span>
-    <span class="n">id</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">game</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">players</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">scores</span> <span class="k">list</span><span class="o">&lt;</span><span class="nb">int</span><span class="o">&gt;</span> <span class="c1">// A list of integers</span>
-<span class="p">)</span>
-
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">plays</span> <span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">game</span><span class="p">,</span> <span class="n">players</span><span class="p">,</span> <span class="n">scores</span><span class="p">)</span>
-           <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;123-afde&#39;</span><span class="p">,</span> <span class="s1">&#39;quake&#39;</span><span class="p">,</span> <span class="mf">3</span><span class="p">,</span> <span class="p">[</span><span class="mf">17</span><span class="p">,</span> <span class="mf">4</span><span class="p">,</span> <span class="mf">2</span><span class="p">]);</span>
-
-<span class="c1">// Replace the existing list entirely</span>
-<span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">3</span><span class="p">,</span> <span class="mf">9</span><span class="p">,</span> <span class="mf">4</span><span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-<p>Further, lists support:</p>
-<ul>
-<li><p class="first">Appending and prepending values to a list:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">players</span> <span class="o">=</span> <span class="mf">5</span><span class="p">,</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span> <span class="o">+</span> <span class="p">[</span> <span class="mf">14</span><span class="p">,</span> <span class="mf">21</span> <span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
-<span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">players</span> <span class="o">=</span> <span class="mf">6</span><span class="p">,</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">3</span> <span class="p">]</span> <span class="o">+</span> <span class="n">scores</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">Setting the value at a particular position in the list. This imply that the list has a pre-existing element for that
-position or an error will be thrown that the list is too small:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">7</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">Removing an element by its position in the list. This imply that the list has a pre-existing element for that position
-or an error will be thrown that the list is too small. Further, as the operation removes an element from the list, the
-list size will be diminished by 1, shifting the position of all the elements following the one deleted:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="n">scores</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span> <span class="k">FROM</span> <span class="n">plays</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">Deleting <em>all</em> the occurrences of particular values in the list (if a particular element doesn&#8217;t occur at all in the
-list, it is simply ignored and no error is thrown):</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span> <span class="o">-</span> <span class="p">[</span> <span class="mf">12</span><span class="p">,</span> <span class="mf">21</span> <span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
-</pre></div>
-</div>
-</li>
-</ul>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">The append and prepend operations are not idempotent by nature. So in particular, if one of these operation
-timeout, then retrying the operation is not safe and it may (or may not) lead to appending/prepending the value
-twice.</p>
-</div>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Setting and removing an element by position and removing occurences of particular values incur an internal
-<em>read-before-write</em>. They will thus run more slowly and take more ressources than usual updates (with the exclusion
-of conditional write that have their own cost).</p>
-</div>
-<p>Lastly, as for <a class="reference internal" href="#maps"><span class="std std-ref">maps</span></a>, TTLs when used only apply to the newly inserted values.</p>
-</div>
-</div>
-<div class="section" id="user-defined-types">
-<span id="udts"></span><h2>User-Defined Types<a class="headerlink" href="#user-defined-types" title="Permalink to this headline">¶</a></h2>
-<p>CQL support the definition of user-defined types (UDT for short). Such a type can be created, modified and removed using
-the <a class="reference internal" href="#grammar-token-create_type_statement"><code class="xref std std-token docutils literal"><span class="pre">create_type_statement</span></code></a>, <a class="reference internal" href="#grammar-token-alter_type_statement"><code class="xref std std-token docutils literal"><span class="pre">alter_type_statement</span></code></a> and <a class="reference internal" href="#grammar-token-drop_type_statement"><code class="xref std std-token docutils literal"><span class="pre">drop_type_statement</span></code></a> described below. But
-once created, a UDT is simply referred to by its name:</p>
-<pre>
-<strong id="grammar-token-user_defined_type">user_defined_type</strong> ::=  <a class="reference internal" href="#grammar-token-udt_name"><code class="xref docutils literal"><span class="pre">udt_name</span></code></a>
-<strong id="grammar-token-udt_name">udt_name         </strong> ::=  [ <a class="reference internal" href="ddl.html#grammar-token-keyspace_name"><code class="xref docutils literal"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a>
-</pre>
-<div class="section" id="creating-a-udt">
-<h3>Creating a UDT<a class="headerlink" href="#creating-a-udt" title="Permalink to this headline">¶</a></h3>
-<p>Creating a new user-defined type is done using a <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TYPE</span></code> statement defined by:</p>
-<pre>
-<strong id="grammar-token-create_type_statement">create_type_statement</strong> ::=  CREATE TYPE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-udt_name"><code class="xref docutils literal"><span class="pre">udt_name</span></code></a>
-                               '(' <a class="reference internal" href="#grammar-token-field_definition"><code class="xref docutils literal"><span class="pre">field_definition</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-field_definition"><code class="xref docutils literal"><span class="pre">field_definition</span></code></a> )* ')'
-<strong id="grammar-token-field_definition">field_definition     </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a>
-</pre>
-<p>A UDT has a name (used to declared columns of that type) and is a set of named and typed fields. Fields name can be any
-type, including collections or other UDT. For instance:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">phone</span> <span class="p">(</span>
-    <span class="n">country_code</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">number</span> <span class="nb">text</span><span class="p">,</span>
-<span class="p">)</span>
-
-<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">address</span> <span class="p">(</span>
-    <span class="n">street</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">city</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">zip</span> <span class="nb">int</span><span class="p">,</span>
-    <span class="n">phones</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="n">phone</span><span class="o">&gt;</span>
-<span class="p">)</span>
-
-<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">user</span> <span class="p">(</span>
-    <span class="n">name</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
-    <span class="n">addresses</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">address</span><span class="o">&gt;&gt;</span>
-<span class="p">)</span>
-</pre></div>
-</div>
-<p>Note that:</p>
-<ul class="simple">
-<li>Attempting to create an already existing type will result in an error unless the <code class="docutils literal"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If
-it is used, the statement will be a no-op if the type already exists.</li>
-<li>A type is intrinsically bound to the keyspace in which it is created, and can only be used in that keyspace. At
-creation, if the type name is prefixed by a keyspace name, it is created in that keyspace. Otherwise, it is created in
-the current keyspace.</li>
-<li>As of Cassandra 3.10, UDT have to be frozen in most cases, hence the <code class="docutils literal"><span class="pre">frozen&lt;address&gt;</span></code> in the table definition
-above. Please see the section on <span class="xref std std-ref">frozen</span> for more details.</li>
-</ul>
-</div>
-<div class="section" id="udt-literals">
-<h3>UDT literals<a class="headerlink" href="#udt-literals" title="Permalink to this headline">¶</a></h3>
-<p>Once a used-defined type has been created, value can be input using a UDT literal:</p>
-<pre>
-<strong id="grammar-token-udt_literal">udt_literal</strong> ::=  '{' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> )* '}'
-</pre>
-<p>In other words, a UDT literal is like a <a class="reference internal" href="#maps"><span class="std std-ref">map</span></a> literal but its keys are the names of the fields of the type.
-For instance, one could insert into the table define in the previous section using:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">user</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">addresses</span><span class="p">)</span>
-          <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;z3 Pr3z1den7&#39;</span><span class="p">,</span> <span class="p">{</span>
-              <span class="s1">&#39;home&#39;</span> <span class="p">:</span> <span class="p">{</span>
-                  <span class="n">street</span><span class="p">:</span> <span class="s1">&#39;1600 Pennsylvania Ave NW&#39;</span><span class="p">,</span>
-                  <span class="n">city</span><span class="p">:</span> <span class="s1">&#39;Washington&#39;</span><span class="p">,</span>
-                  <span class="n">zip</span><span class="p">:</span> <span class="s1">&#39;20500&#39;</span><span class="p">,</span>
-                  <span class="n">phones</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;cell&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;202 456-1111&#39;</span> <span class="p">},</span>
-                            <span class="s1">&#39;landline&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;...&#39;</span> <span class="p">}</span> <span class="p">}</span>
-              <span class="p">}</span>
-              <span class="s1">&#39;work&#39;</span> <span class="p">:</span> <span class="p">{</span>
-                  <span class="n">street</span><span class="p">:</span> <span class="s1">&#39;1600 Pennsylvania Ave NW&#39;</span><span class="p">,</span>
-                  <span class="n">city</span><span class="p">:</span> <span class="s1">&#39;Washington&#39;</span><span class="p">,</span>
-                  <span class="n">zip</span><span class="p">:</span> <span class="s1">&#39;20500&#39;</span><span class="p">,</span>
-                  <span class="n">phones</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;fax&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;...&#39;</span> <span class="p">}</span> <span class="p">}</span>
-              <span class="p">}</span>
-          <span class="p">})</span>
-</pre></div>
-</div>
-<p>To be valid, a UDT literal should only include fields defined by the type it is a literal of, but it can omit some field
-(in which case those will be <code class="docutils literal"><span class="pre">null</span></code>).</p>
-</div>
-<div class="section" id="altering-a-udt">
-<h3>Altering a UDT<a class="headerlink" href="#altering-a-udt" title="Permalink to this headline">¶</a></h3>
-<p>An existing user-defined type can be modified using an <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TYPE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-alter_type_statement">alter_type_statement   </strong> ::=  ALTER TYPE <a class="reference internal" href="#grammar-token-udt_name"><code class="xref docutils literal"><span class="pre">udt_name</span></code></a> <a class="reference internal" href="#grammar-token-alter_type_modification"><code class="xref docutils literal"><span class="pre">alter_type_modification</span></code></a>
-<strong id="grammar-token-alter_type_modification">alter_type_modification</strong> ::=  ALTER <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> TYPE <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a>
-                             | ADD <a class="reference internal" href="#grammar-token-field_definition"><code class="xref docutils literal"><span class="pre">field_definition</span></code></a>
-                             | RENAME <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> TO <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> ( <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> TO <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal"><span class="pre">identifier</span></code></a> )*
-</pre>
-<p>You can:</p>
-<ul class="simple">
-<li>modify the type of particular field (<code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TYPE</span> <span class="pre">address</span> <span class="pre">ALTER</span> <span class="pre">zip</span> <span class="pre">TYPE</span> <span class="pre">bigint</span></code>). The restrictions for such change
-are the same than when <a class="reference internal" href="ddl.html#alter-table-statement"><span class="std std-ref">altering the type of column</span></a>.</li>
-<li>add a new field to the type (<code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TYPE</span> <span class="pre">address</span> <span class="pre">ADD</span> <span class="pre">country</span> <span class="pre">text</span></code>). That new field will be <code class="docutils literal"><span class="pre">null</span></code> for any values
-of the type created before the addition.</li>
-<li>rename the fields of the type (<code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TYPE</span> <span class="pre">address</span> <span class="pre">RENAME</span> <span class="pre">zip</span> <span class="pre">TO</span> <span class="pre">zipcode</span></code>).</li>
-</ul>
-</div>
-<div class="section" id="dropping-a-udt">
-<h3>Dropping a UDT<a class="headerlink" href="#dropping-a-udt" title="Permalink to this headline">¶</a></h3>
-<p>You can drop an existing user-defined type using a <code class="docutils literal"><span class="pre">DROP</span> <span class="pre">TYPE</span></code> statement:</p>
-<pre>
-<strong id="grammar-token-drop_type_statement">drop_type_statement</strong> ::=  DROP TYPE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-udt_name"><code class="xref docutils literal"><span class="pre">udt_name</span></code></a>
-</pre>
-<p>Dropping a type results in the immediate, irreversible removal of that type. However, attempting to drop a type that is
-still in use by another type, table or function will result in an error.</p>
-<p>If the type dropped does not exist, an error will be returned unless <code class="docutils literal"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used, in which case the operation
-is a no-op.</p>
-</div>
-</div>
-<div class="section" id="tuples">
-<span id="id8"></span><h2>Tuples<a class="headerlink" href="#tuples" title="Permalink to this headline">¶</a></h2>
-<p>CQL also support tuples and tuple types (where the elements can be of different types). Functionally, tuples can be
-though as anonymous UDT with anonymous fields. Tuple types and tuple literals are defined by:</p>
-<pre>
-<strong id="grammar-token-tuple_type">tuple_type   </strong> ::=  TUPLE '&lt;' <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-cql_type"><code class="xref docutils literal"><span class="pre">cql_type</span></code></a> )* '&gt;'
-<strong id="grammar-token-tuple_literal">tuple_literal</strong> ::=  '(' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a> )* ')'
-</pre>
-<p>and can be used thusly:</p>
-<div class="highlight-cql"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">durations</span> <span class="p">(</span>
-    <span class="n">event</span> <span class="nb">text</span><span class="p">,</span>
-    <span class="n">duration</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span> <span class="nb">text</span><span class="o">&gt;</span><span class="p">,</span>
-<span class="p">)</span>
-
-<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">durations</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">duration</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;ev1&#39;</span><span class="p">,</span> <span class="p">(</span><span class="mf">3</span><span class="p">,</span> <span class="s1">&#39;hours&#39;</span><span class="p">));</span>
-</pre></div>
-</div>
-<p>Unlike other &#8220;composed&#8221; types (collections and UDT), a tuple is always <span class="xref std std-ref">frozen</span> (without the need of the
-<cite>frozen</cite> keyword) and it is not possible to update only some elements of a tuple (without updating the whole tuple).
-Also, a tuple literal should always have the same number of value than declared in the type it is a tuple of (some of
-those values can be null but they need to be explicitly declared as so).</p>
-</div>
-<div class="section" id="custom-types">
-<span id="id9"></span><h2>Custom Types<a class="headerlink" href="#custom-types" title="Permalink to this headline">¶</a></h2>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Custom types exists mostly for backward compatiliby purposes and their usage is discouraged. Their usage is
-complex, not user friendly and the other provided types, particularly <a class="reference internal" href="#udts"><span class="std std-ref">user-defined types</span></a>, should almost
-always be enough.</p>
-</div>
-<p>A custom type is defined by:</p>
-<pre>
-<strong id="grammar-token-custom_type">custom_type</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal"><span class="pre">string</span></code></a>
-</pre>
-<p>A custom type is a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal"><span class="pre">string</span></code></a> that contains the name of Java class that extends the server side <code class="docutils literal"><span class="pre">AbstractType</span></code>
-class and that can be loaded by Cassandra (it should thus be in the <code class="docutils literal"><span class="pre">CLASSPATH</span></code> of every node running Cassandra). That
-class will define what values are valid for the type and how the time sorts when used for a clustering column. For any
-other purpose, a value of a custom type is the same than that of a <code class="docutils literal"><span class="pre">blob</span></code>, and can in particular be input using the
-<a class="reference internal" href="definitions.html#grammar-token-blob"><code class="xref std std-token docutils literal"><span class="pre">blob</span></code></a> literal syntax.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="ddl.html" class="btn btn-default pull-right " role="button" title="Data Definition" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="definitions.html" class="btn btn-default" role="button" title="Definitions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/data_modeling/index.html b/src/doc/3.10/data_modeling/index.html
deleted file mode 100644
index fcd852c..0000000
--- a/src/doc/3.10/data_modeling/index.html
+++ /dev/null
@@ -1,106 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Data Modeling"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="The Cassandra Query Language (CQL)" href="../cql/index.html"/>
-      <link rel="prev" title="Guarantees" href="../architecture/guarantees.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="data-modeling">
-<h1>Data Modeling<a class="headerlink" href="#data-modeling" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">TODO</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../cql/index.html" class="btn btn-default pull-right " role="button" title="The Cassandra Query Language (CQL)" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../architecture/guarantees.html" class="btn btn-default" role="button" title="Guarantees" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/faq/index.html b/src/doc/3.10/faq/index.html
deleted file mode 100644
index a73d10d..0000000
--- a/src/doc/3.10/faq/index.html
+++ /dev/null
@@ -1,317 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Frequently Asked Questions"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="Reporting Bugs and Contributing" href="../bugs.html"/>
-      <link rel="prev" title="How-to Commit" href="../development/how_to_commit.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Frequently Asked Questions</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="#why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses">Why can&#8217;t I set <code class="docutils literal"><span class="pre">listen_address</span></code> to listen on 0.0.0.0 (all my addresses)?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#what-ports-does-cassandra-use">What ports does Cassandra use?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes">What happens to existing data in my cluster when I add new nodes?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives">I delete data from Cassandra, but disk usage stays the same. What gives?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring">Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster">Can I change the replication factor (a a keyspace) on a live cluster?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#can-i-store-large-blobs-in-cassandra">Can I Store (large) BLOBs in Cassandra?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives">Nodetool says &#8220;Connection refused to host: 127.0.1.1&#8221; for any remote host. What gives?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#will-batching-my-operations-speed-up-my-bulk-load">Will batching my operations speed up my bulk load?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#on-rhel-nodes-are-unable-to-join-the-ring">On RHEL nodes are unable to join the ring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#how-do-i-unsubscribe-from-the-email-list">How do I unsubscribe from the email list?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max">Why does top report that Cassandra is using a lot more memory than the Java heap max?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#what-are-seeds">What are seeds?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#does-single-seed-mean-single-point-of-failure">Does single seed mean single point of failure?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#why-can-t-i-call-jmx-method-x-on-jconsole">Why can&#8217;t I call jmx method X on jconsole?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#why-do-i-see-messages-dropped-in-the-logs">Why do I see &#8221;... messages dropped ...&#8221; in the logs?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#cassandra-dies-with-java-lang-outofmemoryerror-map-failed">Cassandra dies with <code class="docutils literal"><span class="pre">java.lang.OutOfMemoryError:</span> <span class="pre">Map</span> <span class="pre">failed</span></code></a></li>
-<li class="toctree-l2"><a class="reference internal" href="#what-happens-if-two-updates-are-made-with-the-same-timestamp">What happens if two updates are made with the same timestamp?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="#why-bootstrapping-a-new-node-fails-with-a-stream-failed-error">Why bootstrapping a new node fails with a &#8220;Stream failed&#8221; error?</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="frequently-asked-questions">
-<h1>Frequently Asked Questions<a class="headerlink" href="#frequently-asked-questions" title="Permalink to this headline">¶</a></h1>
-<ul class="simple">
-<li><a class="reference internal" href="#why-cant-list-all"><span class="std std-ref">Why can&#8217;t I set listen_address to listen on 0.0.0.0 (all my addresses)?</span></a></li>
-<li><a class="reference internal" href="#what-ports"><span class="std std-ref">What ports does Cassandra use?</span></a></li>
-<li><a class="reference internal" href="#what-happens-on-joins"><span class="std std-ref">What happens to existing data in my cluster when I add new nodes?</span></a></li>
-<li><a class="reference internal" href="#asynch-deletes"><span class="std std-ref">I delete data from Cassandra, but disk usage stays the same. What gives?</span></a></li>
-<li><a class="reference internal" href="#one-entry-ring"><span class="std std-ref">Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?</span></a></li>
-<li><a class="reference internal" href="#can-large-blob"><span class="std std-ref">Can I Store (large) BLOBs in Cassandra?</span></a></li>
-<li><a class="reference internal" href="#nodetool-connection-refused"><span class="std std-ref">Nodetool says &#8220;Connection refused to host: 127.0.1.1&#8221; for any remote host. What gives?</span></a></li>
-<li><a class="reference internal" href="#to-batch-or-not-to-batch"><span class="std std-ref">Will batching my operations speed up my bulk load?</span></a></li>
-<li><a class="reference internal" href="#selinux"><span class="std std-ref">On RHEL nodes are unable to join the ring</span></a></li>
-<li><a class="reference internal" href="#how-to-unsubscribe"><span class="std std-ref">How do I unsubscribe from the email list?</span></a></li>
-<li><a class="reference internal" href="#cassandra-eats-all-my-memory"><span class="std std-ref">Why does top report that Cassandra is using a lot more memory than the Java heap max?</span></a></li>
-<li><a class="reference internal" href="#what-are-seeds"><span class="std std-ref">What are seeds?</span></a></li>
-<li><a class="reference internal" href="#are-seeds-spof"><span class="std std-ref">Does single seed mean single point of failure?</span></a></li>
-<li><a class="reference internal" href="#why-message-dropped"><span class="std std-ref">Why do I see &#8221;... messages dropped ...&#8221; in the logs?</span></a></li>
-<li><a class="reference internal" href="#oom-map-failed"><span class="std std-ref">Cassandra dies with java.lang.OutOfMemoryError: Map failed</span></a></li>
-<li><a class="reference internal" href="#what-on-same-timestamp-update"><span class="std std-ref">What happens if two updates are made with the same timestamp?</span></a></li>
-<li><a class="reference internal" href="#why-bootstrapping-stream-error"><span class="std std-ref">Why bootstrapping a new node fails with a &#8220;Stream failed&#8221; error?</span></a></li>
-</ul>
-<div class="section" id="why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses">
-<span id="why-cant-list-all"></span><h2>Why can&#8217;t I set <code class="docutils literal"><span class="pre">listen_address</span></code> to listen on 0.0.0.0 (all my addresses)?<a class="headerlink" href="#why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra is a gossip-based distributed system and <code class="docutils literal"><span class="pre">listen_address</span></code> is the address a node tells other nodes to reach
-it at. Telling other nodes &#8220;contact me on any of my addresses&#8221; is a bad idea; if different nodes in the cluster pick
-different addresses for you, Bad Things happen.</p>
-<p>If you don&#8217;t want to manually specify an IP to <code class="docutils literal"><span class="pre">listen_address</span></code> for each node in your cluster (understandable!), leave
-it blank and Cassandra will use <code class="docutils literal"><span class="pre">InetAddress.getLocalHost()</span></code> to pick an address. Then it&#8217;s up to you or your ops team
-to make things resolve correctly (<code class="docutils literal"><span class="pre">/etc/hosts/</span></code>, dns, etc).</p>
-<p>One exception to this process is JMX, which by default binds to 0.0.0.0 (Java bug 6425769).</p>
-<p>See <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-256">CASSANDRA-256</a> and <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-43">CASSANDRA-43</a> for more gory details.</p>
-</div>
-<div class="section" id="what-ports-does-cassandra-use">
-<span id="what-ports"></span><h2>What ports does Cassandra use?<a class="headerlink" href="#what-ports-does-cassandra-use" title="Permalink to this headline">¶</a></h2>
-<p>By default, Cassandra uses 7000 for cluster communication (7001 if SSL is enabled),  9042 for native protocol clients,
-and 7199 for JMX (and 9160 for the deprecated Thrift interface). The internode communication and native protocol ports
-are configurable in the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a>. The JMX port is configurable in <code class="docutils literal"><span class="pre">cassandra-env.sh</span></code> (through JVM
-options). All ports are TCP.</p>
-</div>
-<div class="section" id="what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes">
-<span id="what-happens-on-joins"></span><h2>What happens to existing data in my cluster when I add new nodes?<a class="headerlink" href="#what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes" title="Permalink to this headline">¶</a></h2>
-<p>When a new nodes joins a cluster, it will automatically contact the other nodes in the cluster and copy the right data
-to itself. See <a class="reference internal" href="../operating/topo_changes.html#topology-changes"><span class="std std-ref">Adding, replacing, moving and removing nodes</span></a>.</p>
-</div>
-<div class="section" id="i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives">
-<span id="asynch-deletes"></span><h2>I delete data from Cassandra, but disk usage stays the same. What gives?<a class="headerlink" href="#i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives" title="Permalink to this headline">¶</a></h2>
-<p>Data you write to Cassandra gets persisted to SSTables. Since SSTables are immutable, the data can&#8217;t actually be removed
-when you perform a delete, instead, a marker (also called a &#8220;tombstone&#8221;) is written to indicate the value&#8217;s new status.
-Never fear though, on the first compaction that occurs between the data and the tombstone, the data will be expunged
-completely and the corresponding disk space recovered. See <a class="reference internal" href="../operating/compaction.html#compaction"><span class="std std-ref">Compaction</span></a> for more detail.</p>
-</div>
-<div class="section" id="why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring">
-<span id="one-entry-ring"></span><h2>Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?<a class="headerlink" href="#why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring" title="Permalink to this headline">¶</a></h2>
-<p>This happens when you have the same token assigned to each node. Don&#8217;t do that.</p>
-<p>Most often this bites people who deploy by installing Cassandra on a VM (especially when using the Debian package, which
-auto-starts Cassandra after installation, thus generating and saving a token), then cloning that VM to other nodes.</p>
-<p>The easiest fix is to wipe the data and commitlog directories, thus making sure that each node will generate a random
-token on the next restart.</p>
-</div>
-<div class="section" id="can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster">
-<span id="change-replication-factor"></span><h2>Can I change the replication factor (a a keyspace) on a live cluster?<a class="headerlink" href="#can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster" title="Permalink to this headline">¶</a></h2>
-<p>Yes, but it will require running repair (or cleanup) to change the replica count of existing data:</p>
-<ul class="simple">
-<li><a class="reference internal" href="../cql/ddl.html#alter-keyspace-statement"><span class="std std-ref">Alter</span></a> the replication factor for desired keyspace (using cqlsh for instance).</li>
-<li>If you&#8217;re reducing the replication factor, run <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> on the cluster to remove surplus replicated data.
-Cleanup runs on a per-node basis.</li>
-<li>If you&#8217;re increasing the replication factor, run <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">repair</span></code> to ensure data is replicated according to the new
-configuration. Repair runs on a per-replica set basis. This is an intensive process that may result in adverse cluster
-performance. It&#8217;s highly recommended to do rolling repairs, as an attempt to repair the entire cluster at once will
-most likely swamp it.</li>
-</ul>
-</div>
-<div class="section" id="can-i-store-large-blobs-in-cassandra">
-<span id="can-large-blob"></span><h2>Can I Store (large) BLOBs in Cassandra?<a class="headerlink" href="#can-i-store-large-blobs-in-cassandra" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra isn&#8217;t optimized for large file or BLOB storage and a single <code class="docutils literal"><span class="pre">blob</span></code> value is always read and send to the
-client entirely. As such, storing small blobs (less than single digit MB) should not be a problem, but it is advised to
-manually split large blobs into smaller chunks.</p>
-<p>Please note in particular that by default, any value greater than 16MB will be rejected by Cassandra due the
-<code class="docutils literal"><span class="pre">max_mutation_size_in_kb</span></code> configuration of the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a> file (which default to half of
-<code class="docutils literal"><span class="pre">commitlog_segment_size_in_mb</span></code>, which itself default to 32MB).</p>
-</div>
-<div class="section" id="nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives">
-<span id="nodetool-connection-refused"></span><h2>Nodetool says &#8220;Connection refused to host: 127.0.1.1&#8221; for any remote host. What gives?<a class="headerlink" href="#nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives" title="Permalink to this headline">¶</a></h2>
-<p>Nodetool relies on JMX, which in turn relies on RMI, which in turn sets up its own listeners and connectors as needed on
-each end of the exchange. Normally all of this happens behind the scenes transparently, but incorrect name resolution
-for either the host connecting, or the one being connected to, can result in crossed wires and confusing exceptions.</p>
-<p>If you are not using DNS, then make sure that your <code class="docutils literal"><span class="pre">/etc/hosts</span></code> files are accurate on both ends. If that fails, try
-setting the <code class="docutils literal"><span class="pre">-Djava.rmi.server.hostname=&lt;public</span> <span class="pre">name&gt;</span></code> JVM option near the bottom of <code class="docutils literal"><span class="pre">cassandra-env.sh</span></code> to an
-interface that you can reach from the remote machine.</p>
-</div>
-<div class="section" id="will-batching-my-operations-speed-up-my-bulk-load">
-<span id="to-batch-or-not-to-batch"></span><h2>Will batching my operations speed up my bulk load?<a class="headerlink" href="#will-batching-my-operations-speed-up-my-bulk-load" title="Permalink to this headline">¶</a></h2>
-<p>No. Using batches to load data will generally just add &#8220;spikes&#8221; of latency. Use asynchronous INSERTs instead, or use
-true <a class="reference internal" href="../operating/bulk_loading.html#bulk-loading"><span class="std std-ref">Bulk Loading</span></a>.</p>
-<p>An exception is batching updates to a single partition, which can be a Good Thing (as long as the size of a single batch
-stay reasonable). But never ever blindly batch everything!</p>
-</div>
-<div class="section" id="on-rhel-nodes-are-unable-to-join-the-ring">
-<span id="selinux"></span><h2>On RHEL nodes are unable to join the ring<a class="headerlink" href="#on-rhel-nodes-are-unable-to-join-the-ring" title="Permalink to this headline">¶</a></h2>
-<p>Check if <a class="reference external" href="https://en.wikipedia.org/wiki/Security-Enhanced_Linux">SELinux</a> is on; if it is, turn it off.</p>
-</div>
-<div class="section" id="how-do-i-unsubscribe-from-the-email-list">
-<span id="how-to-unsubscribe"></span><h2>How do I unsubscribe from the email list?<a class="headerlink" href="#how-do-i-unsubscribe-from-the-email-list" title="Permalink to this headline">¶</a></h2>
-<p>Send an email to <code class="docutils literal"><span class="pre">user-unsubscribe&#64;cassandra.apache.org</span></code>.</p>
-</div>
-<div class="section" id="why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max">
-<span id="cassandra-eats-all-my-memory"></span><h2>Why does top report that Cassandra is using a lot more memory than the Java heap max?<a class="headerlink" href="#why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra uses <a class="reference external" href="https://en.wikipedia.org/wiki/Memory-mapped_file">Memory Mapped Files</a> (mmap) internally. That is, we
-use the operating system&#8217;s virtual memory system to map a number of on-disk files into the Cassandra process&#8217; address
-space. This will &#8220;use&#8221; virtual memory; i.e. address space, and will be reported by tools like top accordingly, but on 64
-bit systems virtual address space is effectively unlimited so you should not worry about that.</p>
-<p>What matters from the perspective of &#8220;memory use&#8221; in the sense as it is normally meant, is the amount of data allocated
-on brk() or mmap&#8217;d /dev/zero, which represent real memory used. The key issue is that for a mmap&#8217;d file, there is never
-a need to retain the data resident in physical memory. Thus, whatever you do keep resident in physical memory is
-essentially just there as a cache, in the same way as normal I/O will cause the kernel page cache to retain data that
-you read/write.</p>
-<p>The difference between normal I/O and mmap() is that in the mmap() case the memory is actually mapped to the process,
-thus affecting the virtual size as reported by top. The main argument for using mmap() instead of standard I/O is the
-fact that reading entails just touching memory - in the case of the memory being resident, you just read it - you don&#8217;t
-even take a page fault (so no overhead in entering the kernel and doing a semi-context switch). This is covered in more
-detail <a class="reference external" href="http://www.varnish-cache.org/trac/wiki/ArchitectNotes">here</a>.</p>
-</div>
-<div class="section" id="what-are-seeds">
-<span id="id1"></span><h2>What are seeds?<a class="headerlink" href="#what-are-seeds" title="Permalink to this headline">¶</a></h2>
-<p>Seeds are used during startup to discover the cluster.</p>
-<p>If you configure your nodes to refer some node as seed, nodes in your ring tend to send Gossip message to seeds more
-often (also see the <a class="reference internal" href="../architecture/dynamo.html#gossip"><span class="std std-ref">section on gossip</span></a>) than to non-seeds. In other words, seeds are worked as hubs of
-Gossip network. With seeds, each node can detect status changes of other nodes quickly.</p>
-<p>Seeds are also referred by new nodes on bootstrap to learn other nodes in ring. When you add a new node to ring, you
-need to specify at least one live seed to contact. Once a node join the ring, it learns about the other nodes, so it
-doesn&#8217;t need seed on subsequent boot.</p>
-<p>You can make a seed a node at any time. There is nothing special about seed nodes. If you list the node in seed list it
-is a seed</p>
-<p>Seeds do not auto bootstrap (i.e. if a node has itself in its seed list it will not automatically transfer data to itself)
-If you want a node to do that, bootstrap it first and then add it to seeds later. If you have no data (new install) you
-do not have to worry about bootstrap at all.</p>
-<p>Recommended usage of seeds:</p>
-<ul class="simple">
-<li>pick two (or more) nodes per data center as seed nodes.</li>
-<li>sync the seed list to all your nodes</li>
-</ul>
-</div>
-<div class="section" id="does-single-seed-mean-single-point-of-failure">
-<span id="are-seeds-spof"></span><h2>Does single seed mean single point of failure?<a class="headerlink" href="#does-single-seed-mean-single-point-of-failure" title="Permalink to this headline">¶</a></h2>
-<p>The ring can operate or boot without a seed; however, you will not be able to add new nodes to the cluster. It is
-recommended to configure multiple seeds in production system.</p>
-</div>
-<div class="section" id="why-can-t-i-call-jmx-method-x-on-jconsole">
-<span id="cant-call-jmx-method"></span><h2>Why can&#8217;t I call jmx method X on jconsole?<a class="headerlink" href="#why-can-t-i-call-jmx-method-x-on-jconsole" title="Permalink to this headline">¶</a></h2>
-<p>Some of JMX operations use array argument and as jconsole doesn&#8217;t support array argument, those operations can&#8217;t be
-called with jconsole (the buttons are inactive for them). You need to write a JMX client to call such operations or need
-array-capable JMX monitoring tool.</p>
-</div>
-<div class="section" id="why-do-i-see-messages-dropped-in-the-logs">
-<span id="why-message-dropped"></span><h2>Why do I see &#8221;... messages dropped ...&#8221; in the logs?<a class="headerlink" href="#why-do-i-see-messages-dropped-in-the-logs" title="Permalink to this headline">¶</a></h2>
-<p>This is a symptom of load shedding &#8211; Cassandra defending itself against more requests than it can handle.</p>
-<p>Internode messages which are received by a node, but do not get not to be processed within their proper timeout (see
-<code class="docutils literal"><span class="pre">read_request_timeout</span></code>, <code class="docutils literal"><span class="pre">write_request_timeout</span></code>, ... in the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a>), are dropped rather than
-processed (since the as the coordinator node will no longer be waiting for a response).</p>
-<p>For writes, this means that the mutation was not applied to all replicas it was sent to. The inconsistency will be
-repaired by read repair, hints or a manual repair. The write operation may also have timeouted as a result.</p>
-<p>For reads, this means a read request may not have completed.</p>
-<p>Load shedding is part of the Cassandra architecture, if this is a persistent issue it is generally a sign of an
-overloaded node or cluster.</p>
-</div>
-<div class="section" id="cassandra-dies-with-java-lang-outofmemoryerror-map-failed">
-<span id="oom-map-failed"></span><h2>Cassandra dies with <code class="docutils literal"><span class="pre">java.lang.OutOfMemoryError:</span> <span class="pre">Map</span> <span class="pre">failed</span></code><a class="headerlink" href="#cassandra-dies-with-java-lang-outofmemoryerror-map-failed" title="Permalink to this headline">¶</a></h2>
-<p>If Cassandra is dying <strong>specifically</strong> with the &#8220;Map failed&#8221; message, it means the OS is denying java the ability to
-lock more memory. In linux, this typically means memlock is limited. Check <code class="docutils literal"><span class="pre">/proc/&lt;pid</span> <span class="pre">of</span> <span class="pre">cassandra&gt;/limits</span></code> to verify
-this and raise it (eg, via ulimit in bash). You may also need to increase <code class="docutils literal"><span class="pre">vm.max_map_count.</span></code> Note that the debian
-package handles this for you automatically.</p>
-</div>
-<div class="section" id="what-happens-if-two-updates-are-made-with-the-same-timestamp">
-<span id="what-on-same-timestamp-update"></span><h2>What happens if two updates are made with the same timestamp?<a class="headerlink" href="#what-happens-if-two-updates-are-made-with-the-same-timestamp" title="Permalink to this headline">¶</a></h2>
-<p>Updates must be commutative, since they may arrive in different orders on different replicas. As long as Cassandra has a
-deterministic way to pick the winner (in a timestamp tie), the one selected is as valid as any other, and the specifics
-should be treated as an implementation detail. That said, in the case of a timestamp tie, Cassandra follows two rules:
-first, deletes take precedence over inserts/updates. Second, if there are two updates, the one with the lexically larger
-value is selected.</p>
-</div>
-<div class="section" id="why-bootstrapping-a-new-node-fails-with-a-stream-failed-error">
-<span id="why-bootstrapping-stream-error"></span><h2>Why bootstrapping a new node fails with a &#8220;Stream failed&#8221; error?<a class="headerlink" href="#why-bootstrapping-a-new-node-fails-with-a-stream-failed-error" title="Permalink to this headline">¶</a></h2>
-<p>Two main possibilities:</p>
-<ol class="arabic simple">
-<li>the GC may be creating long pauses disrupting the streaming process</li>
-<li>compactions happening in the background hold streaming long enough that the TCP connection fails</li>
-</ol>
-<p>In the first case, regular GC tuning advices apply. In the second case, you need to set TCP keepalive to a lower value
-(default is very high on Linux). Try to just run the following:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span>$ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
-</pre></div>
-</div>
-<p>To make those settings permanent, add them to your <code class="docutils literal"><span class="pre">/etc/sysctl.conf</span></code> file.</p>
-<p>Note: <a class="reference external" href="https://cloud.google.com/compute/">GCE</a>&#8216;s firewall will always interrupt TCP connections that are inactive for
-more than 10 min. Running the above command is highly recommended in that environment.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../bugs.html" class="btn btn-default pull-right " role="button" title="Reporting Bugs and Contributing" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../development/how_to_commit.html" class="btn btn-default" role="button" title="How-to Commit" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/genindex.html b/src/doc/3.10/genindex.html
deleted file mode 100644
index 705bbcc..0000000
--- a/src/doc/3.10/genindex.html
+++ /dev/null
@@ -1,95 +0,0 @@
-
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Index"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="index.html"/>
-'
-doc-search-path: "search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul>
-<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-
-<h1 id="index">Index</h1>
-
-<div class="genindex-jumpbox">
- 
-</div>
-
-
-
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/getting_started/configuring.html b/src/doc/3.10/getting_started/configuring.html
deleted file mode 100644
index 34e9153..0000000
--- a/src/doc/3.10/getting_started/configuring.html
+++ /dev/null
@@ -1,160 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Getting Started"
-
-doc-title: "Configuring Cassandra"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Getting Started" href="index.html"/>
-      <link rel="next" title="Inserting and querying" href="querying.html"/>
-      <link rel="prev" title="Installing Cassandra" href="installing.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring Cassandra</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#main-runtime-properties">Main runtime properties</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#changing-the-location-of-directories">Changing the location of directories</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#environment-variables">Environment variables</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#logging">Logging</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="configuring-cassandra">
-<h1>Configuring Cassandra<a class="headerlink" href="#configuring-cassandra" title="Permalink to this headline">¶</a></h1>
-<p>For running Cassandra on a single node, the steps above are enough, you don&#8217;t really need to change any configuration.
-However, when you deploy a cluster of nodes, or use clients that are not on the same host, then there are some
-parameters that must be changed.</p>
-<p>The Cassandra configuration files can be found in the <code class="docutils literal"><span class="pre">conf</span></code> directory of tarballs. For packages, the configuration
-files will be located in <code class="docutils literal"><span class="pre">/etc/cassandra</span></code>.</p>
-<div class="section" id="main-runtime-properties">
-<h2>Main runtime properties<a class="headerlink" href="#main-runtime-properties" title="Permalink to this headline">¶</a></h2>
-<p>Most of configuration in Cassandra is done via yaml properties that can be set in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code>. At a minimum you
-should consider setting the following properties:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">cluster_name</span></code>: the name of your cluster.</li>
-<li><code class="docutils literal"><span class="pre">seeds</span></code>: a comma separated list of the IP addresses of your cluster seeds.</li>
-<li><code class="docutils literal"><span class="pre">storage_port</span></code>: you don&#8217;t necessarily need to change this but make sure that there are no firewalls blocking this
-port.</li>
-<li><code class="docutils literal"><span class="pre">listen_address</span></code>: the IP address of your node, this is what allows other nodes to communicate with this node so it
-is important that you change it. Alternatively, you can set <code class="docutils literal"><span class="pre">listen_interface</span></code> to tell Cassandra which interface to
-use, and consecutively which address to use. Set only one, not both.</li>
-<li><code class="docutils literal"><span class="pre">native_transport_port</span></code>: as for storage_port, make sure this port is not blocked by firewalls as clients will
-communicate with Cassandra on this port.</li>
-</ul>
-</div>
-<div class="section" id="changing-the-location-of-directories">
-<h2>Changing the location of directories<a class="headerlink" href="#changing-the-location-of-directories" title="Permalink to this headline">¶</a></h2>
-<p>The following yaml properties control the location of directories:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">data_file_directories</span></code>: one or more directories where data files are located.</li>
-<li><code class="docutils literal"><span class="pre">commitlog_directory</span></code>: the directory where commitlog files are located.</li>
-<li><code class="docutils literal"><span class="pre">saved_caches_directory</span></code>: the directory where saved caches are located.</li>
-<li><code class="docutils literal"><span class="pre">hints_directory</span></code>: the directory where hints are located.</li>
-</ul>
-<p>For performance reasons, if you have multiple disks, consider putting commitlog and data files on different disks.</p>
-</div>
-<div class="section" id="environment-variables">
-<h2>Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline">¶</a></h2>
-<p>JVM-level settings such as heap size can be set in <code class="docutils literal"><span class="pre">cassandra-env.sh</span></code>.  You can add any additional JVM command line
-argument to the <code class="docutils literal"><span class="pre">JVM_OPTS</span></code> environment variable; when Cassandra starts these arguments will be passed to the JVM.</p>
-</div>
-<div class="section" id="logging">
-<h2>Logging<a class="headerlink" href="#logging" title="Permalink to this headline">¶</a></h2>
-<p>The logger in use is logback. You can change logging properties by editing <code class="docutils literal"><span class="pre">logback.xml</span></code>. By default it will log at
-INFO level into a file called <code class="docutils literal"><span class="pre">system.log</span></code> and at debug level into a file called <code class="docutils literal"><span class="pre">debug.log</span></code>. When running in the
-foreground, it will also log at INFO level to the console.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="querying.html" class="btn btn-default pull-right " role="button" title="Inserting and querying" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="installing.html" class="btn btn-default" role="button" title="Installing Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/getting_started/drivers.html b/src/doc/3.10/getting_started/drivers.html
deleted file mode 100644
index 15cd6af..0000000
--- a/src/doc/3.10/getting_started/drivers.html
+++ /dev/null
@@ -1,225 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Getting Started"
-
-doc-title: "Client drivers"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Getting Started" href="index.html"/>
-      <link rel="next" title="Architecture" href="../architecture/index.html"/>
-      <link rel="prev" title="Inserting and querying" href="querying.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
-<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Client drivers</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#java">Java</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#python">Python</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#ruby">Ruby</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#c-net">C# / .NET</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#nodejs">Nodejs</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#php">PHP</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#c">C++</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#scala">Scala</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#clojure">Clojure</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#erlang">Erlang</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#go">Go</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#haskell">Haskell</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#rust">Rust</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="client-drivers">
-<span id="id1"></span><h1>Client drivers<a class="headerlink" href="#client-drivers" title="Permalink to this headline">¶</a></h1>
-<p>Here are known Cassandra client drivers organized by language. Before choosing a driver, you should verify the Cassandra
-version and functionality supported by a specific driver.</p>
-<div class="section" id="java">
-<h2>Java<a class="headerlink" href="#java" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="http://achilles.archinnov.info/">Achilles</a></li>
-<li><a class="reference external" href="https://github.com/Netflix/astyanax/wiki/Getting-Started">Astyanax</a></li>
-<li><a class="reference external" href="https://github.com/noorq/casser">Casser</a></li>
-<li><a class="reference external" href="https://github.com/datastax/java-driver">Datastax Java driver</a></li>
-<li><a class="reference external" href="https://github.com/impetus-opensource/Kundera">Kundera</a></li>
-<li><a class="reference external" href="https://github.com/deanhiller/playorm">PlayORM</a></li>
-</ul>
-</div>
-<div class="section" id="python">
-<h2>Python<a class="headerlink" href="#python" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/datastax/python-driver">Datastax Python driver</a></li>
-</ul>
-</div>
-<div class="section" id="ruby">
-<h2>Ruby<a class="headerlink" href="#ruby" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/datastax/ruby-driver">Datastax Ruby driver</a></li>
-</ul>
-</div>
-<div class="section" id="c-net">
-<h2>C# / .NET<a class="headerlink" href="#c-net" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/pchalamet/cassandra-sharp">Cassandra Sharp</a></li>
-<li><a class="reference external" href="https://github.com/datastax/csharp-driver">Datastax C# driver</a></li>
-<li><a class="reference external" href="https://github.com/managedfusion/fluentcassandra">Fluent Cassandra</a></li>
-</ul>
-</div>
-<div class="section" id="nodejs">
-<h2>Nodejs<a class="headerlink" href="#nodejs" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/datastax/nodejs-driver">Datastax Nodejs driver</a></li>
-<li><a class="reference external" href="https://github.com/jorgebay/node-cassandra-cql">Node-Cassandra-CQL</a></li>
-</ul>
-</div>
-<div class="section" id="php">
-<h2>PHP<a class="headerlink" href="#php" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="http://code.google.com/a/apache-extras.org/p/cassandra-pdo">CQL | PHP</a></li>
-<li><a class="reference external" href="https://github.com/datastax/php-driver/">Datastax PHP driver</a></li>
-<li><a class="reference external" href="https://github.com/aparkhomenko/php-cassandra">PHP-Cassandra</a></li>
-<li><a class="reference external" href="http://evseevnn.github.io/php-cassandra-binary/">PHP Library for Cassandra</a></li>
-</ul>
-</div>
-<div class="section" id="c">
-<h2>C++<a class="headerlink" href="#c" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/datastax/cpp-driver">Datastax C++ driver</a></li>
-<li><a class="reference external" href="http://sourceforge.net/projects/libqtcassandra">libQTCassandra</a></li>
-</ul>
-</div>
-<div class="section" id="scala">
-<h2>Scala<a class="headerlink" href="#scala" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/datastax/spark-cassandra-connector">Datastax Spark connector</a></li>
-<li><a class="reference external" href="https://github.com/newzly/phantom">Phantom</a></li>
-<li><a class="reference external" href="https://github.com/getquill/quill">Quill</a></li>
-</ul>
-</div>
-<div class="section" id="clojure">
-<h2>Clojure<a class="headerlink" href="#clojure" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/mpenet/alia">Alia</a></li>
-<li><a class="reference external" href="https://github.com/clojurewerkz/cassaforte">Cassaforte</a></li>
-<li><a class="reference external" href="https://github.com/mpenet/hayt">Hayt</a></li>
-</ul>
-</div>
-<div class="section" id="erlang">
-<h2>Erlang<a class="headerlink" href="#erlang" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/matehat/cqerl">CQerl</a></li>
-<li><a class="reference external" href="https://github.com/silviucpp/erlcass">Erlcass</a></li>
-</ul>
-</div>
-<div class="section" id="go">
-<h2>Go<a class="headerlink" href="#go" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="http://relops.com/cqlc/">CQLc</a></li>
-<li><a class="reference external" href="https://github.com/hailocab/gocassa">Gocassa</a></li>
-<li><a class="reference external" href="https://github.com/gocql/gocql">GoCQL</a></li>
-</ul>
-</div>
-<div class="section" id="haskell">
-<h2>Haskell<a class="headerlink" href="#haskell" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/ozataman/cassy">Cassy</a></li>
-</ul>
-</div>
-<div class="section" id="rust">
-<h2>Rust<a class="headerlink" href="#rust" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/neich/rust-cql">Rust CQL</a></li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../architecture/index.html" class="btn btn-default pull-right " role="button" title="Architecture" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="querying.html" class="btn btn-default" role="button" title="Inserting and querying" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/getting_started/index.html b/src/doc/3.10/getting_started/index.html
deleted file mode 100644
index 48a422f..0000000
--- a/src/doc/3.10/getting_started/index.html
+++ /dev/null
@@ -1,148 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Getting Started"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="Installing Cassandra" href="installing.html"/>
-      <link rel="prev" title="Welcome to Apache Cassandra’s documentation!" href="../index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting Started</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
-<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="getting-started">
-<h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1>
-<p>This section covers how to get started using Apache Cassandra and should be the first thing to read if you are new to
-Cassandra.</p>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="installing.html">Installing Cassandra</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="installing.html#prerequisites">Prerequisites</a></li>
-<li class="toctree-l2"><a class="reference internal" href="installing.html#installation-from-binary-tarball-files">Installation from binary tarball files</a></li>
-<li class="toctree-l2"><a class="reference internal" href="installing.html#installation-from-debian-packages">Installation from Debian packages</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="configuring.html">Configuring Cassandra</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html#main-runtime-properties">Main runtime properties</a></li>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html#changing-the-location-of-directories">Changing the location of directories</a></li>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html#environment-variables">Environment variables</a></li>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html#logging">Logging</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="querying.html">Inserting and querying</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="querying.html#cqlsh">CQLSH</a></li>
-<li class="toctree-l2"><a class="reference internal" href="querying.html#client-drivers">Client drivers</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="drivers.html">Client drivers</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#java">Java</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#python">Python</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#ruby">Ruby</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#c-net">C# / .NET</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#nodejs">Nodejs</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#php">PHP</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#c">C++</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#scala">Scala</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#clojure">Clojure</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#erlang">Erlang</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#go">Go</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#haskell">Haskell</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html#rust">Rust</a></li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="installing.html" class="btn btn-default pull-right " role="button" title="Installing Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../index.html" class="btn btn-default" role="button" title="Welcome to Apache Cassandra’s documentation!" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/getting_started/installing.html b/src/doc/3.10/getting_started/installing.html
deleted file mode 100644
index f7efbae..0000000
--- a/src/doc/3.10/getting_started/installing.html
+++ /dev/null
@@ -1,193 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Getting Started"
-
-doc-title: "Installing Cassandra"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Getting Started" href="index.html"/>
-      <link rel="next" title="Configuring Cassandra" href="configuring.html"/>
-      <link rel="prev" title="Getting Started" href="index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Installing Cassandra</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#prerequisites">Prerequisites</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#installation-from-binary-tarball-files">Installation from binary tarball files</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#installation-from-debian-packages">Installation from Debian packages</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
-<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="installing-cassandra">
-<h1>Installing Cassandra<a class="headerlink" href="#installing-cassandra" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="prerequisites">
-<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>The latest version of Java 8, either the <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Oracle Java Standard Edition 8</a> or <a class="reference external" href="http://openjdk.java.net/">OpenJDK 8</a>. To
-verify that you have the correct version of java installed, type <code class="docutils literal"><span class="pre">java</span> <span class="pre">-version</span></code>.</li>
-<li>For using cqlsh, the latest version of <a class="reference external" href="https://www.python.org/downloads/">Python 2.7</a>. To verify that you have
-the correct version of Python installed, type <code class="docutils literal"><span class="pre">python</span> <span class="pre">--version</span></code>.</li>
-</ul>
-</div>
-<div class="section" id="installation-from-binary-tarball-files">
-<h2>Installation from binary tarball files<a class="headerlink" href="#installation-from-binary-tarball-files" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Download the latest stable release from the <a class="reference external" href="http://cassandra.apache.org/download/">Apache Cassandra downloads website</a>.</li>
-<li>Untar the file somewhere, for example:</li>
-</ul>
-<div class="highlight-none"><div class="highlight"><pre><span></span>tar -xvf apache-cassandra-3.6-bin.tar.gz cassandra
-</pre></div>
-</div>
-<p>The files will be extracted into <code class="docutils literal"><span class="pre">apache-cassandra-3.6</span></code>, you need to substitute 3.6 with the release number that you
-have downloaded.</p>
-<ul class="simple">
-<li>Optionally add <code class="docutils literal"><span class="pre">apache-cassandra-3.6\bin</span></code> to your path.</li>
-<li>Start Cassandra in the foreground by invoking <code class="docutils literal"><span class="pre">bin/cassandra</span> <span class="pre">-f</span></code> from the command line. Press &#8220;Control-C&#8221; to stop
-Cassandra. Start Cassandra in the background by invoking <code class="docutils literal"><span class="pre">bin/cassandra</span></code> from the command line. Invoke <code class="docutils literal"><span class="pre">kill</span> <span class="pre">pid</span></code>
-or <code class="docutils literal"><span class="pre">pkill</span> <span class="pre">-f</span> <span class="pre">CassandraDaemon</span></code> to stop Cassandra, where pid is the Cassandra process id, which you can find for
-example by invoking <code class="docutils literal"><span class="pre">pgrep</span> <span class="pre">-f</span> <span class="pre">CassandraDaemon</span></code>.</li>
-<li>Verify that Cassandra is running by invoking <code class="docutils literal"><span class="pre">bin/nodetool</span> <span class="pre">status</span></code> from the command line.</li>
-<li>Configuration files are located in the <code class="docutils literal"><span class="pre">conf</span></code> sub-directory.</li>
-<li>Since Cassandra 2.1, log and data directories are located in the <code class="docutils literal"><span class="pre">logs</span></code> and <code class="docutils literal"><span class="pre">data</span></code> sub-directories respectively.
-Older versions defaulted to <code class="docutils literal"><span class="pre">/var/log/cassandra</span></code> and <code class="docutils literal"><span class="pre">/var/lib/cassandra</span></code>. Due to this, it is necessary to either
-start Cassandra with root privileges or change <code class="docutils literal"><span class="pre">conf/cassandra.yaml</span></code> to use directories owned by the current user,
-as explained below in the section on changing the location of directories.</li>
-</ul>
-</div>
-<div class="section" id="installation-from-debian-packages">
-<h2>Installation from Debian packages<a class="headerlink" href="#installation-from-debian-packages" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Add the Apache repository of Cassandra to <code class="docutils literal"><span class="pre">/etc/apt/sources.list.d/cassandra.sources.list</span></code>, for example for version
-3.6:</li>
-</ul>
-<div class="highlight-none"><div class="highlight"><pre><span></span>echo &quot;deb http://www.apache.org/dist/cassandra/debian 36x main&quot; | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
-</pre></div>
-</div>
-<ul class="simple">
-<li>Update the repositories:</li>
-</ul>
-<div class="highlight-none"><div class="highlight"><pre><span></span>sudo apt-get update
-</pre></div>
-</div>
-<ul class="simple">
-<li>If you encounter this error:</li>
-</ul>
-<div class="highlight-none"><div class="highlight"><pre><span></span>GPG error: http://www.apache.org 36x InRelease: The following signatures couldn&#39;t be verified because the public key is not available: NO_PUBKEY 749D6EEC0353B12C
-</pre></div>
-</div>
-<p>Then add the public key 749D6EEC0353B12C as follows:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>gpg --keyserver pgp.mit.edu --recv-keys 749D6EEC0353B12C
-gpg --export --armor 749D6EEC0353B12C | sudo apt-key add -
-</pre></div>
-</div>
-<p>and repeat <code class="docutils literal"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">update</span></code>. The actual key may be different, you get it from the error message itself. For a
-full list of Apache contributors public keys, you can refer to <a class="reference external" href="https://www.apache.org/dist/cassandra/KEYS">this link</a>.</p>
-<ul class="simple">
-<li>Install Cassandra:</li>
-</ul>
-<div class="highlight-none"><div class="highlight"><pre><span></span>sudo apt-get install cassandra
-</pre></div>
-</div>
-<ul class="simple">
-<li>You can start Cassandra with <code class="docutils literal"><span class="pre">sudo</span> <span class="pre">service</span> <span class="pre">cassandra</span> <span class="pre">start</span></code> and stop it with <code class="docutils literal"><span class="pre">sudo</span> <span class="pre">service</span> <span class="pre">cassandra</span> <span class="pre">stop</span></code>.
-However, normally the service will start automatically. For this reason be sure to stop it if you need to make any
-configuration changes.</li>
-<li>Verify that Cassandra is running by invoking <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">status</span></code> from the command line.</li>
-<li>The default location of configuration files is <code class="docutils literal"><span class="pre">/etc/cassandra</span></code>.</li>
-<li>The default location of log and data directories is <code class="docutils literal"><span class="pre">/var/log/cassandra/</span></code> and <code class="docutils literal"><span class="pre">/var/lib/cassandra</span></code>.</li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="configuring.html" class="btn btn-default pull-right " role="button" title="Configuring Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="index.html" class="btn btn-default" role="button" title="Getting Started" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/getting_started/querying.html b/src/doc/3.10/getting_started/querying.html
deleted file mode 100644
index bf54015..0000000
--- a/src/doc/3.10/getting_started/querying.html
+++ /dev/null
@@ -1,146 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Getting Started"
-
-doc-title: "Inserting and querying"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Getting Started" href="index.html"/>
-      <link rel="next" title="Client drivers" href="drivers.html"/>
-      <link rel="prev" title="Configuring Cassandra" href="configuring.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
-<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Inserting and querying</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#cqlsh">CQLSH</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#client-drivers">Client drivers</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="inserting-and-querying">
-<h1>Inserting and querying<a class="headerlink" href="#inserting-and-querying" title="Permalink to this headline">¶</a></h1>
-<p>The API to Cassandra is <a class="reference internal" href="../cql/index.html#cql"><span class="std std-ref">CQL</span></a>, the Cassandra Query Language. To use CQL, you will need to connect to the
-cluster, which can be done:</p>
-<ul class="simple">
-<li>either using cqlsh,</li>
-<li>or through a client driver for Cassandra.</li>
-</ul>
-<div class="section" id="cqlsh">
-<h2>CQLSH<a class="headerlink" href="#cqlsh" title="Permalink to this headline">¶</a></h2>
-<p>cqlsh is a command line shell for interacting with Cassandra through CQL. It is shipped with every Cassandra package,
-and can be found in the bin/ directory alongside the cassandra executable. It connects to the single node specified on
-the command line. For example:</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span>$ bin/cqlsh localhost
-Connected to Test Cluster at localhost:9042.
-[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
-Use HELP for help.
-cqlsh&gt; SELECT cluster_name, listen_address FROM system.local;
-
- cluster_name | listen_address
---------------+----------------
- Test Cluster |      127.0.0.1
-
-(1 rows)
-cqlsh&gt;
-</pre></div>
-</div>
-<p>See the <a class="reference internal" href="../tools/cqlsh.html#cqlsh"><span class="std std-ref">cqlsh section</span></a> for full documentation.</p>
-</div>
-<div class="section" id="client-drivers">
-<h2>Client drivers<a class="headerlink" href="#client-drivers" title="Permalink to this headline">¶</a></h2>
-<p>A lot of client drivers are provided by the Community and a list of known drivers is provided in <a class="reference internal" href="drivers.html#client-drivers"><span class="std std-ref">the next section</span></a>. You should refer to the documentation of each drivers for more information on how to use them.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="drivers.html" class="btn btn-default pull-right " role="button" title="Client drivers" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="configuring.html" class="btn btn-default" role="button" title="Configuring Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/index.html b/src/doc/3.10/index.html
deleted file mode 100644
index 277a598..0000000
--- a/src/doc/3.10/index.html
+++ /dev/null
@@ -1,75 +0,0 @@
----
-layout: doclandingpage
-title: "Documentation"
-is_homepage: false
-is_sphinx_doc: false
----
-
-  <h2>Apache Cassandra Documentation v3.10</h2>
-  
-<div id="wipwarning">This documentation is currently a work-in-progress and contains a number of TODO sections.
-    <a href="bugs.html">Contributions</a> are welcome.</div>
-
-<h3>Main documentation</h3>
-
-<table class="contentstable doc-landing-table" align="center">
-  <tr>
-    <td class="left-column">
-      <p class="biglink"><a class="biglink" href="getting_started/index.html">Getting started</a><br/>
-      <span class="linkdescr">Newbie friendly starting point</span></p>
-    </td>
-    <td class="right-column">
-      <p class="biglink"><a class="biglink" href="operating/index.html">Operating Cassandra</a><br/>
-      <span class="linkdescr">The operator's corner</span></p>
-    </td>
-  </tr>
-  <tr>
-    <td class="left-column">
-      <p class="biglink"><a class="biglink" href="architecture/index.html">Cassandra Architecture</a><br/>
-      <span class="linkdescr">Cassandra's big picture</span></p>
-    </td>
-    <td class="right-column">
-      <p class="biglink"><a class="biglink" href="tools/index.html">Cassandra's Tools</a><br/>
-      <span class="linkdescr">cqlsh, nodetool, ...</span></p>
-    </td>
-  </tr>
-  <tr>
-    <td class="left-column">
-      <p class="biglink"><a class="biglink" href="data_modeling/index.html">Data Modeling</a><br/>
-      <span class="linkdescr">Or how to make square pegs fit round holes</span></p>
-    </td>
-    <td class="right-column">
-      <p class="biglink"><a class="biglink" href="troubleshooting/index.html">Troubleshooting</a><br/>
-      <span class="linkdescr">What to look for when you have a problem</span></p>
-    </td>
-  </tr>
-  <tr>
-    <td class="left-column">
-      <p class="biglink"><a class="biglink" href="cql/index.html">Cassandra Query Language</a><br/>
-      <span class="linkdescr">CQL reference documentation</span></p>
-    </td>
-    <td class="right-column">
-      <p class="biglink"><a class="biglink" href="development/index.html">Cassandra Development</a><br/>
-      <span class="linkdescr">Learn how to improve Cassandra and contribute patches</span></p>
-    </td>
-  </tr>
-  <tr>
-    <td class="left-column">
-      <p class="biglink"><a class="biglink" href="faq/index.html">FAQs</a><br/>
-      <span class="linkdescr">Frequently Asked Questions (with answers!)</span></p>
-    </td>
-    <td class="right-column">
-      <p class="biglink"><a class="biglink" href="configuration/index.html">Configuration</a><br/>
-      <span class="linkdescr">Cassandra's handles and knobs</span></p>
-    </td>
-  </tr>
-</table>
-
-<h3>Meta informations</h3>
-
-<ul>
-  <li><a class="biglink" href="bugs.html">Reporting bugs</a></li>
-  <li><a class="biglink" href="contactus.html">Contact us</a></li>
-</ul>
-
-
diff --git a/src/doc/3.10/objects.inv b/src/doc/3.10/objects.inv
deleted file mode 100644
index 64a9b37..0000000
--- a/src/doc/3.10/objects.inv
+++ /dev/null
Binary files differ
diff --git a/src/doc/3.10/operating/backups.html b/src/doc/3.10/operating/backups.html
deleted file mode 100644
index 5046b63..0000000
--- a/src/doc/3.10/operating/backups.html
+++ /dev/null
@@ -1,125 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Backups"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Bulk Loading" href="bulk_loading.html"/>
-      <link rel="prev" title="Change Data Capture" href="cdc.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="backups">
-<h1>Backups<a class="headerlink" href="#backups" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">TODO</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="bulk_loading.html" class="btn btn-default pull-right " role="button" title="Bulk Loading" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="cdc.html" class="btn btn-default" role="button" title="Change Data Capture" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/bloom_filters.html b/src/doc/3.10/operating/bloom_filters.html
deleted file mode 100644
index 5d07230..0000000
--- a/src/doc/3.10/operating/bloom_filters.html
+++ /dev/null
@@ -1,162 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Bloom Filters"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Compression" href="compression.html"/>
-      <link rel="prev" title="Compaction" href="compaction.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Bloom Filters</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#changing">Changing</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="bloom-filters">
-<h1>Bloom Filters<a class="headerlink" href="#bloom-filters" title="Permalink to this headline">¶</a></h1>
-<p>In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
-SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.</p>
-<p>Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
-data definitely does not exist in the given file, or - The data probably exists in the given file.</p>
-<p>While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
-by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
-the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a float between 0 and 1.</p>
-<p>The default value for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
-other cases.</p>
-<p>Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
-the maximum heap size.  As accuracy improves (as the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> gets closer to 0), memory usage
-increases non-linearly - the bloom filter for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.01</span></code> will require about three times as much
-memory as the same table with <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.1</span></code>.</p>
-<p>Typical values for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
-Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
-by use case:</p>
-<ul class="simple">
-<li>Users with more RAM and slower disks may benefit from setting the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a numerically lower
-number (such as 0.01) to avoid excess IO operations</li>
-<li>Users with less RAM, more dense nodes, or very fast disks may tolerate a higher <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> in order to
-save RAM at the expense of excess IO operations</li>
-<li>In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
-workloads), setting the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a much higher number is acceptable.</li>
-</ul>
-<div class="section" id="changing">
-<h2>Changing<a class="headerlink" href="#changing" title="Permalink to this headline">¶</a></h2>
-<p>The bloom filter false positive chance is visible in the <code class="docutils literal"><span class="pre">DESCRIBE</span> <span class="pre">TABLE</span></code> output as the field
-<code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code>. Operators can change the value with an <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
-</pre></div>
-</div>
-<p>Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
-written, and persisted on disk as the Filter component of the SSTable. Upon issuing an <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement, new
-files on disk will be written with the new <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code>, but existing sstables will not be modified until
-they are compacted - if an operator needs a change to <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to take effect, they can trigger an
-SSTable rewrite using <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the sstables on
-disk, regenerating the bloom filters in the progress.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="compression.html" class="btn btn-default pull-right " role="button" title="Compression" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="compaction.html" class="btn btn-default" role="button" title="Compaction" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/bulk_loading.html b/src/doc/3.10/operating/bulk_loading.html
deleted file mode 100644
index 2df51e8..0000000
--- a/src/doc/3.10/operating/bulk_loading.html
+++ /dev/null
@@ -1,125 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Bulk Loading"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Monitoring" href="metrics.html"/>
-      <link rel="prev" title="Backups" href="backups.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="bulk-loading">
-<span id="id1"></span><h1>Bulk Loading<a class="headerlink" href="#bulk-loading" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">TODO</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="metrics.html" class="btn btn-default pull-right " role="button" title="Monitoring" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="backups.html" class="btn btn-default" role="button" title="Backups" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/cdc.html b/src/doc/3.10/operating/cdc.html
deleted file mode 100644
index 350f981..0000000
--- a/src/doc/3.10/operating/cdc.html
+++ /dev/null
@@ -1,188 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Change Data Capture"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Backups" href="backups.html"/>
-      <link rel="prev" title="Compression" href="compression.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Change Data Capture</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#overview">Overview</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#reading-commitlogsegments">Reading CommitLogSegments</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#warnings">Warnings</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#further-reading">Further Reading</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="change-data-capture">
-<h1>Change Data Capture<a class="headerlink" href="#change-data-capture" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="overview">
-<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
-<p>Change data capture (CDC) provides a mechanism to flag specific tables for archival as well as rejecting writes to those
-tables once a configurable size-on-disk for the combined flushed and unflushed CDC-log is reached. An operator can
-enable CDC on a table by setting the table property <code class="docutils literal"><span class="pre">cdc=true</span></code> (either when <a class="reference internal" href="../cql/ddl.html#create-table-statement"><span class="std std-ref">creating the table</span></a> or <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">altering it</span></a>), after which any CommitLogSegments containing
-data for a CDC-enabled table are moved to the directory specified in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> on segment discard. A threshold
-of total disk space allowed is specified in the yaml at which time newly allocated CommitLogSegments will not allow CDC
-data until a consumer parses and removes data from the destination archival directory.</p>
-</div>
-<div class="section" id="configuration">
-<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="enabling-or-disable-cdc-on-a-table">
-<h3>Enabling or disable CDC on a table<a class="headerlink" href="#enabling-or-disable-cdc-on-a-table" title="Permalink to this headline">¶</a></h3>
-<p>CDC is enable or disable through the <cite>cdc</cite> table property, for instance:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
-
-ALTER TABLE foo WITH cdc=true;
-
-ALTER TABLE foo WITH cdc=false;
-</pre></div>
-</div>
-</div>
-<div class="section" id="cassandra-yaml-parameters">
-<h3>cassandra.yaml parameters<a class="headerlink" href="#cassandra-yaml-parameters" title="Permalink to this headline">¶</a></h3>
-<p>The following <cite>cassandra.yaml</cite> are available for CDC:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">cdc_enabled</span></code> (default: false)</dt>
-<dd>Enable or disable CDC operations node-wide.</dd>
-<dt><code class="docutils literal"><span class="pre">cdc_raw_directory</span></code> (default: <code class="docutils literal"><span class="pre">$CASSANDRA_HOME/data/cdc_raw</span></code>)</dt>
-<dd>Destination for CommitLogSegments to be moved after all corresponding memtables are flushed.</dd>
-<dt><code class="docutils literal"><span class="pre">cdc_free_space_in_mb</span></code>: (default: min of 4096 and 1/8th volume space)</dt>
-<dd>Calculated as sum of all active CommitLogSegments that permit CDC + all flushed CDC segments in
-<code class="docutils literal"><span class="pre">cdc_raw_directory</span></code>.</dd>
-<dt><code class="docutils literal"><span class="pre">cdc_free_space_check_interval_ms</span></code> (default: 250)</dt>
-<dd>When at capacity, we limit the frequency with which we re-calculate the space taken up by <code class="docutils literal"><span class="pre">cdc_raw_directory</span></code> to
-prevent burning CPU cycles unnecessarily. Default is to check 4 times per second.</dd>
-</dl>
-</div>
-</div>
-<div class="section" id="reading-commitlogsegments">
-<span id="id1"></span><h2>Reading CommitLogSegments<a class="headerlink" href="#reading-commitlogsegments" title="Permalink to this headline">¶</a></h2>
-<p>This implementation included a refactor of CommitLogReplayer into <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java">CommitLogReader.java</a>.
-Usage is <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java#L132-L140">fairly straightforward</a>
-with a <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java#L71-L103">variety of signatures</a>
-available for use. In order to handle mutations read from disk, implement <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReadHandler.java">CommitLogReadHandler</a>.</p>
-</div>
-<div class="section" id="warnings">
-<h2>Warnings<a class="headerlink" href="#warnings" title="Permalink to this headline">¶</a></h2>
-<p><strong>Do not enable CDC without some kind of consumption process in-place.</strong></p>
-<p>The initial implementation of Change Data Capture does not include a parser (see <a class="reference internal" href="#reading-commitlogsegments"><span class="std std-ref">Reading CommitLogSegments</span></a> above)
-so, if CDC is enabled on a node and then on a table, the <code class="docutils literal"><span class="pre">cdc_free_space_in_mb</span></code> will fill up and then writes to
-CDC-enabled tables will be rejected unless some consumption process is in place.</p>
-</div>
-<div class="section" id="further-reading">
-<h2>Further Reading<a class="headerlink" href="#further-reading" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><a class="reference external" href="https://docs.google.com/document/d/1ZxCWYkeZTquxsvf5hdPc0fiUnUHna8POvgt6TIzML4Y/edit">Design doc</a></li>
-<li><a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-8844">JIRA ticket</a></li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="backups.html" class="btn btn-default pull-right " role="button" title="Backups" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="compression.html" class="btn btn-default" role="button" title="Compression" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/compaction.html b/src/doc/3.10/operating/compaction.html
deleted file mode 100644
index 1b35e7c..0000000
--- a/src/doc/3.10/operating/compaction.html
+++ /dev/null
@@ -1,513 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Compaction"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Bloom Filters" href="bloom_filters.html"/>
-      <link rel="prev" title="Hints" href="hints.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Compaction</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#types-of-compaction">Types of compaction</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#when-is-a-minor-compaction-triggered">When is a minor compaction triggered?</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#merging-sstables">Merging sstables</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#tombstones-and-garbage-collection-gc-grace">Tombstones and Garbage Collection (GC) Grace</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#ttl">TTL</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#fully-expired-sstables">Fully expired sstables</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#repaired-unrepaired-data">Repaired/unrepaired data</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#data-directories">Data directories</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#single-sstable-tombstone-compaction">Single sstable tombstone compaction</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#common-options">Common options</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#compaction-nodetool-commands">Compaction nodetool commands</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#switching-the-compaction-strategy-and-options-using-jmx">Switching the compaction strategy and options using JMX</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#more-detailed-compaction-logging">More detailed compaction logging</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#size-tiered-compaction-strategy">Size Tiered Compaction Strategy</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#leveled-compaction-strategy">Leveled Compaction Strategy</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#time-window-compactionstrategy">Time Window CompactionStrategy</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="compaction">
-<span id="id1"></span><h1>Compaction<a class="headerlink" href="#compaction" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="types-of-compaction">
-<h2>Types of compaction<a class="headerlink" href="#types-of-compaction" title="Permalink to this headline">¶</a></h2>
-<p>The concept of compaction is used for different kinds of operations in Cassandra, the common thing about these
-operations is that it takes one or more sstables and output new sstables. The types of compactions are;</p>
-<dl class="docutils">
-<dt>Minor compaction</dt>
-<dd>triggered automatically in Cassandra.</dd>
-<dt>Major compaction</dt>
-<dd>a user executes a compaction over all sstables on the node.</dd>
-<dt>User defined compaction</dt>
-<dd>a user triggers a compaction on a given set of sstables.</dd>
-<dt>Scrub</dt>
-<dd>try to fix any broken sstables. This can actually remove valid data if that data is corrupted, if that happens you
-will need to run a full repair on the node.</dd>
-<dt>Upgradesstables</dt>
-<dd>upgrade sstables to the latest version. Run this after upgrading to a new major version.</dd>
-<dt>Cleanup</dt>
-<dd>remove any ranges this node does not own anymore, typically triggered on neighbouring nodes after a node has been
-bootstrapped since that node will take ownership of some ranges from those nodes.</dd>
-<dt>Secondary index rebuild</dt>
-<dd>rebuild the secondary indexes on the node.</dd>
-<dt>Anticompaction</dt>
-<dd>after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.</dd>
-<dt>Sub range compaction</dt>
-<dd>It is possible to only compact a given sub range - this could be useful if you know a token that has been
-misbehaving - either gathering many updates or many deletes. (<code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">compact</span> <span class="pre">-st</span> <span class="pre">x</span> <span class="pre">-et</span> <span class="pre">y</span></code>) will pick
-all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
-most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
-the resulting sstable will end up in L0.</dd>
-</dl>
-</div>
-<div class="section" id="when-is-a-minor-compaction-triggered">
-<h2>When is a minor compaction triggered?<a class="headerlink" href="#when-is-a-minor-compaction-triggered" title="Permalink to this headline">¶</a></h2>
-<p>#  When an sstable is added to the node through flushing/streaming etc.
-#  When autocompaction is enabled after being disabled (<code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">enableautocompaction</span></code>)
-#  When compaction adds new sstables.
-#  A check for new minor compactions every 5 minutes.</p>
-</div>
-<div class="section" id="merging-sstables">
-<h2>Merging sstables<a class="headerlink" href="#merging-sstables" title="Permalink to this headline">¶</a></h2>
-<p>Compaction is about merging sstables, since partitions in sstables are sorted based on the hash of the partition key it
-is possible to efficiently merge separate sstables. Content of each partition is also sorted so each partition can be
-merged efficiently.</p>
-</div>
-<div class="section" id="tombstones-and-garbage-collection-gc-grace">
-<h2>Tombstones and Garbage Collection (GC) Grace<a class="headerlink" href="#tombstones-and-garbage-collection-gc-grace" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="why-tombstones">
-<h3>Why Tombstones<a class="headerlink" href="#why-tombstones" title="Permalink to this headline">¶</a></h3>
-<p>When a delete request is received by Cassandra it does not actually remove the data from the underlying store. Instead
-it writes a special piece of data known as a tombstone. The Tombstone represents the delete and causes all values which
-occurred before the tombstone to not appear in queries to the database. This approach is used instead of removing values
-because of the distributed nature of Cassandra.</p>
-</div>
-<div class="section" id="deletes-without-tombstones">
-<h3>Deletes without tombstones<a class="headerlink" href="#deletes-without-tombstones" title="Permalink to this headline">¶</a></h3>
-<p>Imagine a three node cluster which has the value [A] replicated to every node.:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>[A], [A], [A]
-</pre></div>
-</div>
-<p>If one of the nodes fails and and our delete operation only removes existing values we can end up with a cluster that
-looks like:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>[], [], [A]
-</pre></div>
-</div>
-<p>Then a repair operation would replace the value of [A] back onto the two
-nodes which are missing the value.:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>[A], [A], [A]
-</pre></div>
-</div>
-<p>This would cause our data to be resurrected even though it had been
-deleted.</p>
-</div>
-<div class="section" id="deletes-with-tombstones">
-<h3>Deletes with Tombstones<a class="headerlink" href="#deletes-with-tombstones" title="Permalink to this headline">¶</a></h3>
-<p>Starting again with a three node cluster which has the value [A] replicated to every node.:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>[A], [A], [A]
-</pre></div>
-</div>
-<p>If instead of removing data we add a tombstone record, our single node failure situation will look like this.:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A]
-</pre></div>
-</div>
-<p>Now when we issue a repair the Tombstone will be copied to the replica, rather than the deleted data being
-resurrected.:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A, Tombstone[A]]
-</pre></div>
-</div>
-<p>Our repair operation will correctly put the state of the system to what we expect with the record [A] marked as deleted
-on all nodes. This does mean we will end up accruing Tombstones which will permanently accumulate disk space. To avoid
-keeping tombstones forever we have a parameter known as <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> for every table in Cassandra.</p>
-</div>
-<div class="section" id="the-gc-grace-seconds-parameter-and-tombstone-removal">
-<h3>The gc_grace_seconds parameter and Tombstone Removal<a class="headerlink" href="#the-gc-grace-seconds-parameter-and-tombstone-removal" title="Permalink to this headline">¶</a></h3>
-<p>The table level <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> parameter controls how long Cassandra will retain tombstones through compaction
-events before finally removing them. This duration should directly reflect the amount of time a user expects to allow
-before recovering a failed node. After <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> has expired the tombstone may be removed (meaning there will
-no longer be any record that a certain piece of data was deleted), but as a tombstone can live in one sstable and the
-data it covers in another, a compaction must also include both sstable for a tombstone to be removed. More precisely, to
-be able to drop an actual tombstone the following needs to be true;</p>
-<ul class="simple">
-<li>The tombstone must be older than <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code></li>
-<li>If partition X contains the tombstone, the sstable containing the partition plus all sstables containing data older
-than the tombstone containing X must be included in the same compaction. We don&#8217;t need to care if the partition is in
-an sstable if we can guarantee that all data in that sstable is newer than the tombstone. If the tombstone is older
-than the data it cannot shadow that data.</li>
-<li>If the option <code class="docutils literal"><span class="pre">only_purge_repaired_tombstones</span></code> is enabled, tombstones are only removed if the data has also been
-repaired.</li>
-</ul>
-<p>If a node remains down or disconnected for longer than <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> it&#8217;s deleted data will be repaired back to
-the other nodes and re-appear in the cluster. This is basically the same as in the &#8220;Deletes without Tombstones&#8221; section.
-Note that tombstones will not be removed until a compaction event even if <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> has elapsed.</p>
-<p>The default value for <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> is 864000 which is equivalent to 10 days. This can be set when creating or
-altering a table using <code class="docutils literal"><span class="pre">WITH</span> <span class="pre">gc_grace_seconds</span></code>.</p>
-</div>
-</div>
-<div class="section" id="ttl">
-<h2>TTL<a class="headerlink" href="#ttl" title="Permalink to this headline">¶</a></h2>
-<p>Data in Cassandra can have an additional property called time to live - this is used to automatically drop data that has
-expired once the time is reached. Once the TTL has expired the data is converted to a tombstone which stays around for
-at least <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code>. Note that if you mix data with TTL and data without TTL (or just different length of the
-TTL) Cassandra will have a hard time dropping the tombstones created since the partition might span many sstables and
-not all are compacted at once.</p>
-</div>
-<div class="section" id="fully-expired-sstables">
-<h2>Fully expired sstables<a class="headerlink" href="#fully-expired-sstables" title="Permalink to this headline">¶</a></h2>
-<p>If an sstable contains only tombstones and it is guaranteed that that sstable is not shadowing data in any other sstable
-compaction can drop that sstable. If you see sstables with only tombstones (note that TTL:ed data is considered
-tombstones once the time to live has expired) but it is not being dropped by compaction, it is likely that other
-sstables contain older data. There is a tool called <code class="docutils literal"><span class="pre">sstableexpiredblockers</span></code> that will list which sstables are
-droppable and which are blocking them from being dropped. This is especially useful for time series compaction with
-<code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> (and the deprecated <code class="docutils literal"><span class="pre">DateTieredCompactionStrategy</span></code>).</p>
-</div>
-<div class="section" id="repaired-unrepaired-data">
-<h2>Repaired/unrepaired data<a class="headerlink" href="#repaired-unrepaired-data" title="Permalink to this headline">¶</a></h2>
-<p>With incremental repairs Cassandra must keep track of what data is repaired and what data is unrepaired. With
-anticompaction repaired data is split out into repaired and unrepaired sstables. To avoid mixing up the data again
-separate compaction strategy instances are run on the two sets of data, each instance only knowing about either the
-repaired or the unrepaired sstables. This means that if you only run incremental repair once and then never again, you
-might have very old data in the repaired sstables that block compaction from dropping tombstones in the unrepaired
-(probably newer) sstables.</p>
-</div>
-<div class="section" id="data-directories">
-<h2>Data directories<a class="headerlink" href="#data-directories" title="Permalink to this headline">¶</a></h2>
-<p>Since tombstones and data can live in different sstables it is important to realize that losing an sstable might lead to
-data becoming live again - the most common way of losing sstables is to have a hard drive break down. To avoid making
-data live tombstones and actual data are always in the same data directory. This way, if a disk is lost, all versions of
-a partition are lost and no data can get undeleted. To achieve this a compaction strategy instance per data directory is
-run in addition to the compaction strategy instances containing repaired/unrepaired data, this means that if you have 4
-data directories there will be 8 compaction strategy instances running. This has a few more benefits than just avoiding
-data getting undeleted:</p>
-<ul class="simple">
-<li>It is possible to run more compactions in parallel - leveled compaction will have several totally separate levelings
-and each one can run compactions independently from the others.</li>
-<li>Users can backup and restore a single data directory.</li>
-<li>Note though that currently all data directories are considered equal, so if you have a tiny disk and a big disk
-backing two data directories, the big one will be limited the by the small one. One work around to this is to create
-more data directories backed by the big disk.</li>
-</ul>
-</div>
-<div class="section" id="single-sstable-tombstone-compaction">
-<h2>Single sstable tombstone compaction<a class="headerlink" href="#single-sstable-tombstone-compaction" title="Permalink to this headline">¶</a></h2>
-<p>When an sstable is written a histogram with the tombstone expiry times is created and this is used to try to find
-sstables with very many tombstones and run single sstable compaction on that sstable in hope of being able to drop
-tombstones in that sstable. Before starting this it is also checked how likely it is that any tombstones will actually
-will be able to be dropped how much this sstable overlaps with other sstables. To avoid most of these checks the
-compaction option <code class="docutils literal"><span class="pre">unchecked_tombstone_compaction</span></code> can be enabled.</p>
-</div>
-<div class="section" id="common-options">
-<span id="compaction-options"></span><h2>Common options<a class="headerlink" href="#common-options" title="Permalink to this headline">¶</a></h2>
-<p>There is a number of common options for all the compaction strategies;</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">enabled</span></code> (default: true)</dt>
-<dd>Whether minor compactions should run. Note that you can have &#8216;enabled&#8217;: true as a compaction option and then do
-&#8216;nodetool enableautocompaction&#8217; to start running compactions.</dd>
-<dt><code class="docutils literal"><span class="pre">tombstone_threshold</span></code> (default: 0.2)</dt>
-<dd>How much of the sstable should be tombstones for us to consider doing a single sstable compaction of that sstable.</dd>
-<dt><code class="docutils literal"><span class="pre">tombstone_compaction_interval</span></code> (default: 86400s (1 day))</dt>
-<dd>Since it might not be possible to drop any tombstones when doing a single sstable compaction we need to make sure
-that one sstable is not constantly getting recompacted - this option states how often we should try for a given
-sstable.</dd>
-<dt><code class="docutils literal"><span class="pre">log_all</span></code> (default: false)</dt>
-<dd>New detailed compaction logging, see <a class="reference internal" href="#detailed-compaction-logging"><span class="std std-ref">below</span></a>.</dd>
-<dt><code class="docutils literal"><span class="pre">unchecked_tombstone_compaction</span></code> (default: false)</dt>
-<dd>The single sstable compaction has quite strict checks for whether it should be started, this option disables those
-checks and for some usecases this might be needed.  Note that this does not change anything for the actual
-compaction, tombstones are only dropped if it is safe to do so - it might just rewrite an sstable without being able
-to drop any tombstones.</dd>
-<dt><code class="docutils literal"><span class="pre">only_purge_repaired_tombstone</span></code> (default: false)</dt>
-<dd>Option to enable the extra safety of making sure that tombstones are only dropped if the data has been repaired.</dd>
-<dt><code class="docutils literal"><span class="pre">min_threshold</span></code> (default: 4)</dt>
-<dd>Lower limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
-<dt><code class="docutils literal"><span class="pre">max_threshold</span></code> (default: 32)</dt>
-<dd>Upper limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
-</dl>
-<p>Further, see the section on each strategy for specific additional options.</p>
-</div>
-<div class="section" id="compaction-nodetool-commands">
-<h2>Compaction nodetool commands<a class="headerlink" href="#compaction-nodetool-commands" title="Permalink to this headline">¶</a></h2>
-<p>The <a class="reference internal" href="../tools/nodetool.html#nodetool"><span class="std std-ref">nodetool</span></a> utility provides a number of commands related to compaction:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">enableautocompaction</span></code></dt>
-<dd>Enable compaction.</dd>
-<dt><code class="docutils literal"><span class="pre">disableautocompaction</span></code></dt>
-<dd>Disable compaction.</dd>
-<dt><code class="docutils literal"><span class="pre">setcompactionthroughput</span></code></dt>
-<dd>How fast compaction should run at most - defaults to 16MB/s, but note that it is likely not possible to reach this
-throughput.</dd>
-<dt><code class="docutils literal"><span class="pre">compactionstats</span></code></dt>
-<dd>Statistics about current and pending compactions.</dd>
-<dt><code class="docutils literal"><span class="pre">compactionhistory</span></code></dt>
-<dd>List details about the last compactions.</dd>
-<dt><code class="docutils literal"><span class="pre">setcompactionthreshold</span></code></dt>
-<dd>Set the min/max sstable count for when to trigger compaction, defaults to 4/32.</dd>
-</dl>
-</div>
-<div class="section" id="switching-the-compaction-strategy-and-options-using-jmx">
-<h2>Switching the compaction strategy and options using JMX<a class="headerlink" href="#switching-the-compaction-strategy-and-options-using-jmx" title="Permalink to this headline">¶</a></h2>
-<p>It is possible to switch compaction strategies and its options on just a single node using JMX, this is a great way to
-experiment with settings without affecting the whole cluster. The mbean is:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>org.apache.cassandra.db:type=ColumnFamilies,keyspace=&lt;keyspace_name&gt;,columnfamily=&lt;table_name&gt;
-</pre></div>
-</div>
-<p>and the attribute to change is <code class="docutils literal"><span class="pre">CompactionParameters</span></code> or <code class="docutils literal"><span class="pre">CompactionParametersJson</span></code> if you use jconsole or jmc. The
-syntax for the json version is the same as you would use in an <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> statement -
-for example:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>{ &#39;class&#39;: &#39;LeveledCompactionStrategy&#39;, &#39;sstable_size_in_mb&#39;: 123 }
-</pre></div>
-</div>
-<p>The setting is kept until someone executes an <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> that touches the compaction
-settings or restarts the node.</p>
-</div>
-<div class="section" id="more-detailed-compaction-logging">
-<span id="detailed-compaction-logging"></span><h2>More detailed compaction logging<a class="headerlink" href="#more-detailed-compaction-logging" title="Permalink to this headline">¶</a></h2>
-<p>Enable with the compaction option <code class="docutils literal"><span class="pre">log_all</span></code> and a more detailed compaction log file will be produced in your log
-directory.</p>
-</div>
-<div class="section" id="size-tiered-compaction-strategy">
-<span id="stcs"></span><h2>Size Tiered Compaction Strategy<a class="headerlink" href="#size-tiered-compaction-strategy" title="Permalink to this headline">¶</a></h2>
-<p>The basic idea of <code class="docutils literal"><span class="pre">SizeTieredCompactionStrategy</span></code> (STCS) is to merge sstables of approximately the same size. All
-sstables are put in different buckets depending on their size. An sstable is added to the bucket if size of the sstable
-is within <code class="docutils literal"><span class="pre">bucket_low</span></code> and <code class="docutils literal"><span class="pre">bucket_high</span></code> of the current average size of the sstables already in the bucket. This
-will create several buckets and the most interesting of those buckets will be compacted. The most interesting one is
-decided by figuring out which bucket&#8217;s sstables takes the most reads.</p>
-<div class="section" id="major-compaction">
-<h3>Major compaction<a class="headerlink" href="#major-compaction" title="Permalink to this headline">¶</a></h3>
-<p>When running a major compaction with STCS you will end up with two sstables per data directory (one for repaired data
-and one for unrepaired data). There is also an option (-s) to do a major compaction that splits the output into several
-sstables. The sizes of the sstables are approximately 50%, 25%, 12.5%... of the total size.</p>
-</div>
-<div class="section" id="stcs-options">
-<span id="id2"></span><h3>STCS options<a class="headerlink" href="#stcs-options" title="Permalink to this headline">¶</a></h3>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">min_sstable_size</span></code> (default: 50MB)</dt>
-<dd>Sstables smaller than this are put in the same bucket.</dd>
-<dt><code class="docutils literal"><span class="pre">bucket_low</span></code> (default: 0.5)</dt>
-<dd>How much smaller than the average size of a bucket a sstable should be before not being included in the bucket. That
-is, if <code class="docutils literal"><span class="pre">bucket_low</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span> <span class="pre">&lt;</span> <span class="pre">sstable_size</span></code> (and the <code class="docutils literal"><span class="pre">bucket_high</span></code> condition holds, see below), then
-the sstable is added to the bucket.</dd>
-<dt><code class="docutils literal"><span class="pre">bucket_high</span></code> (default: 1.5)</dt>
-<dd>How much bigger than the average size of a bucket a sstable should be before not being included in the bucket. That
-is, if <code class="docutils literal"><span class="pre">sstable_size</span> <span class="pre">&lt;</span> <span class="pre">bucket_high</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span></code> (and the <code class="docutils literal"><span class="pre">bucket_low</span></code> condition holds, see above), then
-the sstable is added to the bucket.</dd>
-</dl>
-</div>
-<div class="section" id="defragmentation">
-<h3>Defragmentation<a class="headerlink" href="#defragmentation" title="Permalink to this headline">¶</a></h3>
-<p>Defragmentation is done when many sstables are touched during a read.  The result of the read is put in to the memtable
-so that the next read will not have to touch as many sstables. This can cause writes on a read-only-cluster.</p>
-</div>
-</div>
-<div class="section" id="leveled-compaction-strategy">
-<span id="lcs"></span><h2>Leveled Compaction Strategy<a class="headerlink" href="#leveled-compaction-strategy" title="Permalink to this headline">¶</a></h2>
-<p>The idea of <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code> (LCS) is that all sstables are put into different levels where we guarantee
-that no overlapping sstables are in the same level. By overlapping we mean that the first/last token of a single sstable
-are never overlapping with other sstables. This means that for a SELECT we will only have to look for the partition key
-in a single sstable per level. Each level is 10x the size of the previous one and each sstable is 160MB by default. L0
-is where sstables are streamed/flushed - no overlap guarantees are given here.</p>
-<p>When picking compaction candidates we have to make sure that the compaction does not create overlap in the target level.
-This is done by always including all overlapping sstables in the next level. For example if we select an sstable in L3,
-we need to guarantee that we pick all overlapping sstables in L4 and make sure that no currently ongoing compactions
-will create overlap if we start that compaction. We can start many parallel compactions in a level if we guarantee that
-we wont create overlap. For L0 -&gt; L1 compactions we almost always need to include all L1 sstables since most L0 sstables
-cover the full range. We also can&#8217;t compact all L0 sstables with all L1 sstables in a single compaction since that can
-use too much memory.</p>
-<p>When deciding which level to compact LCS checks the higher levels first (with LCS, a &#8220;higher&#8221; level is one with a higher
-number, L0 being the lowest one) and if the level is behind a compaction will be started in that level.</p>
-<div class="section" id="id3">
-<h3>Major compaction<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
-<p>It is possible to do a major compaction with LCS - it will currently start by filling out L1 and then once L1 is full,
-it continues with L2 etc. This is sub optimal and will change to create all the sstables in a high level instead,
-CASSANDRA-11817.</p>
-</div>
-<div class="section" id="bootstrapping">
-<h3>Bootstrapping<a class="headerlink" href="#bootstrapping" title="Permalink to this headline">¶</a></h3>
-<p>During bootstrap sstables are streamed from other nodes. The level of the remote sstable is kept to avoid many
-compactions after the bootstrap is done. During bootstrap the new node also takes writes while it is streaming the data
-from a remote node - these writes are flushed to L0 like all other writes and to avoid those sstables blocking the
-remote sstables from going to the correct level, we only do STCS in L0 until the bootstrap is done.</p>
-</div>
-<div class="section" id="stcs-in-l0">
-<h3>STCS in L0<a class="headerlink" href="#stcs-in-l0" title="Permalink to this headline">¶</a></h3>
-<p>If LCS gets very many L0 sstables reads are going to hit all (or most) of the L0 sstables since they are likely to be
-overlapping. To more quickly remedy this LCS does STCS compactions in L0 if there are more than 32 sstables there. This
-should improve read performance more quickly compared to letting LCS do its L0 -&gt; L1 compactions. If you keep getting
-too many sstables in L0 it is likely that LCS is not the best fit for your workload and STCS could work out better.</p>
-</div>
-<div class="section" id="starved-sstables">
-<h3>Starved sstables<a class="headerlink" href="#starved-sstables" title="Permalink to this headline">¶</a></h3>
-<p>If a node ends up with a leveling where there are a few very high level sstables that are not getting compacted they
-might make it impossible for lower levels to drop tombstones etc. For example, if there are sstables in L6 but there is
-only enough data to actually get a L4 on the node the left over sstables in L6 will get starved and not compacted.  This
-can happen if a user changes sstable_size_in_mb from 5MB to 160MB for example. To avoid this LCS tries to include
-those starved high level sstables in other compactions if there has been 25 compaction rounds where the highest level
-has not been involved.</p>
-</div>
-<div class="section" id="lcs-options">
-<span id="id4"></span><h3>LCS options<a class="headerlink" href="#lcs-options" title="Permalink to this headline">¶</a></h3>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">sstable_size_in_mb</span></code> (default: 160MB)</dt>
-<dd>The target compressed (if using compression) sstable size - the sstables can end up being larger if there are very
-large partitions on the node.</dd>
-</dl>
-<p>LCS also support the <code class="docutils literal"><span class="pre">cassandra.disable_stcs_in_l0</span></code> startup option (<code class="docutils literal"><span class="pre">-Dcassandra.disable_stcs_in_l0=true</span></code>) to avoid
-doing STCS in L0.</p>
-</div>
-</div>
-<div class="section" id="time-window-compactionstrategy">
-<span id="twcs"></span><h2>Time Window CompactionStrategy<a class="headerlink" href="#time-window-compactionstrategy" title="Permalink to this headline">¶</a></h2>
-<p><code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> (TWCS) is designed specifically for workloads where it&#8217;s beneficial to have data on
-disk grouped by the timestamp of the data, a common goal when the workload is time-series in nature or when all data is
-written with a TTL. In an expiring/TTL workload, the contents of an entire SSTable likely expire at approximately the
-same time, allowing them to be dropped completely, and space reclaimed much more reliably than when using
-<code class="docutils literal"><span class="pre">SizeTieredCompactionStrategy</span></code> or <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code>. The basic concept is that
-<code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> will create 1 sstable per file for a given window, where a window is simply calculated
-as the combination of two primary options:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">compaction_window_unit</span></code> (default: DAYS)</dt>
-<dd>A Java TimeUnit (MINUTES, HOURS, or DAYS).</dd>
-<dt><code class="docutils literal"><span class="pre">compaction_window_size</span></code> (default: 1)</dt>
-<dd>The number of units that make up a window.</dd>
-</dl>
-<p>Taken together, the operator can specify windows of virtually any size, and <cite>TimeWindowCompactionStrategy</cite> will work to
-create a single sstable for writes within that window. For efficiency during writing, the newest window will be
-compacted using <cite>SizeTieredCompactionStrategy</cite>.</p>
-<p>Ideally, operators should select a <code class="docutils literal"><span class="pre">compaction_window_unit</span></code> and <code class="docutils literal"><span class="pre">compaction_window_size</span></code> pair that produces
-approximately 20-30 windows - if writing with a 90 day TTL, for example, a 3 Day window would be a reasonable choice
-(<code class="docutils literal"><span class="pre">'compaction_window_unit':'DAYS','compaction_window_size':3</span></code>).</p>
-<div class="section" id="timewindowcompactionstrategy-operational-concerns">
-<h3>TimeWindowCompactionStrategy Operational Concerns<a class="headerlink" href="#timewindowcompactionstrategy-operational-concerns" title="Permalink to this headline">¶</a></h3>
-<p>The primary motivation for TWCS is to separate data on disk by timestamp and to allow fully expired SSTables to drop
-more efficiently. One potential way this optimal behavior can be subverted is if data is written to SSTables out of
-order, with new data and old data in the same SSTable. Out of order data can appear in two ways:</p>
-<ul class="simple">
-<li>If the user mixes old data and new data in the traditional write path, the data will be comingled in the memtables
-and flushed into the same SSTable, where it will remain comingled.</li>
-<li>If the user&#8217;s read requests for old data cause read repairs that pull old data into the current memtable, that data
-will be comingled and flushed into the same SSTable.</li>
-</ul>
-<p>While TWCS tries to minimize the impact of comingled data, users should attempt to avoid this behavior.  Specifically,
-users should avoid queries that explicitly set the timestamp via CQL <code class="docutils literal"><span class="pre">USING</span> <span class="pre">TIMESTAMP</span></code>. Additionally, users should run
-frequent repairs (which streams data in such a way that it does not become comingled), and disable background read
-repair by setting the table&#8217;s <code class="docutils literal"><span class="pre">read_repair_chance</span></code> and <code class="docutils literal"><span class="pre">dclocal_read_repair_chance</span></code> to 0.</p>
-</div>
-<div class="section" id="changing-timewindowcompactionstrategy-options">
-<h3>Changing TimeWindowCompactionStrategy Options<a class="headerlink" href="#changing-timewindowcompactionstrategy-options" title="Permalink to this headline">¶</a></h3>
-<p>Operators wishing to enable <code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> on existing data should consider running a major compaction
-first, placing all existing data into a single (old) window. Subsequent newer writes will then create typical SSTables
-as expected.</p>
-<p>Operators wishing to change <code class="docutils literal"><span class="pre">compaction_window_unit</span></code> or <code class="docutils literal"><span class="pre">compaction_window_size</span></code> can do so, but may trigger
-additional compactions as adjacent windows are joined together. If the window size is decrease d (for example, from 24
-hours to 12 hours), then the existing SSTables will not be modified - TWCS can not split existing SSTables into multiple
-windows.</p>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="bloom_filters.html" class="btn btn-default pull-right " role="button" title="Bloom Filters" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="hints.html" class="btn btn-default" role="button" title="Hints" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/compression.html b/src/doc/3.10/operating/compression.html
deleted file mode 100644
index cbcd8a6..0000000
--- a/src/doc/3.10/operating/compression.html
+++ /dev/null
@@ -1,189 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Compression"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Change Data Capture" href="cdc.html"/>
-      <link rel="prev" title="Bloom Filters" href="bloom_filters.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Compression</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#configuring-compression">Configuring Compression</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#benefits-and-uses">Benefits and Uses</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#operational-impact">Operational Impact</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#advanced-use">Advanced Use</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="compression">
-<h1>Compression<a class="headerlink" href="#compression" title="Permalink to this headline">¶</a></h1>
-<p>Cassandra offers operators the ability to configure compression on a per-table basis. Compression reduces the size of
-data on disk by compressing the SSTable in user-configurable compression <code class="docutils literal"><span class="pre">chunk_length_in_kb</span></code>. Because Cassandra
-SSTables are immutable, the CPU cost of compressing is only necessary when the SSTable is written - subsequent updates
-to data will land in different SSTables, so Cassandra will not need to decompress, overwrite, and recompress data when
-UPDATE commands are issued. On reads, Cassandra will locate the relevant compressed chunks on disk, decompress the full
-chunk, and then proceed with the remainder of the read path (merging data from disks and memtables, read repair, and so
-on).</p>
-<div class="section" id="configuring-compression">
-<h2>Configuring Compression<a class="headerlink" href="#configuring-compression" title="Permalink to this headline">¶</a></h2>
-<p>Compression is configured on a per-table basis as an optional argument to <code class="docutils literal"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> or <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code>. By
-default, three options are relevant:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">class</span></code> specifies the compression class - Cassandra provides three classes (<code class="docutils literal"><span class="pre">LZ4Compressor</span></code>,
-<code class="docutils literal"><span class="pre">SnappyCompressor</span></code>, and <code class="docutils literal"><span class="pre">DeflateCompressor</span></code> ). The default is <code class="docutils literal"><span class="pre">SnappyCompressor</span></code>.</li>
-<li><code class="docutils literal"><span class="pre">chunk_length_in_kb</span></code> specifies the number of kilobytes of data per compression chunk. The default is 64KB.</li>
-<li><code class="docutils literal"><span class="pre">crc_check_chance</span></code> determines how likely Cassandra is to verify the checksum on each compression chunk during
-reads. The default is 1.0.</li>
-</ul>
-<p>Users can set compression using the following syntax:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>CREATE TABLE keyspace.table (id int PRIMARY KEY) WITH compression = {&#39;class&#39;: &#39;LZ4Compressor&#39;};
-</pre></div>
-</div>
-<p>Or</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH compression = {&#39;class&#39;: &#39;SnappyCompressor&#39;, &#39;chunk_length_in_kb&#39;: 128, &#39;crc_check_chance&#39;: 0.5};
-</pre></div>
-</div>
-<p>Once enabled, compression can be disabled with <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> setting <code class="docutils literal"><span class="pre">enabled</span></code> to <code class="docutils literal"><span class="pre">false</span></code>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH compression = {&#39;enabled&#39;:&#39;false&#39;};
-</pre></div>
-</div>
-<p>Operators should be aware, however, that changing compression is not immediate. The data is compressed when the SSTable
-is written, and as SSTables are immutable, the compression will not be modified until the table is compacted. Upon
-issuing a change to the compression options via <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code>, the existing SSTables will not be modified until they
-are compacted - if an operator needs compression changes to take effect immediately, the operator can trigger an SSTable
-rewrite using <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the SSTables on disk,
-re-compressing the data in the process.</p>
-</div>
-<div class="section" id="benefits-and-uses">
-<h2>Benefits and Uses<a class="headerlink" href="#benefits-and-uses" title="Permalink to this headline">¶</a></h2>
-<p>Compression&#8217;s primary benefit is that it reduces the amount of data written to disk. Not only does the reduced size save
-in storage requirements, it often increases read and write throughput, as the CPU overhead of compressing data is faster
-than the time it would take to read or write the larger volume of uncompressed data from disk.</p>
-<p>Compression is most useful in tables comprised of many rows, where the rows are similar in nature. Tables containing
-similar text columns (such as repeated JSON blobs) often compress very well.</p>
-</div>
-<div class="section" id="operational-impact">
-<h2>Operational Impact<a class="headerlink" href="#operational-impact" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li>Compression metadata is stored off-heap and scales with data on disk.  This often requires 1-3GB of off-heap RAM per
-terabyte of data on disk, though the exact usage varies with <code class="docutils literal"><span class="pre">chunk_length_in_kb</span></code> and compression ratios.</li>
-<li>Streaming operations involve compressing and decompressing data on compressed tables - in some code paths (such as
-non-vnode bootstrap), the CPU overhead of compression can be a limiting factor.</li>
-<li>The compression path checksums data to ensure correctness - while the traditional Cassandra read path does not have a
-way to ensure correctness of data on disk, compressed tables allow the user to set <code class="docutils literal"><span class="pre">crc_check_chance</span></code> (a float from
-0.0 to 1.0) to allow Cassandra to probabilistically validate chunks on read to verify bits on disk are not corrupt.</li>
-</ul>
-</div>
-<div class="section" id="advanced-use">
-<h2>Advanced Use<a class="headerlink" href="#advanced-use" title="Permalink to this headline">¶</a></h2>
-<p>Advanced users can provide their own compression class by implementing the interface at
-<code class="docutils literal"><span class="pre">org.apache.cassandra.io.compress.ICompressor</span></code>.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="cdc.html" class="btn btn-default pull-right " role="button" title="Change Data Capture" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="bloom_filters.html" class="btn btn-default" role="button" title="Bloom Filters" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/hardware.html b/src/doc/3.10/operating/hardware.html
deleted file mode 100644
index e3223c3..0000000
--- a/src/doc/3.10/operating/hardware.html
+++ /dev/null
@@ -1,191 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Hardware Choices"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Cassandra Tools" href="../tools/index.html"/>
-      <link rel="prev" title="Security" href="security.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Hardware Choices</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#cpu">CPU</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#memory">Memory</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#disks">Disks</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#common-cloud-choices">Common Cloud Choices</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="hardware-choices">
-<h1>Hardware Choices<a class="headerlink" href="#hardware-choices" title="Permalink to this headline">¶</a></h1>
-<p>Like most databases, Cassandra throughput improves with more CPU cores, more RAM, and faster disks. While Cassandra can
-be made to run on small servers for testing or development environments (including Raspberry Pis), a minimal production
-server requires at least 2 cores, and at least 8GB of RAM. Typical production servers have 8 or more cores and at least
-32GB of RAM.</p>
-<div class="section" id="cpu">
-<h2>CPU<a class="headerlink" href="#cpu" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra is highly concurrent, handling many simultaneous requests (both read and write) using multiple threads running
-on as many CPU cores as possible. The Cassandra write path tends to be heavily optimized (writing to the commitlog and
-then inserting the data into the memtable), so writes, in particular, tend to be CPU bound. Consequently, adding
-additional CPU cores often increases throughput of both reads and writes.</p>
-</div>
-<div class="section" id="memory">
-<h2>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra runs within a Java VM, which will pre-allocate a fixed size heap (java&#8217;s Xmx system parameter). In addition to
-the heap, Cassandra will use significant amounts of RAM offheap for compression metadata, bloom filters, row, key, and
-counter caches, and an in process page cache. Finally, Cassandra will take advantage of the operating system&#8217;s page
-cache, storing recently accessed portions files in RAM for rapid re-use.</p>
-<p>For optimal performance, operators should benchmark and tune their clusters based on their individual workload. However,
-basic guidelines suggest:</p>
-<ul class="simple">
-<li>ECC RAM should always be used, as Cassandra has few internal safeguards to protect against bit level corruption</li>
-<li>The Cassandra heap should be no less than 2GB, and no more than 50% of your system RAM</li>
-<li>Heaps smaller than 12GB should consider ParNew/ConcurrentMarkSweep garbage collection</li>
-<li>Heaps larger than 12GB should consider G1GC</li>
-</ul>
-</div>
-<div class="section" id="disks">
-<h2>Disks<a class="headerlink" href="#disks" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra persists data to disk for two very different purposes. The first is to the commitlog when a new write is made
-so that it can be replayed after a crash or system shutdown. The second is to the data directory when thresholds are
-exceeded and memtables are flushed to disk as SSTables.</p>
-<p>Commitlogs receive every write made to a Cassandra node and have the potential to block client operations, but they are
-only ever read on node start-up. SSTable (data file) writes on the other hand occur asynchronously, but are read to
-satisfy client look-ups. SSTables are also periodically merged and rewritten in a process called compaction.  The data
-held in the commitlog directory is data that has not been permanently saved to the SSTable data directories - it will be
-periodically purged once it is flushed to the SSTable data files.</p>
-<p>Cassandra performs very well on both spinning hard drives and solid state disks. In both cases, Cassandra&#8217;s sorted
-immutable SSTables allow for linear reads, few seeks, and few overwrites, maximizing throughput for HDDs and lifespan of
-SSDs by avoiding write amplification. However, when using spinning disks, it&#8217;s important that the commitlog
-(<code class="docutils literal"><span class="pre">commitlog_directory</span></code>) be on one physical disk (not simply a partition, but a physical disk), and the data files
-(<code class="docutils literal"><span class="pre">data_file_directories</span></code>) be set to a separate physical disk. By separating the commitlog from the data directory,
-writes can benefit from sequential appends to the commitlog without having to seek around the platter as reads request
-data from various SSTables on disk.</p>
-<p>In most cases, Cassandra is designed to provide redundancy via multiple independent, inexpensive servers. For this
-reason, using NFS or a SAN for data directories is an antipattern and should typically be avoided.  Similarly, servers
-with multiple disks are often better served by using RAID0 or JBOD than RAID1 or RAID5 - replication provided by
-Cassandra obsoletes the need for replication at the disk layer, so it&#8217;s typically recommended that operators take
-advantage of the additional throughput of RAID0 rather than protecting against failures with RAID1 or RAID5.</p>
-</div>
-<div class="section" id="common-cloud-choices">
-<h2>Common Cloud Choices<a class="headerlink" href="#common-cloud-choices" title="Permalink to this headline">¶</a></h2>
-<p>Many large users of Cassandra run in various clouds, including AWS, Azure, and GCE - Cassandra will happily run in any
-of these environments. Users should choose similar hardware to what would be needed in physical space. In EC2, popular
-options include:</p>
-<ul class="simple">
-<li>m1.xlarge instances, which provide 1.6TB of local ephemeral spinning storage and sufficient RAM to run moderate
-workloads</li>
-<li>i2 instances, which provide both a high RAM:CPU ratio and local ephemeral SSDs</li>
-<li>m4.2xlarge / c4.4xlarge instances, which provide modern CPUs, enhanced networking and work well with EBS GP2 (SSD)
-storage</li>
-</ul>
-<p>Generally, disk and network performance increases with instance size and generation, so newer generations of instances
-and larger instance types within each family often perform better than their smaller or older alternatives.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../tools/index.html" class="btn btn-default pull-right " role="button" title="Cassandra Tools" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="security.html" class="btn btn-default" role="button" title="Security" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/hints.html b/src/doc/3.10/operating/hints.html
deleted file mode 100644
index 074e1b5..0000000
--- a/src/doc/3.10/operating/hints.html
+++ /dev/null
@@ -1,125 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Hints"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Compaction" href="compaction.html"/>
-      <link rel="prev" title="Read repair" href="read_repair.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="hints">
-<h1>Hints<a class="headerlink" href="#hints" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="compaction.html" class="btn btn-default pull-right " role="button" title="Compaction" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="read_repair.html" class="btn btn-default" role="button" title="Read repair" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/index.html b/src/doc/3.10/operating/index.html
deleted file mode 100644
index 0b4b845..0000000
--- a/src/doc/3.10/operating/index.html
+++ /dev/null
@@ -1,217 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Operating Cassandra"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="Snitch" href="snitch.html"/>
-      <link rel="prev" title="Cassandra Configuration File" href="../configuration/cassandra_config_file.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Operating Cassandra</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="operating-cassandra">
-<h1>Operating Cassandra<a class="headerlink" href="#operating-cassandra" title="Permalink to this headline">¶</a></h1>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="snitch.html">Snitch</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="snitch.html#dynamic-snitching">Dynamic snitching</a></li>
-<li class="toctree-l2"><a class="reference internal" href="snitch.html#snitch-classes">Snitch classes</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#bootstrap">Bootstrap</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#removing-nodes">Removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#moving-nodes">Moving nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#replacing-a-dead-node">Replacing a dead node</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#monitoring-progress">Monitoring progress</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#cleanup-data-after-range-movements">Cleanup data after range movements</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l1"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l1"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l1"><a class="reference internal" href="compaction.html">Compaction</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#types-of-compaction">Types of compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#when-is-a-minor-compaction-triggered">When is a minor compaction triggered?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#merging-sstables">Merging sstables</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#tombstones-and-garbage-collection-gc-grace">Tombstones and Garbage Collection (GC) Grace</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#ttl">TTL</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#fully-expired-sstables">Fully expired sstables</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#repaired-unrepaired-data">Repaired/unrepaired data</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#data-directories">Data directories</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#single-sstable-tombstone-compaction">Single sstable tombstone compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#common-options">Common options</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#compaction-nodetool-commands">Compaction nodetool commands</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#switching-the-compaction-strategy-and-options-using-jmx">Switching the compaction strategy and options using JMX</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#more-detailed-compaction-logging">More detailed compaction logging</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#size-tiered-compaction-strategy">Size Tiered Compaction Strategy</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#leveled-compaction-strategy">Leveled Compaction Strategy</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html#time-window-compactionstrategy">Time Window CompactionStrategy</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html#changing">Changing</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="compression.html">Compression</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="compression.html#configuring-compression">Configuring Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html#benefits-and-uses">Benefits and Uses</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html#operational-impact">Operational Impact</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html#advanced-use">Advanced Use</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="cdc.html">Change Data Capture</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html#overview">Overview</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html#configuration">Configuration</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html#reading-commitlogsegments">Reading CommitLogSegments</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html#warnings">Warnings</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html#further-reading">Further Reading</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l1"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l1"><a class="reference internal" href="metrics.html">Monitoring</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#metric-types">Metric Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#table-metrics">Table Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#keyspace-metrics">Keyspace Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#threadpool-metrics">ThreadPool Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#client-request-metrics">Client Request Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#cache-metrics">Cache Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#cql-metrics">CQL Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#droppedmessage-metrics">DroppedMessage Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#streaming-metrics">Streaming Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#compaction-metrics">Compaction Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#commitlog-metrics">CommitLog Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#storage-metrics">Storage Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#hintedhandoff-metrics">HintedHandoff Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#sstable-index-metrics">SSTable Index Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#bufferpool-metrics">BufferPool Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#client-metrics">Client Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#jvm-metrics">JVM Metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#jmx">JMX</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html#metric-reporters">Metric Reporters</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="security.html#tls-ssl-encryption">TLS/SSL Encryption</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html#roles">Roles</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html#authentication">Authentication</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html#authorization">Authorization</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html#caching">Caching</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html#jmx-access">JMX access</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="hardware.html">Hardware Choices</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html#cpu">CPU</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html#memory">Memory</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html#disks">Disks</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html#common-cloud-choices">Common Cloud Choices</a></li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="snitch.html" class="btn btn-default pull-right " role="button" title="Snitch" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../configuration/cassandra_config_file.html" class="btn btn-default" role="button" title="Cassandra Configuration File" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/metrics.html b/src/doc/3.10/operating/metrics.html
deleted file mode 100644
index 53678a1..0000000
--- a/src/doc/3.10/operating/metrics.html
+++ /dev/null
@@ -1,1714 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Monitoring"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Security" href="security.html"/>
-      <link rel="prev" title="Bulk Loading" href="bulk_loading.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Monitoring</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#metric-types">Metric Types</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#table-metrics">Table Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#keyspace-metrics">Keyspace Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#threadpool-metrics">ThreadPool Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#client-request-metrics">Client Request Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cache-metrics">Cache Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cql-metrics">CQL Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#droppedmessage-metrics">DroppedMessage Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#streaming-metrics">Streaming Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#compaction-metrics">Compaction Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#commitlog-metrics">CommitLog Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#storage-metrics">Storage Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#hintedhandoff-metrics">HintedHandoff Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#sstable-index-metrics">SSTable Index Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#bufferpool-metrics">BufferPool Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#client-metrics">Client Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#jvm-metrics">JVM Metrics</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#jmx">JMX</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#metric-reporters">Metric Reporters</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="monitoring">
-<h1>Monitoring<a class="headerlink" href="#monitoring" title="Permalink to this headline">¶</a></h1>
-<p>Metrics in Cassandra are managed using the <a class="reference external" href="http://metrics.dropwizard.io">Dropwizard Metrics</a> library. These metrics
-can be queried via JMX or pushed to external monitoring systems using a number of <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting">built in</a> and <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/manual/third-party/">third party</a> reporter plugins.</p>
-<p>Metrics are collected for a single node. It&#8217;s up to the operator to use an external monitoring system to aggregate them.</p>
-<div class="section" id="metric-types">
-<h2>Metric Types<a class="headerlink" href="#metric-types" title="Permalink to this headline">¶</a></h2>
-<p>All metrics reported by cassandra fit into one of the following types.</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">Gauge</span></code></dt>
-<dd>An instantaneous measurement of a value.</dd>
-<dt><code class="docutils literal"><span class="pre">Counter</span></code></dt>
-<dd>A gauge for an <code class="docutils literal"><span class="pre">AtomicLong</span></code> instance. Typically this is consumed by monitoring the change since the last call to
-see if there is a large increase compared to the norm.</dd>
-<dt><code class="docutils literal"><span class="pre">Histogram</span></code></dt>
-<dd><p class="first">Measures the statistical distribution of values in a stream of data.</p>
-<p class="last">In addition to minimum, maximum, mean, etc., it also measures median, 75th, 90th, 95th, 98th, 99th, and 99.9th
-percentiles.</p>
-</dd>
-<dt><code class="docutils literal"><span class="pre">Timer</span></code></dt>
-<dd>Measures both the rate that a particular piece of code is called and the histogram of its duration.</dd>
-<dt><code class="docutils literal"><span class="pre">Latency</span></code></dt>
-<dd>Special type that tracks latency (in microseconds) with a <code class="docutils literal"><span class="pre">Timer</span></code> plus a <code class="docutils literal"><span class="pre">Counter</span></code> that tracks the total latency
-accrued since starting. The former is useful if you track the change in total latency since the last check. Each
-metric name of this type will have &#8216;Latency&#8217; and &#8216;TotalLatency&#8217; appended to it.</dd>
-<dt><code class="docutils literal"><span class="pre">Meter</span></code></dt>
-<dd>A meter metric which measures mean throughput and one-, five-, and fifteen-minute exponentially-weighted moving
-average throughputs.</dd>
-</dl>
-</div>
-<div class="section" id="table-metrics">
-<h2>Table Metrics<a class="headerlink" href="#table-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Each table in Cassandra has metrics responsible for tracking its state and performance.</p>
-<p>The metric names are all appended with the specific <code class="docutils literal"><span class="pre">Keyspace</span></code> and <code class="docutils literal"><span class="pre">Table</span></code> name.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.Table.&lt;MetricName&gt;.&lt;Keyspace&gt;.&lt;Table&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Table</span> <span class="pre">keyspace=&lt;Keyspace&gt;</span> <span class="pre">scope=&lt;Table&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">There is a special table called &#8216;<code class="docutils literal"><span class="pre">all</span></code>&#8216; without a keyspace. This represents the aggregation of metrics across
-<strong>all</strong> tables and keyspaces on the node.</p>
-</div>
-<table border="1" class="docutils">
-<colgroup>
-<col width="19%" />
-<col width="7%" />
-<col width="74%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>MemtableOnHeapSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total amount of data stored in the memtable that resides <strong>on</strong>-heap, including column related overhead and partitions overwritten.</td>
-</tr>
-<tr class="row-odd"><td>MemtableOffHeapSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total amount of data stored in the memtable that resides <strong>off</strong>-heap, including column related overhead and partitions overwritten.</td>
-</tr>
-<tr class="row-even"><td>MemtableLiveDataSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total amount of live data stored in the memtable, excluding any data structure overhead.</td>
-</tr>
-<tr class="row-odd"><td>AllMemtablesOnHeapSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total amount of data stored in the memtables (2i and pending flush memtables included) that resides <strong>on</strong>-heap.</td>
-</tr>
-<tr class="row-even"><td>AllMemtablesOffHeapSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total amount of data stored in the memtables (2i and pending flush memtables included) that resides <strong>off</strong>-heap.</td>
-</tr>
-<tr class="row-odd"><td>AllMemtablesLiveDataSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total amount of live data stored in the memtables (2i and pending flush memtables included) that resides off-heap, excluding any data structure overhead.</td>
-</tr>
-<tr class="row-even"><td>MemtableColumnsCount</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total number of columns present in the memtable.</td>
-</tr>
-<tr class="row-odd"><td>MemtableSwitchCount</td>
-<td>Counter</td>
-<td>Number of times flush has resulted in the memtable being switched out.</td>
-</tr>
-<tr class="row-even"><td>CompressionRatio</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>Current compression ratio for all SSTables.</td>
-</tr>
-<tr class="row-odd"><td>EstimatedPartitionSizeHistogram</td>
-<td>Gauge&lt;long[]&gt;</td>
-<td>Histogram of estimated partition size (in bytes).</td>
-</tr>
-<tr class="row-even"><td>EstimatedPartitionCount</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Approximate number of keys in table.</td>
-</tr>
-<tr class="row-odd"><td>EstimatedColumnCountHistogram</td>
-<td>Gauge&lt;long[]&gt;</td>
-<td>Histogram of estimated number of columns.</td>
-</tr>
-<tr class="row-even"><td>SSTablesPerReadHistogram</td>
-<td>Histogram</td>
-<td>Histogram of the number of sstable data files accessed per read.</td>
-</tr>
-<tr class="row-odd"><td>ReadLatency</td>
-<td>Latency</td>
-<td>Local read latency for this table.</td>
-</tr>
-<tr class="row-even"><td>RangeLatency</td>
-<td>Latency</td>
-<td>Local range scan latency for this table.</td>
-</tr>
-<tr class="row-odd"><td>WriteLatency</td>
-<td>Latency</td>
-<td>Local write latency for this table.</td>
-</tr>
-<tr class="row-even"><td>CoordinatorReadLatency</td>
-<td>Timer</td>
-<td>Coordinator read latency for this table.</td>
-</tr>
-<tr class="row-odd"><td>CoordinatorScanLatency</td>
-<td>Timer</td>
-<td>Coordinator range scan latency for this table.</td>
-</tr>
-<tr class="row-even"><td>PendingFlushes</td>
-<td>Counter</td>
-<td>Estimated number of flush tasks pending for this table.</td>
-</tr>
-<tr class="row-odd"><td>BytesFlushed</td>
-<td>Counter</td>
-<td>Total number of bytes flushed since server [re]start.</td>
-</tr>
-<tr class="row-even"><td>CompactionBytesWritten</td>
-<td>Counter</td>
-<td>Total number of bytes written by compaction since server [re]start.</td>
-</tr>
-<tr class="row-odd"><td>PendingCompactions</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>Estimate of number of pending compactions for this table.</td>
-</tr>
-<tr class="row-even"><td>LiveSSTableCount</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>Number of SSTables on disk for this table.</td>
-</tr>
-<tr class="row-odd"><td>LiveDiskSpaceUsed</td>
-<td>Counter</td>
-<td>Disk space used by SSTables belonging to this table (in bytes).</td>
-</tr>
-<tr class="row-even"><td>TotalDiskSpaceUsed</td>
-<td>Counter</td>
-<td>Total disk space used by SSTables belonging to this table, including obsolete ones waiting to be GC&#8217;d.</td>
-</tr>
-<tr class="row-odd"><td>MinPartitionSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Size of the smallest compacted partition (in bytes).</td>
-</tr>
-<tr class="row-even"><td>MaxPartitionSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Size of the largest compacted partition (in bytes).</td>
-</tr>
-<tr class="row-odd"><td>MeanPartitionSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Size of the average compacted partition (in bytes).</td>
-</tr>
-<tr class="row-even"><td>BloomFilterFalsePositives</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Number of false positives on table&#8217;s bloom filter.</td>
-</tr>
-<tr class="row-odd"><td>BloomFilterFalseRatio</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>False positive ratio of table&#8217;s bloom filter.</td>
-</tr>
-<tr class="row-even"><td>BloomFilterDiskSpaceUsed</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Disk space used by bloom filter (in bytes).</td>
-</tr>
-<tr class="row-odd"><td>BloomFilterOffHeapMemoryUsed</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Off-heap memory used by bloom filter.</td>
-</tr>
-<tr class="row-even"><td>IndexSummaryOffHeapMemoryUsed</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Off-heap memory used by index summary.</td>
-</tr>
-<tr class="row-odd"><td>CompressionMetadataOffHeapMemoryUsed</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Off-heap memory used by compression meta data.</td>
-</tr>
-<tr class="row-even"><td>KeyCacheHitRate</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>Key cache hit rate for this table.</td>
-</tr>
-<tr class="row-odd"><td>TombstoneScannedHistogram</td>
-<td>Histogram</td>
-<td>Histogram of tombstones scanned in queries on this table.</td>
-</tr>
-<tr class="row-even"><td>LiveScannedHistogram</td>
-<td>Histogram</td>
-<td>Histogram of live cells scanned in queries on this table.</td>
-</tr>
-<tr class="row-odd"><td>ColUpdateTimeDeltaHistogram</td>
-<td>Histogram</td>
-<td>Histogram of column update time delta on this table.</td>
-</tr>
-<tr class="row-even"><td>ViewLockAcquireTime</td>
-<td>Timer</td>
-<td>Time taken acquiring a partition lock for materialized view updates on this table.</td>
-</tr>
-<tr class="row-odd"><td>ViewReadTime</td>
-<td>Timer</td>
-<td>Time taken during the local read of a materialized view update.</td>
-</tr>
-<tr class="row-even"><td>TrueSnapshotsSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Disk space used by snapshots of this table including all SSTable components.</td>
-</tr>
-<tr class="row-odd"><td>RowCacheHitOutOfRange</td>
-<td>Counter</td>
-<td>Number of table row cache hits that do not satisfy the query filter, thus went to disk.</td>
-</tr>
-<tr class="row-even"><td>RowCacheHit</td>
-<td>Counter</td>
-<td>Number of table row cache hits.</td>
-</tr>
-<tr class="row-odd"><td>RowCacheMiss</td>
-<td>Counter</td>
-<td>Number of table row cache misses.</td>
-</tr>
-<tr class="row-even"><td>CasPrepare</td>
-<td>Latency</td>
-<td>Latency of paxos prepare round.</td>
-</tr>
-<tr class="row-odd"><td>CasPropose</td>
-<td>Latency</td>
-<td>Latency of paxos propose round.</td>
-</tr>
-<tr class="row-even"><td>CasCommit</td>
-<td>Latency</td>
-<td>Latency of paxos commit round.</td>
-</tr>
-<tr class="row-odd"><td>PercentRepaired</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>Percent of table data that is repaired on disk.</td>
-</tr>
-<tr class="row-even"><td>SpeculativeRetries</td>
-<td>Counter</td>
-<td>Number of times speculative retries were sent for this table.</td>
-</tr>
-<tr class="row-odd"><td>WaitingOnFreeMemtableSpace</td>
-<td>Histogram</td>
-<td>Histogram of time spent waiting for free memtable space, either on- or off-heap.</td>
-</tr>
-<tr class="row-even"><td>DroppedMutations</td>
-<td>Counter</td>
-<td>Number of dropped mutations on this table.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="keyspace-metrics">
-<h2>Keyspace Metrics<a class="headerlink" href="#keyspace-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Each keyspace in Cassandra has metrics responsible for tracking its state and performance.</p>
-<p>These metrics are the same as the <code class="docutils literal"><span class="pre">Table</span> <span class="pre">Metrics</span></code> above, only they are aggregated at the Keyspace level.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.keyspace.&lt;MetricName&gt;.&lt;Keyspace&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Keyspace</span> <span class="pre">scope=&lt;Keyspace&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-</div>
-<div class="section" id="threadpool-metrics">
-<h2>ThreadPool Metrics<a class="headerlink" href="#threadpool-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra splits work of a particular type into its own thread pool.  This provides back-pressure and asynchrony for
-requests on a node.  It&#8217;s important to monitor the state of these thread pools since they can tell you how saturated a
-node is.</p>
-<p>The metric names are all appended with the specific <code class="docutils literal"><span class="pre">ThreadPool</span></code> name.  The thread pools are also categorized under a
-specific type.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.ThreadPools.&lt;MetricName&gt;.&lt;Path&gt;.&lt;ThreadPoolName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=ThreadPools</span> <span class="pre">scope=&lt;ThreadPoolName&gt;</span> <span class="pre">type=&lt;Type&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="15%" />
-<col width="10%" />
-<col width="74%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>ActiveTasks</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>Number of tasks being actively worked on by this pool.</td>
-</tr>
-<tr class="row-odd"><td>PendingTasks</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>Number of queued tasks queued up on this pool.</td>
-</tr>
-<tr class="row-even"><td>CompletedTasks</td>
-<td>Counter</td>
-<td>Number of tasks completed.</td>
-</tr>
-<tr class="row-odd"><td>TotalBlockedTasks</td>
-<td>Counter</td>
-<td>Number of tasks that were blocked due to queue saturation.</td>
-</tr>
-<tr class="row-even"><td>CurrentlyBlockedTask</td>
-<td>Counter</td>
-<td>Number of tasks that are currently blocked due to queue saturation but on retry will become unblocked.</td>
-</tr>
-<tr class="row-odd"><td>MaxPoolSize</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>The maximum number of threads in this pool.</td>
-</tr>
-</tbody>
-</table>
-<p>The following thread pools can be monitored.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="26%" />
-<col width="13%" />
-<col width="61%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Native-Transport-Requests</td>
-<td>transport</td>
-<td>Handles client CQL requests</td>
-</tr>
-<tr class="row-odd"><td>CounterMutationStage</td>
-<td>request</td>
-<td>Responsible for counter writes</td>
-</tr>
-<tr class="row-even"><td>ViewMutationStage</td>
-<td>request</td>
-<td>Responsible for materialized view writes</td>
-</tr>
-<tr class="row-odd"><td>MutationStage</td>
-<td>request</td>
-<td>Responsible for all other writes</td>
-</tr>
-<tr class="row-even"><td>ReadRepairStage</td>
-<td>request</td>
-<td>ReadRepair happens on this thread pool</td>
-</tr>
-<tr class="row-odd"><td>ReadStage</td>
-<td>request</td>
-<td>Local reads run on this thread pool</td>
-</tr>
-<tr class="row-even"><td>RequestResponseStage</td>
-<td>request</td>
-<td>Coordinator requests to the cluster run on this thread pool</td>
-</tr>
-<tr class="row-odd"><td>AntiEntropyStage</td>
-<td>internal</td>
-<td>Builds merkle tree for repairs</td>
-</tr>
-<tr class="row-even"><td>CacheCleanupExecutor</td>
-<td>internal</td>
-<td>Cache maintenance performed on this thread pool</td>
-</tr>
-<tr class="row-odd"><td>CompactionExecutor</td>
-<td>internal</td>
-<td>Compactions are run on these threads</td>
-</tr>
-<tr class="row-even"><td>GossipStage</td>
-<td>internal</td>
-<td>Handles gossip requests</td>
-</tr>
-<tr class="row-odd"><td>HintsDispatcher</td>
-<td>internal</td>
-<td>Performs hinted handoff</td>
-</tr>
-<tr class="row-even"><td>InternalResponseStage</td>
-<td>internal</td>
-<td>Responsible for intra-cluster callbacks</td>
-</tr>
-<tr class="row-odd"><td>MemtableFlushWriter</td>
-<td>internal</td>
-<td>Writes memtables to disk</td>
-</tr>
-<tr class="row-even"><td>MemtablePostFlush</td>
-<td>internal</td>
-<td>Cleans up commit log after memtable is written to disk</td>
-</tr>
-<tr class="row-odd"><td>MemtableReclaimMemory</td>
-<td>internal</td>
-<td>Memtable recycling</td>
-</tr>
-<tr class="row-even"><td>MigrationStage</td>
-<td>internal</td>
-<td>Runs schema migrations</td>
-</tr>
-<tr class="row-odd"><td>MiscStage</td>
-<td>internal</td>
-<td>Misceleneous tasks run here</td>
-</tr>
-<tr class="row-even"><td>PendingRangeCalculator</td>
-<td>internal</td>
-<td>Calculates token range</td>
-</tr>
-<tr class="row-odd"><td>PerDiskMemtableFlushWriter_0</td>
-<td>internal</td>
-<td>Responsible for writing a spec (there is one of these per disk 0-N)</td>
-</tr>
-<tr class="row-even"><td>Sampler</td>
-<td>internal</td>
-<td>Responsible for re-sampling the index summaries of SStables</td>
-</tr>
-<tr class="row-odd"><td>SecondaryIndexManagement</td>
-<td>internal</td>
-<td>Performs updates to secondary indexes</td>
-</tr>
-<tr class="row-even"><td>ValidationExecutor</td>
-<td>internal</td>
-<td>Performs validation compaction or scrubbing</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="client-request-metrics">
-<h2>Client Request Metrics<a class="headerlink" href="#client-request-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Client requests have their own set of metrics that encapsulate the work happening at coordinator level.</p>
-<p>Different types of client requests are broken down by <code class="docutils literal"><span class="pre">RequestType</span></code>.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.ClientRequest.&lt;MetricName&gt;.&lt;RequestType&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=ClientRequest</span> <span class="pre">scope=&lt;RequestType&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">CASRead</p>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to transactional read requests.</p>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
-<colgroup>
-<col width="21%" />
-<col width="14%" />
-<col width="65%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head"><p class="first last">Name</p>
-</th>
-<th class="head"><p class="first last">Type</p>
-</th>
-<th class="head"><p class="first last">Description</p>
-</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><p class="first last">Timeouts</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of timeouts encountered.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Failures</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of transaction failures encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">&nbsp;</p>
-</td>
-<td><p class="first last">Latency</p>
-</td>
-<td><p class="first last">Transaction read latency.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Unavailables</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of unavailable exceptions encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">UnfinishedCommit</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of transactions that were committed on read.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">ConditionNotMet</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of transaction preconditions did not match current values.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">ContentionHistogram</p>
-</td>
-<td><p class="first last">Histogram</p>
-</td>
-<td><p class="first last">How many contended reads were encountered</p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">CASWrite</p>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to transactional write requests.</p>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
-<colgroup>
-<col width="21%" />
-<col width="14%" />
-<col width="65%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head"><p class="first last">Name</p>
-</th>
-<th class="head"><p class="first last">Type</p>
-</th>
-<th class="head"><p class="first last">Description</p>
-</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><p class="first last">Timeouts</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of timeouts encountered.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Failures</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of transaction failures encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">&nbsp;</p>
-</td>
-<td><p class="first last">Latency</p>
-</td>
-<td><p class="first last">Transaction write latency.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">UnfinishedCommit</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of transactions that were committed on write.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">ConditionNotMet</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of transaction preconditions did not match current values.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">ContentionHistogram</p>
-</td>
-<td><p class="first last">Histogram</p>
-</td>
-<td><p class="first last">How many contended writes were encountered</p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">Read</p>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to standard read requests.</p>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
-<colgroup>
-<col width="22%" />
-<col width="15%" />
-<col width="64%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head"><p class="first last">Name</p>
-</th>
-<th class="head"><p class="first last">Type</p>
-</th>
-<th class="head"><p class="first last">Description</p>
-</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><p class="first last">Timeouts</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of timeouts encountered.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Failures</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of read failures encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">&nbsp;</p>
-</td>
-<td><p class="first last">Latency</p>
-</td>
-<td><p class="first last">Read latency.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Unavailables</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of unavailable exceptions encountered.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">RangeSlice</p>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to token range read requests.</p>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
-<colgroup>
-<col width="22%" />
-<col width="15%" />
-<col width="64%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head"><p class="first last">Name</p>
-</th>
-<th class="head"><p class="first last">Type</p>
-</th>
-<th class="head"><p class="first last">Description</p>
-</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><p class="first last">Timeouts</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of timeouts encountered.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Failures</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of range query failures encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">&nbsp;</p>
-</td>
-<td><p class="first last">Latency</p>
-</td>
-<td><p class="first last">Range query latency.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Unavailables</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of unavailable exceptions encountered.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">Write</p>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to regular write requests.</p>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
-<colgroup>
-<col width="22%" />
-<col width="15%" />
-<col width="64%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head"><p class="first last">Name</p>
-</th>
-<th class="head"><p class="first last">Type</p>
-</th>
-<th class="head"><p class="first last">Description</p>
-</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><p class="first last">Timeouts</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of timeouts encountered.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Failures</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of write failures encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">&nbsp;</p>
-</td>
-<td><p class="first last">Latency</p>
-</td>
-<td><p class="first last">Write latency.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Unavailables</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of unavailable exceptions encountered.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">ViewWrite</p>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to materialized view write wrtes.</p>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first last docutils">
-<colgroup>
-<col width="17%" />
-<col width="11%" />
-<col width="72%" />
-</colgroup>
-<tbody valign="top">
-<tr class="row-odd"><td><p class="first last">Timeouts</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of timeouts encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">Failures</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of transaction failures encountered.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">Unavailables</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Number of unavailable exceptions encountered.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">ViewReplicasAttempted</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Total number of attempted view replica writes.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">ViewReplicasSuccess</p>
-</td>
-<td><p class="first last">Counter</p>
-</td>
-<td><p class="first last">Total number of succeded view replica writes.</p>
-</td>
-</tr>
-<tr class="row-even"><td><p class="first last">ViewPendingMutations</p>
-</td>
-<td><p class="first last">Gauge&lt;Long&gt;</p>
-</td>
-<td><p class="first last">ViewReplicasAttempted - ViewReplicasSuccess.</p>
-</td>
-</tr>
-<tr class="row-odd"><td><p class="first last">ViewWriteLatency</p>
-</td>
-<td><p class="first last">Timer</p>
-</td>
-<td><p class="first last">Time between when mutation is applied to base table and when CL.ONE is achieved on view.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="cache-metrics">
-<h2>Cache Metrics<a class="headerlink" href="#cache-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra caches have metrics to track the effectivness of the caches. Though the <code class="docutils literal"><span class="pre">Table</span> <span class="pre">Metrics</span></code> might be more useful.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.Cache.&lt;MetricName&gt;.&lt;CacheName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Cache</span> <span class="pre">scope=&lt;CacheName&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="33%" />
-<col width="18%" />
-<col width="49%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Capacity</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Cache capacity in bytes.</td>
-</tr>
-<tr class="row-odd"><td>Entries</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>Total number of cache entries.</td>
-</tr>
-<tr class="row-even"><td>FifteenMinuteCacheHitRate</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>15m cache hit rate.</td>
-</tr>
-<tr class="row-odd"><td>FiveMinuteCacheHitRate</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>5m cache hit rate.</td>
-</tr>
-<tr class="row-even"><td>OneMinuteCacheHitRate</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>1m cache hit rate.</td>
-</tr>
-<tr class="row-odd"><td>HitRate</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>All time cache hit rate.</td>
-</tr>
-<tr class="row-even"><td>Hits</td>
-<td>Meter</td>
-<td>Total number of cache hits.</td>
-</tr>
-<tr class="row-odd"><td>Misses</td>
-<td>Meter</td>
-<td>Total number of cache misses.</td>
-</tr>
-<tr class="row-even"><td>MissLatency</td>
-<td>Timer</td>
-<td>Latency of misses.</td>
-</tr>
-<tr class="row-odd"><td>Requests</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total number of cache requests.</td>
-</tr>
-<tr class="row-even"><td>Size</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total size of occupied cache, in bytes.</td>
-</tr>
-</tbody>
-</table>
-<p>The following caches are covered:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="38%" />
-<col width="62%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>CounterCache</td>
-<td>Keeps hot counters in memory for performance.</td>
-</tr>
-<tr class="row-odd"><td>ChunkCache</td>
-<td>In process uncompressed page cache.</td>
-</tr>
-<tr class="row-even"><td>KeyCache</td>
-<td>Cache for partition to sstable offsets.</td>
-</tr>
-<tr class="row-odd"><td>RowCache</td>
-<td>Cache for rows kept in memory.</td>
-</tr>
-</tbody>
-</table>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Misses and MissLatency are only defined for the ChunkCache</p>
-</div>
-</div>
-<div class="section" id="cql-metrics">
-<h2>CQL Metrics<a class="headerlink" href="#cql-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to CQL prepared statement caching.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.CQL.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=CQL</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="23%" />
-<col width="13%" />
-<col width="64%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>PreparedStatementsCount</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>Number of cached prepared statements.</td>
-</tr>
-<tr class="row-odd"><td>PreparedStatementsEvicted</td>
-<td>Counter</td>
-<td>Number of prepared statements evicted from the prepared statement cache</td>
-</tr>
-<tr class="row-even"><td>PreparedStatementsExecuted</td>
-<td>Counter</td>
-<td>Number of prepared statements executed.</td>
-</tr>
-<tr class="row-odd"><td>RegularStatementsExecuted</td>
-<td>Counter</td>
-<td>Number of <strong>non</strong> prepared statements executed.</td>
-</tr>
-<tr class="row-even"><td>PreparedStatementsRatio</td>
-<td>Gauge&lt;Double&gt;</td>
-<td>Percentage of statements that are prepared vs unprepared.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="droppedmessage-metrics">
-<h2>DroppedMessage Metrics<a class="headerlink" href="#droppedmessage-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to tracking dropped messages for different types of requests.
-Dropped writes are stored and retried by <code class="docutils literal"><span class="pre">Hinted</span> <span class="pre">Handoff</span></code></p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.DroppedMessages.&lt;MetricName&gt;.&lt;Type&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=DroppedMetrics</span> <span class="pre">scope=&lt;Type&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="36%" />
-<col width="19%" />
-<col width="45%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>CrossNodeDroppedLatency</td>
-<td>Timer</td>
-<td>The dropped latency across nodes.</td>
-</tr>
-<tr class="row-odd"><td>InternalDroppedLatency</td>
-<td>Timer</td>
-<td>The dropped latency within node.</td>
-</tr>
-<tr class="row-even"><td>Dropped</td>
-<td>Meter</td>
-<td>Number of dropped messages.</td>
-</tr>
-</tbody>
-</table>
-<p>The different types of messages tracked are:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="39%" />
-<col width="61%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>BATCH_STORE</td>
-<td>Batchlog write</td>
-</tr>
-<tr class="row-odd"><td>BATCH_REMOVE</td>
-<td>Batchlog cleanup (after succesfully applied)</td>
-</tr>
-<tr class="row-even"><td>COUNTER_MUTATION</td>
-<td>Counter writes</td>
-</tr>
-<tr class="row-odd"><td>HINT</td>
-<td>Hint replay</td>
-</tr>
-<tr class="row-even"><td>MUTATION</td>
-<td>Regular writes</td>
-</tr>
-<tr class="row-odd"><td>READ</td>
-<td>Regular reads</td>
-</tr>
-<tr class="row-even"><td>READ_REPAIR</td>
-<td>Read repair</td>
-</tr>
-<tr class="row-odd"><td>PAGED_SLICE</td>
-<td>Paged read</td>
-</tr>
-<tr class="row-even"><td>RANGE_SLICE</td>
-<td>Token range read</td>
-</tr>
-<tr class="row-odd"><td>REQUEST_RESPONSE</td>
-<td>RPC Callbacks</td>
-</tr>
-<tr class="row-even"><td>_TRACE</td>
-<td>Tracing writes</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="streaming-metrics">
-<h2>Streaming Metrics<a class="headerlink" href="#streaming-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics reported during <code class="docutils literal"><span class="pre">Streaming</span></code> operations, such as repair, bootstrap, rebuild.</p>
-<p>These metrics are specific to a peer endpoint, with the source node being the node you are pulling the metrics from.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.Streaming.&lt;MetricName&gt;.&lt;PeerIP&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Streaming</span> <span class="pre">scope=&lt;PeerIP&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="26%" />
-<col width="14%" />
-<col width="60%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>IncomingBytes</td>
-<td>Counter</td>
-<td>Number of bytes streamed to this node from the peer.</td>
-</tr>
-<tr class="row-odd"><td>OutgoingBytes</td>
-<td>Counter</td>
-<td>Number of bytes streamed to the peer endpoint from this node.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="compaction-metrics">
-<h2>Compaction Metrics<a class="headerlink" href="#compaction-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to <code class="docutils literal"><span class="pre">Compaction</span></code> work.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.Compaction.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Compaction</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="13%" />
-<col width="20%" />
-<col width="68%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>BytesCompacted</td>
-<td>Counter</td>
-<td>Total number of bytes compacted since server [re]start.</td>
-</tr>
-<tr class="row-odd"><td>PendingTasks</td>
-<td>Gauge&lt;Integer&gt;</td>
-<td>Estimated number of compactions remaining to perform.</td>
-</tr>
-<tr class="row-even"><td>CompletedTasks</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Number of completed compactions since server [re]start.</td>
-</tr>
-<tr class="row-odd"><td>TotalCompactionsCompleted</td>
-<td>Meter</td>
-<td>Throughput of completed compactions since server [re]start.</td>
-</tr>
-<tr class="row-even"><td>PendingTasksByTableName</td>
-<td>Gauge&lt;Map&lt;String, Map&lt;String, Integer&gt;&gt;&gt;</td>
-<td>Estimated number of compactions remaining to perform, grouped by keyspace and then table name. This info is also kept in <code class="docutils literal"><span class="pre">Table</span> <span class="pre">Metrics</span></code>.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="commitlog-metrics">
-<h2>CommitLog Metrics<a class="headerlink" href="#commitlog-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to the <code class="docutils literal"><span class="pre">CommitLog</span></code></p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.CommitLog.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=CommitLog</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="17%" />
-<col width="9%" />
-<col width="74%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>CompletedTasks</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total number of commit log messages written since [re]start.</td>
-</tr>
-<tr class="row-odd"><td>PendingTasks</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Number of commit log messages written but yet to be fsync&#8217;d.</td>
-</tr>
-<tr class="row-even"><td>TotalCommitLogSize</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Current size, in bytes, used by all the commit log segments.</td>
-</tr>
-<tr class="row-odd"><td>WaitingOnSegmentAllocation</td>
-<td>Timer</td>
-<td>Time spent waiting for a CommitLogSegment to be allocated - under normal conditions this should be zero.</td>
-</tr>
-<tr class="row-even"><td>WaitingOnCommit</td>
-<td>Timer</td>
-<td>The time spent waiting on CL fsync; for Periodic this is only occurs when the sync is lagging its sync interval.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="storage-metrics">
-<h2>Storage Metrics<a class="headerlink" href="#storage-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to the storage engine.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.Storage.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Storage</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="17%" />
-<col width="9%" />
-<col width="75%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Exceptions</td>
-<td>Counter</td>
-<td>Number of internal exceptions caught. Under normal exceptions this should be zero.</td>
-</tr>
-<tr class="row-odd"><td>Load</td>
-<td>Counter</td>
-<td>Size, in bytes, of the on disk data size this node manages.</td>
-</tr>
-<tr class="row-even"><td>TotalHints</td>
-<td>Counter</td>
-<td>Number of hint messages written to this node since [re]start. Includes one entry for each host to be hinted per hint.</td>
-</tr>
-<tr class="row-odd"><td>TotalHintsInProgress</td>
-<td>Counter</td>
-<td>Number of hints attemping to be sent currently.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="hintedhandoff-metrics">
-<h2>HintedHandoff Metrics<a class="headerlink" href="#hintedhandoff-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to Hinted Handoff.  There are also some metrics related to hints tracked in <code class="docutils literal"><span class="pre">Storage</span> <span class="pre">Metrics</span></code></p>
-<p>These metrics include the peer endpoint <strong>in the metric name</strong></p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.HintedHandOffManager.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=HintedHandOffManager</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="20%" />
-<col width="10%" />
-<col width="69%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Hints_created-&lt;PeerIP&gt;</td>
-<td>Counter</td>
-<td>Number of hints on disk for this peer.</td>
-</tr>
-<tr class="row-odd"><td>Hints_not_stored-&lt;PeerIP&gt;</td>
-<td>Counter</td>
-<td>Number of hints not stored for this peer, due to being down past the configured hint window.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="sstable-index-metrics">
-<h2>SSTable Index Metrics<a class="headerlink" href="#sstable-index-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to the SSTable index metadata.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.Index.&lt;MetricName&gt;.RowIndexEntry</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Index</span> <span class="pre">scope=RowIndexEntry</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="23%" />
-<col width="12%" />
-<col width="65%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>IndexedEntrySize</td>
-<td>Histogram</td>
-<td>Histogram of the on-heap size, in bytes, of the index across all SSTables.</td>
-</tr>
-<tr class="row-odd"><td>IndexInfoCount</td>
-<td>Histogram</td>
-<td>Histogram of the number of on-heap index entries managed across all SSTables.</td>
-</tr>
-<tr class="row-even"><td>IndexInfoGets</td>
-<td>Histogram</td>
-<td>Histogram of the number index seeks performed per SSTable.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="bufferpool-metrics">
-<h2>BufferPool Metrics<a class="headerlink" href="#bufferpool-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specific to the internal recycled buffer pool Cassandra manages.  This pool is meant to keep allocations and GC
-lower by recycling on and off heap buffers.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.BufferPool.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=BufferPool</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="22%" />
-<col width="11%" />
-<col width="67%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Size</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Size, in bytes, of the managed buffer pool</td>
-</tr>
-<tr class="row-odd"><td>Misses</td>
-<td>Meter</td>
-<td>The rate of misses in the pool. The higher this is the more allocations incurred.</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="client-metrics">
-<h2>Client Metrics<a class="headerlink" href="#client-metrics" title="Permalink to this headline">¶</a></h2>
-<p>Metrics specifc to client managment.</p>
-<p>Reported name format:</p>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics.Client.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">org.apache.cassandra.metrics:type=Client</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="26%" />
-<col width="13%" />
-<col width="61%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>connectedNativeClients</td>
-<td>Counter</td>
-<td>Number of clients connected to this nodes native protocol server</td>
-</tr>
-<tr class="row-odd"><td>connectedThriftClients</td>
-<td>Counter</td>
-<td>Number of clients connected to this nodes thrift protocol server</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="jvm-metrics">
-<h2>JVM Metrics<a class="headerlink" href="#jvm-metrics" title="Permalink to this headline">¶</a></h2>
-<p>JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using <a class="reference internal" href="#metric-reporters">Metric Reporters</a>.</p>
-<div class="section" id="bufferpool">
-<h3>BufferPool<a class="headerlink" href="#bufferpool" title="Permalink to this headline">¶</a></h3>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">jvm.buffers.&lt;direct|mapped&gt;.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">java.nio:type=BufferPool</span> <span class="pre">name=&lt;direct|mapped&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="22%" />
-<col width="12%" />
-<col width="66%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Capacity</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Estimated total capacity of the buffers in this pool</td>
-</tr>
-<tr class="row-odd"><td>Count</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Estimated number of buffers in the pool</td>
-</tr>
-<tr class="row-even"><td>Used</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Estimated memory that the Java virtual machine is using for this buffer pool</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="filedescriptorratio">
-<h3>FileDescriptorRatio<a class="headerlink" href="#filedescriptorratio" title="Permalink to this headline">¶</a></h3>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">jvm.fd.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">java.lang:type=OperatingSystem</span> <span class="pre">name=&lt;OpenFileDescriptorCount|MaxFileDescriptorCount&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="33%" />
-<col width="18%" />
-<col width="49%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Usage</td>
-<td>Ratio</td>
-<td>Ratio of used to total file descriptors</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="garbagecollector">
-<h3>GarbageCollector<a class="headerlink" href="#garbagecollector" title="Permalink to this headline">¶</a></h3>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">jvm.gc.&lt;gc_type&gt;.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">java.lang:type=GarbageCollector</span> <span class="pre">name=&lt;gc_type&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="25%" />
-<col width="14%" />
-<col width="61%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Name</th>
-<th class="head">Type</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td>Count</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Total number of collections that have occurred</td>
-</tr>
-<tr class="row-odd"><td>Time</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Approximate accumulated collection elapsed time in milliseconds</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="memory">
-<h3>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h3>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">jvm.memory.&lt;heap/non-heap/total&gt;.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">java.lang:type=Memory</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="23%" />
-<col width="13%" />
-<col width="64%" />
-</colgroup>
-<tbody valign="top">
-<tr class="row-odd"><td>Committed</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Amount of memory in bytes that is committed for the JVM to use</td>
-</tr>
-<tr class="row-even"><td>Init</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
-</tr>
-<tr class="row-odd"><td>Max</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Maximum amount of memory in bytes that can be used for memory management</td>
-</tr>
-<tr class="row-even"><td>Usage</td>
-<td>Ratio</td>
-<td>Ratio of used to maximum memory</td>
-</tr>
-<tr class="row-odd"><td>Used</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Amount of used memory in bytes</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="memorypool">
-<h3>MemoryPool<a class="headerlink" href="#memorypool" title="Permalink to this headline">¶</a></h3>
-<dl class="docutils">
-<dt><strong>Metric Name</strong></dt>
-<dd><code class="docutils literal"><span class="pre">jvm.memory.pools.&lt;memory_pool&gt;.&lt;MetricName&gt;</span></code></dd>
-<dt><strong>JMX MBean</strong></dt>
-<dd><code class="docutils literal"><span class="pre">java.lang:type=MemoryPool</span> <span class="pre">name=&lt;memory_pool&gt;</span></code></dd>
-</dl>
-<table border="1" class="docutils">
-<colgroup>
-<col width="23%" />
-<col width="13%" />
-<col width="64%" />
-</colgroup>
-<tbody valign="top">
-<tr class="row-odd"><td>Committed</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Amount of memory in bytes that is committed for the JVM to use</td>
-</tr>
-<tr class="row-even"><td>Init</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
-</tr>
-<tr class="row-odd"><td>Max</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Maximum amount of memory in bytes that can be used for memory management</td>
-</tr>
-<tr class="row-even"><td>Usage</td>
-<td>Ratio</td>
-<td>Ratio of used to maximum memory</td>
-</tr>
-<tr class="row-odd"><td>Used</td>
-<td>Gauge&lt;Long&gt;</td>
-<td>Amount of used memory in bytes</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-<div class="section" id="jmx">
-<h2>JMX<a class="headerlink" href="#jmx" title="Permalink to this headline">¶</a></h2>
-<p>Any JMX based client can access metrics from cassandra.</p>
-<p>If you wish to access JMX metrics over http it&#8217;s possible to download <a class="reference external" href="http://mx4j.sourceforge.net/">Mx4jTool</a> and
-place <code class="docutils literal"><span class="pre">mx4j-tools.jar</span></code> into the classpath.  On startup you will see in the log:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>HttpAdaptor version 3.0.2 started on port 8081
-</pre></div>
-</div>
-<p>To choose a different port (8081 is the default) or a different listen address (0.0.0.0 is not the default) edit
-<code class="docutils literal"><span class="pre">conf/cassandra-env.sh</span></code> and uncomment:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>#MX4J_ADDRESS=&quot;-Dmx4jaddress=0.0.0.0&quot;
-
-#MX4J_PORT=&quot;-Dmx4jport=8081&quot;
-</pre></div>
-</div>
-</div>
-<div class="section" id="metric-reporters">
-<h2>Metric Reporters<a class="headerlink" href="#metric-reporters" title="Permalink to this headline">¶</a></h2>
-<p>As mentioned at the top of this section on monitoring the Cassandra metrics can be exported to a number of monitoring
-system a number of <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting">built in</a> and <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/manual/third-party/">third party</a> reporter plugins.</p>
-<p>The configuration of these plugins is managed by the <a class="reference external" href="https://github.com/addthis/metrics-reporter-config">metrics reporter config project</a>. There is a sample configuration file located at
-<code class="docutils literal"><span class="pre">conf/metrics-reporter-config-sample.yaml</span></code>.</p>
-<p>Once configured, you simply start cassandra with the flag
-<code class="docutils literal"><span class="pre">-Dcassandra.metricsReporterConfigFile=metrics-reporter-config.yaml</span></code>. The specified .yaml file plus any 3rd party
-reporter jars must all be in Cassandra&#8217;s classpath.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="security.html" class="btn btn-default pull-right " role="button" title="Security" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="bulk_loading.html" class="btn btn-default" role="button" title="Bulk Loading" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/read_repair.html b/src/doc/3.10/operating/read_repair.html
deleted file mode 100644
index 37e3252..0000000
--- a/src/doc/3.10/operating/read_repair.html
+++ /dev/null
@@ -1,125 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Read repair"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Hints" href="hints.html"/>
-      <link rel="prev" title="Repair" href="repair.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="read-repair">
-<h1>Read repair<a class="headerlink" href="#read-repair" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="hints.html" class="btn btn-default pull-right " role="button" title="Hints" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="repair.html" class="btn btn-default" role="button" title="Repair" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/repair.html b/src/doc/3.10/operating/repair.html
deleted file mode 100644
index 013f485..0000000
--- a/src/doc/3.10/operating/repair.html
+++ /dev/null
@@ -1,125 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Repair"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Read repair" href="read_repair.html"/>
-      <link rel="prev" title="Adding, replacing, moving and removing nodes" href="topo_changes.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="repair">
-<h1>Repair<a class="headerlink" href="#repair" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">todo</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="read_repair.html" class="btn btn-default pull-right " role="button" title="Read repair" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="topo_changes.html" class="btn btn-default" role="button" title="Adding, replacing, moving and removing nodes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/security.html b/src/doc/3.10/operating/security.html
deleted file mode 100644
index 8bb7880..0000000
--- a/src/doc/3.10/operating/security.html
+++ /dev/null
@@ -1,448 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Security"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Hardware Choices" href="hardware.html"/>
-      <link rel="prev" title="Monitoring" href="metrics.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Security</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#tls-ssl-encryption">TLS/SSL Encryption</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#roles">Roles</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#authentication">Authentication</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#authorization">Authorization</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#caching">Caching</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#jmx-access">JMX access</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="security">
-<h1>Security<a class="headerlink" href="#security" title="Permalink to this headline">¶</a></h1>
-<p>There are three main components to the security features provided by Cassandra:</p>
-<ul class="simple">
-<li>TLS/SSL encryption for client and inter-node communication</li>
-<li>Client authentication</li>
-<li>Authorization</li>
-</ul>
-<div class="section" id="tls-ssl-encryption">
-<h2>TLS/SSL Encryption<a class="headerlink" href="#tls-ssl-encryption" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra provides secure communication between a client machine and a database cluster and between nodes within a
-cluster. Enabling encryption ensures that data in flight is not compromised and is transferred securely. The options for
-client-to-node and node-to-node encryption are managed separately and may be configured independently.</p>
-<p>In both cases, the JVM defaults for supported protocols and cipher suites are used when encryption is enabled. These can
-be overidden using the settings in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code>, but this is not recommended unless there are policies in place
-which dictate certain settings or a need to disable vulnerable ciphers or protocols in cases where the JVM cannot be
-updated.</p>
-<p>FIPS compliant settings can be configured at the JVM level and should not involve changing encryption settings in
-cassandra.yaml. See <a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html">the java document on FIPS</a>
-for more details.</p>
-<p>For information on generating the keystore and truststore files used in SSL communications, see the
-<a class="reference external" href="http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">java documentation on creating keystores</a></p>
-<div class="section" id="inter-node-encryption">
-<h3>Inter-node Encryption<a class="headerlink" href="#inter-node-encryption" title="Permalink to this headline">¶</a></h3>
-<p>The settings for managing inter-node encryption are found in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> in the <code class="docutils literal"><span class="pre">server_encryption_options</span></code>
-section. To enable inter-node encryption, change the <code class="docutils literal"><span class="pre">internode_encryption</span></code> setting from its default value of <code class="docutils literal"><span class="pre">none</span></code>
-to one value from: <code class="docutils literal"><span class="pre">rack</span></code>, <code class="docutils literal"><span class="pre">dc</span></code> or <code class="docutils literal"><span class="pre">all</span></code>.</p>
-</div>
-<div class="section" id="client-to-node-encryption">
-<h3>Client to Node Encryption<a class="headerlink" href="#client-to-node-encryption" title="Permalink to this headline">¶</a></h3>
-<p>The settings for managing client to node encryption are found in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> in the <code class="docutils literal"><span class="pre">client_encryption_options</span></code>
-section. There are two primary toggles here for enabling encryption, <code class="docutils literal"><span class="pre">enabled</span></code> and <code class="docutils literal"><span class="pre">optional</span></code>.</p>
-<ul class="simple">
-<li>If neither is set to <code class="docutils literal"><span class="pre">true</span></code>, client connections are entirely unencrypted.</li>
-<li>If <code class="docutils literal"><span class="pre">enabled</span></code> is set to <code class="docutils literal"><span class="pre">true</span></code> and <code class="docutils literal"><span class="pre">optional</span></code> is set to <code class="docutils literal"><span class="pre">false</span></code>, all client connections must be secured.</li>
-<li>If both options are set to <code class="docutils literal"><span class="pre">true</span></code>, both encrypted and unencrypted connections are supported using the same port.
-Client connections using encryption with this configuration will be automatically detected and handled by the server.</li>
-</ul>
-<p>As an alternative to the <code class="docutils literal"><span class="pre">optional</span></code> setting, separate ports can also be configured for secure and unsecure connections
-where operational requirements demand it. To do so, set <code class="docutils literal"><span class="pre">optional</span></code> to false and use the <code class="docutils literal"><span class="pre">native_transport_port_ssl</span></code>
-setting in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> to specify the port to be used for secure client communication.</p>
-</div>
-</div>
-<div class="section" id="roles">
-<span id="operation-roles"></span><h2>Roles<a class="headerlink" href="#roles" title="Permalink to this headline">¶</a></h2>
-<p>Cassandra uses database roles, which may represent either a single user or a group of users, in both authentication and
-permissions management. Role management is an extension point in Cassandra and may be configured using the
-<code class="docutils literal"><span class="pre">role_manager</span></code> setting in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code>. The default setting uses <code class="docutils literal"><span class="pre">CassandraRoleManager</span></code>, an implementation
-which stores role information in the tables of the <code class="docutils literal"><span class="pre">system_auth</span></code> keyspace.</p>
-<p>See also the <a class="reference internal" href="../cql/security.html#cql-roles"><span class="std std-ref">CQL documentation on roles</span></a>.</p>
-</div>
-<div class="section" id="authentication">
-<h2>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h2>
-<p>Authentication is pluggable in Cassandra and is configured using the <code class="docutils literal"><span class="pre">authenticator</span></code> setting in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code>.
-Cassandra ships with two options included in the default distribution.</p>
-<p>By default, Cassandra is configured with <code class="docutils literal"><span class="pre">AllowAllAuthenticator</span></code> which performs no authentication checks and therefore
-requires no credentials. It is used to disable authentication completely. Note that authentication is a necessary
-condition of Cassandra&#8217;s permissions subsystem, so if authentication is disabled, effectively so are permissions.</p>
-<p>The default distribution also includes <code class="docutils literal"><span class="pre">PasswordAuthenticator</span></code>, which stores encrypted credentials in a system table.
-This can be used to enable simple username/password authentication.</p>
-<div class="section" id="enabling-password-authentication">
-<span id="password-authentication"></span><h3>Enabling Password Authentication<a class="headerlink" href="#enabling-password-authentication" title="Permalink to this headline">¶</a></h3>
-<p>Before enabling client authentication on the cluster, client applications should be pre-configured with their intended
-credentials. When a connection is initiated, the server will only ask for credentials once authentication is
-enabled, so setting up the client side config in advance is safe. In contrast, as soon as a server has authentication
-enabled, any connection attempt without proper credentials will be rejected which may cause availability problems for
-client applications. Once clients are setup and ready for authentication to be enabled, follow this procedure to enable
-it on the cluster.</p>
-<p>Pick a single node in the cluster on which to perform the initial configuration. Ideally, no clients should connect
-to this node during the setup process, so you may want to remove it from client config, block it at the network level
-or possibly add a new temporary node to the cluster for this purpose. On that node, perform the following steps:</p>
-<ol class="arabic simple">
-<li>Open a <code class="docutils literal"><span class="pre">cqlsh</span></code> session and change the replication factor of the <code class="docutils literal"><span class="pre">system_auth</span></code> keyspace. By default, this keyspace
-uses <code class="docutils literal"><span class="pre">SimpleReplicationStrategy</span></code> and a <code class="docutils literal"><span class="pre">replication_factor</span></code> of 1. It is recommended to change this for any
-non-trivial deployment to ensure that should nodes become unavailable, login is still possible. Best practice is to
-configure a replication factor of 3 to 5 per-DC.</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span>ALTER KEYSPACE system_auth WITH replication = {&#39;class&#39;: &#39;NetworkTopologyStrategy&#39;, &#39;DC1&#39;: 3, &#39;DC2&#39;: 3};
-</pre></div>
-</div>
-<ol class="arabic simple" start="2">
-<li>Edit <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> to change the <code class="docutils literal"><span class="pre">authenticator</span></code> option like so:</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span>authenticator: PasswordAuthenticator
-</pre></div>
-</div>
-<ol class="arabic simple" start="3">
-<li>Restart the node.</li>
-<li>Open a new <code class="docutils literal"><span class="pre">cqlsh</span></code> session using the credentials of the default superuser:</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span>cqlsh -u cassandra -p cassandra
-</pre></div>
-</div>
-<ol class="arabic simple" start="5">
-<li>During login, the credentials for the default superuser are read with a consistency level of <code class="docutils literal"><span class="pre">QUORUM</span></code>, whereas
-those for all other users (including superusers) are read at <code class="docutils literal"><span class="pre">LOCAL_ONE</span></code>. In the interests of performance and
-availability, as well as security, operators should create another superuser and disable the default one. This step
-is optional, but highly recommended. While logged in as the default superuser, create another superuser role which
-can be used to bootstrap further configuration.</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span># create a new superuser
-CREATE ROLE dba WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = &#39;super&#39;;
-</pre></div>
-</div>
-<ol class="arabic simple" start="6">
-<li>Start a new cqlsh session, this time logging in as the new_superuser and disable the default superuser.</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span>ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false;
-</pre></div>
-</div>
-<ol class="arabic simple" start="7">
-<li>Finally, set up the roles and credentials for your application users with <a class="reference internal" href="../cql/security.html#create-role-statement"><span class="std std-ref">CREATE ROLE</span></a>
-statements.</li>
-</ol>
-<p>At the end of these steps, the one node is configured to use password authentication. To roll that out across the
-cluster, repeat steps 2 and 3 on each node in the cluster. Once all nodes have been restarted, authentication will be
-fully enabled throughout the cluster.</p>
-<p>Note that using <code class="docutils literal"><span class="pre">PasswordAuthenticator</span></code> also requires the use of <a class="reference internal" href="#operation-roles"><span class="std std-ref">CassandraRoleManager</span></a>.</p>
-<p>See also: <a class="reference internal" href="../cql/security.html#setting-credentials-for-internal-authentication"><span class="std std-ref">Setting credentials for internal authentication</span></a>, <a class="reference internal" href="../cql/security.html#create-role-statement"><span class="std std-ref">CREATE ROLE</span></a>,
-<a class="reference internal" href="../cql/security.html#alter-role-statement"><span class="std std-ref">ALTER ROLE</span></a>, <a class="reference internal" href="../cql/ddl.html#alter-keyspace-statement"><span class="std std-ref">ALTER KEYSPACE</span></a> and <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>,</p>
-</div>
-</div>
-<div class="section" id="authorization">
-<h2>Authorization<a class="headerlink" href="#authorization" title="Permalink to this headline">¶</a></h2>
-<p>Authorization is pluggable in Cassandra and is configured using the <code class="docutils literal"><span class="pre">authorizer</span></code> setting in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code>.
-Cassandra ships with two options included in the default distribution.</p>
-<p>By default, Cassandra is configured with <code class="docutils literal"><span class="pre">AllowAllAuthorizer</span></code> which performs no checking and so effectively grants all
-permissions to all roles. This must be used if <code class="docutils literal"><span class="pre">AllowAllAuthenticator</span></code> is the configured authenticator.</p>
-<p>The default distribution also includes <code class="docutils literal"><span class="pre">CassandraAuthorizer</span></code>, which does implement full permissions management
-functionality and stores its data in Cassandra system tables.</p>
-<div class="section" id="enabling-internal-authorization">
-<h3>Enabling Internal Authorization<a class="headerlink" href="#enabling-internal-authorization" title="Permalink to this headline">¶</a></h3>
-<p>Permissions are modelled as a whitelist, with the default assumption that a given role has no access to any database
-resources. The implication of this is that once authorization is enabled on a node, all requests will be rejected until
-the required permissions have been granted. For this reason, it is strongly recommended to perform the initial setup on
-a node which is not processing client requests.</p>
-<p>The following assumes that authentication has already been enabled via the process outlined in
-<a class="reference internal" href="#password-authentication"><span class="std std-ref">Enabling Password Authentication</span></a>. Perform these steps to enable internal authorization across the cluster:</p>
-<ol class="arabic simple">
-<li>On the selected node, edit <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> to change the <code class="docutils literal"><span class="pre">authorizer</span></code> option like so:</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span>authorizer: CassandraAuthorizer
-</pre></div>
-</div>
-<ol class="arabic simple" start="2">
-<li>Restart the node.</li>
-<li>Open a new <code class="docutils literal"><span class="pre">cqlsh</span></code> session using the credentials of a role with superuser credentials:</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span>cqlsh -u dba -p super
-</pre></div>
-</div>
-<ol class="arabic simple" start="4">
-<li>Configure the appropriate access privileges for your clients using <a class="reference external" href="cql.html#grant-permission">GRANT PERMISSION</a>
-statements. On the other nodes, until configuration is updated and the node restarted, this will have no effect so
-disruption to clients is avoided.</li>
-</ol>
-<div class="highlight-none"><div class="highlight"><pre><span></span>GRANT SELECT ON ks.t1 TO db_user;
-</pre></div>
-</div>
-<ol class="arabic simple" start="5">
-<li>Once all the necessary permissions have been granted, repeat steps 1 and 2 for each node in turn. As each node
-restarts and clients reconnect, the enforcement of the granted permissions will begin.</li>
-</ol>
-<p>See also: <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>, <cite>GRANT ALL &lt;grant-all&gt;</cite> and <a class="reference internal" href="../cql/security.html#revoke-permission-statement"><span class="std std-ref">REVOKE PERMISSION</span></a></p>
-</div>
-</div>
-<div class="section" id="caching">
-<h2>Caching<a class="headerlink" href="#caching" title="Permalink to this headline">¶</a></h2>
-<p>Enabling authentication and authorization places additional load on the cluster by frequently reading from the
-<code class="docutils literal"><span class="pre">system_auth</span></code> tables. Furthermore, these reads are in the critical paths of many client operations, and so has the
-potential to severely impact quality of service. To mitigate this, auth data such as credentials, permissions and role
-details are cached for a configurable period. The caching can be configured (and even disabled) from <code class="docutils literal"><span class="pre">cassandra.yaml</span></code>
-or using a JMX client. The JMX interface also supports invalidation of the various caches, but any changes made via JMX
-are not persistent and will be re-read from <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> when the node is restarted.</p>
-<p>Each cache has 3 options which can be set:</p>
-<dl class="docutils">
-<dt>Validity Period</dt>
-<dd>Controls the expiration of cache entries. After this period, entries are invalidated and removed from the cache.</dd>
-<dt>Refresh Rate</dt>
-<dd>Controls the rate at which background reads are performed to pick up any changes to the underlying data. While these
-async refreshes are performed, caches will continue to serve (possibly) stale data. Typically, this will be set to a
-shorter time than the validity period.</dd>
-<dt>Max Entries</dt>
-<dd>Controls the upper bound on cache size.</dd>
-</dl>
-<p>The naming for these options in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> follows the convention:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">&lt;type&gt;_validity_in_ms</span></code></li>
-<li><code class="docutils literal"><span class="pre">&lt;type&gt;_update_interval_in_ms</span></code></li>
-<li><code class="docutils literal"><span class="pre">&lt;type&gt;_cache_max_entries</span></code></li>
-</ul>
-<p>Where <code class="docutils literal"><span class="pre">&lt;type&gt;</span></code> is one of <code class="docutils literal"><span class="pre">credentials</span></code>, <code class="docutils literal"><span class="pre">permissions</span></code>, or <code class="docutils literal"><span class="pre">roles</span></code>.</p>
-<p>As mentioned, these are also exposed via JMX in the mbeans under the <code class="docutils literal"><span class="pre">org.apache.cassandra.auth</span></code> domain.</p>
-</div>
-<div class="section" id="jmx-access">
-<h2>JMX access<a class="headerlink" href="#jmx-access" title="Permalink to this headline">¶</a></h2>
-<p>Access control for JMX clients is configured separately to that for CQL. For both authentication and authorization, two
-providers are available; the first based on standard JMX security and the second which integrates more closely with
-Cassandra&#8217;s own auth subsystem.</p>
-<p>The default settings for Cassandra make JMX accessible only from localhost. To enable remote JMX connections, edit
-<code class="docutils literal"><span class="pre">cassandra-env.sh</span></code> (or <code class="docutils literal"><span class="pre">cassandra-env.ps1</span></code> on Windows) to change the <code class="docutils literal"><span class="pre">LOCAL_JMX</span></code> setting to <code class="docutils literal"><span class="pre">yes</span></code>. Under the
-standard configuration, when remote JMX connections are enabled, <a class="reference internal" href="#standard-jmx-auth"><span class="std std-ref">standard JMX authentication</span></a>
-is also switched on.</p>
-<p>Note that by default, local-only connections are not subject to authentication, but this can be enabled.</p>
-<p>If enabling remote connections, it is recommended to also use <a class="reference internal" href="#jmx-with-ssl"><span class="std std-ref">SSL</span></a> connections.</p>
-<p>Finally, after enabling auth and/or SSL, ensure that tools which use JMX, such as <a class="reference internal" href="../tools/nodetool.html#nodetool"><span class="std std-ref">nodetool</span></a>, are
-correctly configured and working as expected.</p>
-<div class="section" id="standard-jmx-auth">
-<span id="id1"></span><h3>Standard JMX Auth<a class="headerlink" href="#standard-jmx-auth" title="Permalink to this headline">¶</a></h3>
-<p>Users permitted to connect to the JMX server are specified in a simple text file. The location of this file is set in
-<code class="docutils literal"><span class="pre">cassandra-env.sh</span></code> by the line:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password&quot;
-</pre></div>
-</div>
-<p>Edit the password file to add username/password pairs:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>jmx_user jmx_password
-</pre></div>
-</div>
-<p>Secure the credentials file so that only the user running the Cassandra process can read it :</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>$ chown cassandra:cassandra /etc/cassandra/jmxremote.password
-$ chmod 400 /etc/cassandra/jmxremote.password
-</pre></div>
-</div>
-<p>Optionally, enable access control to limit the scope of what defined users can do via JMX. Note that this is a fairly
-blunt instrument in this context as most operational tools in Cassandra require full read/write access. To configure a
-simple access file, uncomment this line in <code class="docutils literal"><span class="pre">cassandra-env.sh</span></code>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access&quot;
-</pre></div>
-</div>
-<p>Then edit the access file to grant your JMX user readwrite permission:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>jmx_user readwrite
-</pre></div>
-</div>
-<p>Cassandra must be restarted to pick up the new settings.</p>
-<p>See also : <a class="reference external" href="http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdenv">Using File-Based Password Authentication In JMX</a></p>
-</div>
-<div class="section" id="cassandra-integrated-auth">
-<h3>Cassandra Integrated Auth<a class="headerlink" href="#cassandra-integrated-auth" title="Permalink to this headline">¶</a></h3>
-<p>An alternative to the out-of-the-box JMX auth is to useeCassandra&#8217;s own authentication and/or authorization providers
-for JMX clients. This is potentially more flexible and secure but it come with one major caveat. Namely that it is not
-available until <cite>after</cite> a node has joined the ring, because the auth subsystem is not fully configured until that point
-However, it is often critical for monitoring purposes to have JMX access particularly during bootstrap. So it is
-recommended, where possible, to use local only JMX auth during bootstrap and then, if remote connectivity is required,
-to switch to integrated auth once the node has joined the ring and initial setup is complete.</p>
-<p>With this option, the same database roles used for CQL authentication can be used to control access to JMX, so updates
-can be managed centrally using just <code class="docutils literal"><span class="pre">cqlsh</span></code>. Furthermore, fine grained control over exactly which operations are
-permitted on particular MBeans can be acheived via <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>.</p>
-<p>To enable integrated authentication, edit <code class="docutils literal"><span class="pre">cassandra-env.sh</span></code> to uncomment these lines:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin&quot;
-#JVM_OPTS=&quot;$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config&quot;
-</pre></div>
-</div>
-<p>And disable the JMX standard auth by commenting this line:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password&quot;
-</pre></div>
-</div>
-<p>To enable integrated authorization, uncomment this line:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy&quot;
-</pre></div>
-</div>
-<p>Check standard access control is off by ensuring this line is commented out:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access&quot;
-</pre></div>
-</div>
-<p>With integrated authentication and authorization enabled, operators can define specific roles and grant them access to
-the particular JMX resources that they need. For example, a role with the necessary permissions to use tools such as
-jconsole or jmc in read-only mode would be defined as:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>CREATE ROLE jmx WITH LOGIN = false;
-GRANT SELECT ON ALL MBEANS TO jmx;
-GRANT DESCRIBE ON ALL MBEANS TO jmx;
-GRANT EXECUTE ON MBEAN &#39;java.lang:type=Threading&#39; TO jmx;
-GRANT EXECUTE ON MBEAN &#39;com.sun.management:type=HotSpotDiagnostic&#39; TO jmx;
-
-# Grant the jmx role to one with login permissions so that it can access the JMX tooling
-CREATE ROLE ks_user WITH PASSWORD = &#39;password&#39; AND LOGIN = true AND SUPERUSER = false;
-GRANT jmx TO ks_user;
-</pre></div>
-</div>
-<p>Fine grained access control to individual MBeans is also supported:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=t1&#39; TO ks_user;
-GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=*&#39; TO ks_owner;
-</pre></div>
-</div>
-<p>This permits the <code class="docutils literal"><span class="pre">ks_user</span></code> role to invoke methods on the MBean representing a single table in <code class="docutils literal"><span class="pre">test_keyspace</span></code>, while
-granting the same permission for all table level MBeans in that keyspace to the <code class="docutils literal"><span class="pre">ks_owner</span></code> role.</p>
-<p>Adding/removing roles and granting/revoking of permissions is handled dynamically once the initial setup is complete, so
-no further restarts are required if permissions are altered.</p>
-<p>See also: <a class="reference internal" href="../cql/security.html#cql-permissions"><span class="std std-ref">Permissions</span></a>.</p>
-</div>
-<div class="section" id="jmx-with-ssl">
-<span id="id2"></span><h3>JMX With SSL<a class="headerlink" href="#jmx-with-ssl" title="Permalink to this headline">¶</a></h3>
-<p>JMX SSL configuration is controlled by a number of system properties, some of which are optional. To turn on SSL, edit
-the relevant lines in <code class="docutils literal"><span class="pre">cassandra-env.sh</span></code> (or <code class="docutils literal"><span class="pre">cassandra-env.ps1</span></code> on Windows) to uncomment and set the values of these
-properties as required:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">com.sun.management.jmxremote.ssl</span></code></dt>
-<dd>set to true to enable SSL</dd>
-<dt><code class="docutils literal"><span class="pre">com.sun.management.jmxremote.ssl.need.client.auth</span></code></dt>
-<dd>set to true to enable validation of client certificates</dd>
-<dt><code class="docutils literal"><span class="pre">com.sun.management.jmxremote.registry.ssl</span></code></dt>
-<dd>enables SSL sockets for the RMI registry from which clients obtain the JMX connector stub</dd>
-<dt><code class="docutils literal"><span class="pre">com.sun.management.jmxremote.ssl.enabled.protocols</span></code></dt>
-<dd>by default, the protocols supported by the JVM will be used, override with a comma-separated list. Note that this is
-not usually necessary and using the defaults is the preferred option.</dd>
-<dt><code class="docutils literal"><span class="pre">com.sun.management.jmxremote.ssl.enabled.cipher.suites</span></code></dt>
-<dd>by default, the cipher suites supported by the JVM will be used, override with a comma-separated list. Note that
-this is not usually necessary and using the defaults is the preferred option.</dd>
-<dt><code class="docutils literal"><span class="pre">javax.net.ssl.keyStore</span></code></dt>
-<dd>set the path on the local filesystem of the keystore containing server private keys and public certificates</dd>
-<dt><code class="docutils literal"><span class="pre">javax.net.ssl.keyStorePassword</span></code></dt>
-<dd>set the password of the keystore file</dd>
-<dt><code class="docutils literal"><span class="pre">javax.net.ssl.trustStore</span></code></dt>
-<dd>if validation of client certificates is required, use this property to specify the path of the truststore containing
-the public certificates of trusted clients</dd>
-<dt><code class="docutils literal"><span class="pre">javax.net.ssl.trustStorePassword</span></code></dt>
-<dd>set the password of the truststore file</dd>
-</dl>
-<p>See also: <a class="reference external" href="http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdemv">Oracle Java7 Docs</a>,
-<a class="reference external" href="https://www.lullabot.com/articles/monitor-java-with-jmx">Monitor Java with JMX</a></p>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="hardware.html" class="btn btn-default pull-right " role="button" title="Hardware Choices" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="metrics.html" class="btn btn-default" role="button" title="Monitoring" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/snitch.html b/src/doc/3.10/operating/snitch.html
deleted file mode 100644
index b9bfef4..0000000
--- a/src/doc/3.10/operating/snitch.html
+++ /dev/null
@@ -1,178 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Snitch"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Adding, replacing, moving and removing nodes" href="topo_changes.html"/>
-      <link rel="prev" title="Operating Cassandra" href="index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Snitch</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitching">Dynamic snitching</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#snitch-classes">Snitch classes</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="snitch">
-<h1>Snitch<a class="headerlink" href="#snitch" title="Permalink to this headline">¶</a></h1>
-<p>In cassandra, the snitch has two functions:</p>
-<ul class="simple">
-<li>it teaches Cassandra enough about your network topology to route requests efficiently.</li>
-<li>it allows Cassandra to spread replicas around your cluster to avoid correlated failures. It does this by grouping
-machines into &#8220;datacenters&#8221; and &#8220;racks.&#8221;  Cassandra will do its best not to have more than one replica on the same
-&#8220;rack&#8221; (which may not actually be a physical location).</li>
-</ul>
-<div class="section" id="dynamic-snitching">
-<h2>Dynamic snitching<a class="headerlink" href="#dynamic-snitching" title="Permalink to this headline">¶</a></h2>
-<p>The dynamic snitch monitor read latencies to avoid reading from hosts that have slowed down. The dynamic snitch is
-configured with the following properties on <code class="docutils literal"><span class="pre">cassandra.yaml</span></code>:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">dynamic_snitch</span></code>: whether the dynamic snitch should be enabled or disabled.</li>
-<li><code class="docutils literal"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code>: controls how often to perform the more expensive part of host score
-calculation.</li>
-<li><code class="docutils literal"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code>: if set greater than zero and read_repair_chance is &lt; 1.0, this will allow
-&#8216;pinning&#8217; of replicas to hosts in order to increase cache capacity.</li>
-<li><code class="docutils literal"><span class="pre">dynamic_snitch_badness_threshold:</span></code>: The badness threshold will control how much worse the pinned host has to be
-before the dynamic snitch will prefer other replicas over it.  This is expressed as a double which represents a
-percentage.  Thus, a value of 0.2 means Cassandra would continue to prefer the static snitch values until the pinned
-host was 20% worse than the fastest.</li>
-</ul>
-</div>
-<div class="section" id="snitch-classes">
-<h2>Snitch classes<a class="headerlink" href="#snitch-classes" title="Permalink to this headline">¶</a></h2>
-<p>The <code class="docutils literal"><span class="pre">endpoint_snitch</span></code> parameter in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> should be set to the class the class that implements
-<code class="docutils literal"><span class="pre">IEndPointSnitch</span></code> which will be wrapped by the dynamic snitch and decide if two endpoints are in the same data center
-or on the same rack. Out of the box, Cassandra provides the snitch implementations:</p>
-<dl class="docutils">
-<dt>GossipingPropertyFileSnitch</dt>
-<dd>This should be your go-to snitch for production use. The rack and datacenter for the local node are defined in
-cassandra-rackdc.properties and propagated to other nodes via gossip. If <code class="docutils literal"><span class="pre">cassandra-topology.properties</span></code> exists,
-it is used as a fallback, allowing migration from the PropertyFileSnitch.</dd>
-<dt>SimpleSnitch</dt>
-<dd>Treats Strategy order as proximity. This can improve cache locality when disabling read repair. Only appropriate for
-single-datacenter deployments.</dd>
-<dt>PropertyFileSnitch</dt>
-<dd>Proximity is determined by rack and data center, which are explicitly configured in
-<code class="docutils literal"><span class="pre">cassandra-topology.properties</span></code>.</dd>
-<dt>Ec2Snitch</dt>
-<dd>Appropriate for EC2 deployments in a single Region. Loads Region and Availability Zone information from the EC2 API.
-The Region is treated as the datacenter, and the Availability Zone as the rack. Only private IPs are used, so this
-will not work across multiple regions.</dd>
-<dt>Ec2MultiRegionSnitch</dt>
-<dd>Uses public IPs as broadcast_address to allow cross-region connectivity (thus, you should set seed addresses to the
-public IP as well). You will need to open the <code class="docutils literal"><span class="pre">storage_port</span></code> or <code class="docutils literal"><span class="pre">ssl_storage_port</span></code> on the public IP firewall
-(For intra-Region traffic, Cassandra will switch to the private IP after establishing a connection).</dd>
-<dt>RackInferringSnitch</dt>
-<dd>Proximity is determined by rack and data center, which are assumed to correspond to the 3rd and 2nd octet of each
-node&#8217;s IP address, respectively.  Unless this happens to match your deployment conventions, this is best used as an
-example of writing a custom Snitch class and is provided in that spirit.</dd>
-</dl>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="topo_changes.html" class="btn btn-default pull-right " role="button" title="Adding, replacing, moving and removing nodes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="index.html" class="btn btn-default" role="button" title="Operating Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/operating/topo_changes.html b/src/doc/3.10/operating/topo_changes.html
deleted file mode 100644
index 66c3417..0000000
--- a/src/doc/3.10/operating/topo_changes.html
+++ /dev/null
@@ -1,216 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Operating Cassandra"
-
-doc-title: "Adding, replacing, moving and removing nodes"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Operating Cassandra" href="index.html"/>
-      <link rel="next" title="Repair" href="repair.html"/>
-      <link rel="prev" title="Snitch" href="snitch.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Adding, replacing, moving and removing nodes</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#bootstrap">Bootstrap</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#removing-nodes">Removing nodes</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#moving-nodes">Moving nodes</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#replacing-a-dead-node">Replacing a dead node</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#monitoring-progress">Monitoring progress</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cleanup-data-after-range-movements">Cleanup data after range movements</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
-<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
-<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
-<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
-<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="adding-replacing-moving-and-removing-nodes">
-<span id="topology-changes"></span><h1>Adding, replacing, moving and removing nodes<a class="headerlink" href="#adding-replacing-moving-and-removing-nodes" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="bootstrap">
-<h2>Bootstrap<a class="headerlink" href="#bootstrap" title="Permalink to this headline">¶</a></h2>
-<p>Adding new nodes is called &#8220;bootstrapping&#8221;. The <code class="docutils literal"><span class="pre">num_tokens</span></code> parameter will define the amount of virtual nodes
-(tokens) the joining node will be assigned during bootstrap. The tokens define the sections of the ring (token ranges)
-the node will become responsible for.</p>
-<div class="section" id="token-allocation">
-<h3>Token allocation<a class="headerlink" href="#token-allocation" title="Permalink to this headline">¶</a></h3>
-<p>With the default token allocation algorithm the new node will pick <code class="docutils literal"><span class="pre">num_tokens</span></code> random tokens to become responsible
-for. Since tokens are distributed randomly, load distribution improves with a higher amount of virtual nodes, but it
-also increases token management overhead. The default of 256 virtual nodes should provide a reasonable load balance with
-acceptable overhead.</p>
-<p>On 3.0+ a new token allocation algorithm was introduced to allocate tokens based on the load of existing virtual nodes
-for a given keyspace, and thus yield an improved load distribution with a lower number of tokens. To use this approach,
-the new node must be started with the JVM option <code class="docutils literal"><span class="pre">-Dcassandra.allocate_tokens_for_keyspace=&lt;keyspace&gt;</span></code>, where
-<code class="docutils literal"><span class="pre">&lt;keyspace&gt;</span></code> is the keyspace from which the algorithm can find the load information to optimize token assignment for.</p>
-<div class="section" id="manual-token-assignment">
-<h4>Manual token assignment<a class="headerlink" href="#manual-token-assignment" title="Permalink to this headline">¶</a></h4>
-<p>You may specify a comma-separated list of tokens manually with the <code class="docutils literal"><span class="pre">initial_token</span></code> <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> parameter, and
-if that is specified Cassandra will skip the token allocation process. This may be useful when doing token assignment
-with an external tool or when restoring a node with its previous tokens.</p>
-</div>
-</div>
-<div class="section" id="range-streaming">
-<h3>Range streaming<a class="headerlink" href="#range-streaming" title="Permalink to this headline">¶</a></h3>
-<p>After the tokens are allocated, the joining node will pick current replicas of the token ranges it will become
-responsible for to stream data from. By default it will stream from the primary replica of each token range in order to
-guarantee data in the new node will be consistent with the current state.</p>
-<p>In the case of any unavailable replica, the consistent bootstrap process will fail. To override this behavior and
-potentially miss data from an unavailable replica, set the JVM flag <code class="docutils literal"><span class="pre">-Dcassandra.consistent.rangemovement=false</span></code>.</p>
-</div>
-<div class="section" id="resuming-failed-hanged-bootstrap">
-<h3>Resuming failed/hanged bootstrap<a class="headerlink" href="#resuming-failed-hanged-bootstrap" title="Permalink to this headline">¶</a></h3>
-<p>On 2.2+, if the bootstrap process fails, it&#8217;s possible to resume bootstrap from the previous saved state by calling
-<code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">bootstrap</span> <span class="pre">resume</span></code>. If for some reason the bootstrap hangs or stalls, it may also be resumed by simply
-restarting the node. In order to cleanup bootstrap state and start fresh, you may set the JVM startup flag
-<code class="docutils literal"><span class="pre">-Dcassandra.reset_bootstrap_progress=true</span></code>.</p>
-<p>On lower versions, when the bootstrap proces fails it is recommended to wipe the node (remove all the data), and restart
-the bootstrap process again.</p>
-</div>
-<div class="section" id="manual-bootstrapping">
-<h3>Manual bootstrapping<a class="headerlink" href="#manual-bootstrapping" title="Permalink to this headline">¶</a></h3>
-<p>It&#8217;s possible to skip the bootstrapping process entirely and join the ring straight away by setting the hidden parameter
-<code class="docutils literal"><span class="pre">auto_bootstrap:</span> <span class="pre">false</span></code>. This may be useful when restoring a node from a backup or creating a new data-center.</p>
-</div>
-</div>
-<div class="section" id="removing-nodes">
-<h2>Removing nodes<a class="headerlink" href="#removing-nodes" title="Permalink to this headline">¶</a></h2>
-<p>You can take a node out of the cluster with <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">decommission</span></code> to a live node, or <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">removenode</span></code> (to any
-other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and
-replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If
-removenode is used, the data will stream from the remaining replicas.</p>
-<p>No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at
-a different token on the ring, it should be removed manually.</p>
-</div>
-<div class="section" id="moving-nodes">
-<h2>Moving nodes<a class="headerlink" href="#moving-nodes" title="Permalink to this headline">¶</a></h2>
-<p>When <code class="docutils literal"><span class="pre">num_tokens:</span> <span class="pre">1</span></code> it&#8217;s possible to move the node position in the ring with <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">move</span></code>. Moving is both a
-convenience over and more efficient than decommission + bootstrap. After moving a node, <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> should be
-run to remove any unnecessary data.</p>
-</div>
-<div class="section" id="replacing-a-dead-node">
-<h2>Replacing a dead node<a class="headerlink" href="#replacing-a-dead-node" title="Permalink to this headline">¶</a></h2>
-<p>In order to replace a dead node, start cassandra with the JVM startup flag
-<code class="docutils literal"><span class="pre">-Dcassandra.replace_address_first_boot=&lt;dead_node_ip&gt;</span></code>. Once this property is enabled the node starts in a hibernate
-state, during which all the other nodes will see this node to be down.</p>
-<p>The replacing node will now start to bootstrap the data from the rest of the nodes in the cluster. The main difference
-between normal bootstrapping of a new node is that this new node will not accept any writes during this phase.</p>
-<p>Once the bootstrapping is complete the node will be marked &#8220;UP&#8221;, we rely on the hinted handoff&#8217;s for making this node
-consistent (since we don&#8217;t accept writes since the start of the bootstrap).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">If the replacement process takes longer than <code class="docutils literal"><span class="pre">max_hint_window_in_ms</span></code> you <strong>MUST</strong> run repair to make the
-replaced node consistent again, since it missed ongoing writes during bootstrapping.</p>
-</div>
-</div>
-<div class="section" id="monitoring-progress">
-<h2>Monitoring progress<a class="headerlink" href="#monitoring-progress" title="Permalink to this headline">¶</a></h2>
-<p>Bootstrap, replace, move and remove progress can be monitored using <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">netstats</span></code> which will show the progress
-of the streaming operations.</p>
-</div>
-<div class="section" id="cleanup-data-after-range-movements">
-<h2>Cleanup data after range movements<a class="headerlink" href="#cleanup-data-after-range-movements" title="Permalink to this headline">¶</a></h2>
-<p>As a safety measure, Cassandra does not automatically remove data from nodes that &#8220;lose&#8221; part of their token range due
-to a range movement operation (bootstrap, move, replace). Run <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> on the nodes that lost ranges to the
-joining node when you are satisfied the new node is up and working. If you do not do this the old data will still be
-counted against the load on that node.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="repair.html" class="btn btn-default pull-right " role="button" title="Repair" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="snitch.html" class="btn btn-default" role="button" title="Snitch" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/search.html b/src/doc/3.10/search.html
deleted file mode 100644
index 666a59a..0000000
--- a/src/doc/3.10/search.html
+++ /dev/null
@@ -1,105 +0,0 @@
----
-layout: docpage
-
-title: "Search"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: ""
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="index.html"/>
-'
-doc-search-path: "#"
-
-extra-footer: '
-  <script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-  </script>
-  <script type="text/javascript">
-    jQuery(function() { Search.loadIndex("searchindex.js"); });
-  </script>
-  
-  <script type="text/javascript" id="searchindexloader"></script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="#" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul>
-<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <noscript>
-  <div id="fallback" class="admonition warning">
-    <p class="last">
-      Please activate JavaScript to enable the search
-      functionality.
-    </p>
-  </div>
-  </noscript>
-
-  
-  <div id="search-results">
-  
-  </div>
-
-
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/searchindex.js b/src/doc/3.10/searchindex.js
deleted file mode 100644
index 73004b6..0000000
--- a/src/doc/3.10/searchindex.js
+++ /dev/null
@@ -1 +0,0 @@
-Search.setIndex({envversion:49,filenames:["architecture/dynamo","architecture/guarantees","architecture/index","architecture/overview","architecture/storage_engine","bugs","configuration/cassandra_config_file","configuration/index","contactus","cql/appendices","cql/changes","cql/ddl","cql/definitions","cql/dml","cql/functions","cql/index","cql/indexes","cql/json","cql/mvs","cql/security","cql/triggers","cql/types","data_modeling/index","development/code_style","development/how_to_commit","development/how_to_review","development/ide","development/index","development/patches","development/testing","faq/index","getting_started/configuring","getting_started/drivers","getting_started/index","getting_started/installing","getting_started/querying","index","operating/backups","operating/bloom_filters","operating/bulk_loading","operating/cdc","operating/compaction","operating/compression","operating/hardware","operating/hints","operating/index","operating/metrics","operating/read_repair","operating/repair","operating/security","operating/snitch","operating/topo_changes","tools/cqlsh","tools/index","tools/nodetool","troubleshooting/index"],objects:{},objnames:{},objtypes:{},terms:{"03t04":21,"0x0000000000000003":14,"0x00000004":13,"100mb":6,"10mb":6,"10x":[6,41],"11e6":52,"128th":4,"12gb":43,"15m":46,"160mb":41,"16mb":[30,41],"180kb":6,"1st":21,"250m":6,"256mb":6,"256th":6,"2e10":10,"2gb":43,"2nd":[6,11,50],"2xlarg":43,"327e":52,"32gb":43,"32mb":[6,30],"36x":34,"3ff3e5109f22":13,"3gb":42,"3rd":[6,46,50],"40f3":13,"4ae3":13,"4xlarg":43,"50kb":6,"50mb":[6,41],"512mb":6,"5573e5b09f14":13,"5kb":6,"5mb":41,"64k":6,"64kb":[11,42],"6tb":43,"7374e9b5ab08c1f1e612bf72293ea14c959b0c3c":24,"749d6eec0353b12c":34,"75th":46,"86400000m":6,"8gb":43,"8th":[6,40],"90th":46,"95ac6470":52,"95th":46,"98th":46,"99th":46,"9th":46,"\u00eatre":9,"_cache_max_entri":49,"_if_":6,"_must_":6,"_trace":46,"_udt":14,"_update_interval_in_m":49,"_use":14,"_validity_in_m":49,"abstract":[23,25],"boolean":[9,11,12,14,17,19,21,52],"break":[28,41],"byte":[6,9,13,21,46],"case":[6,10,11,12,13,14,16,17,18,21,24,25,28,29,30,38,43,49,51,52],"catch":23,"class":[6,11,14,21,23,26,29,41,42,45,49],"default":[4,6,10,11,13,14,17,19,21,26,30,31,34,38,40,41,42,46,49,51,52],"delete":[9,10],"double":[9,21],"enum":9,"export":[26,34,46,52],"false":12,"final":[14,19,23,26,41,43,49],"float":[9,10,11,12,14,17,21,38,42],"function":[6,9,10,11,12],"import":[11,14,21],"int":[9,10,11,13,14,17,18,19,21,29,40,42],"long":[6,13,21,24,25],"new":[0,4,6,10,11,14,16,17,18,19,20,21,23,25,26,28,29],"null":[9,10,12,13,14,17,18,21,23,52],"public":[6,14,23,29,30,34,49,50],"return":[6,11,13,14,16,17,18,19,21,25],"short":[6,21],"static":[6,9,10],"super":49,"switch":[6,10,19,26,30],"throw":[6,14,23,29],"true":[6,11,12,17,19,21,26,30,40,41,49,51,52],"try":[11,23,26,28,30,41,54],"var":[6,23,34],"void":29,"while":[6,10,11,12,13,21,24,28,38,41,42,43,49,52],abil:[14,30,42],abilityid:16,abl:[6,14,26,29,30,41],about:[4,6,19,26,28,29,30,38,41,50,52],abov:[6,8,11,12,13,14,21,26,28,30,31,40,41,46],absenc:12,abstracttyp:21,accept:[0,6,10,11,12,13,17,28,29,38,51],access:[6,10,21,26,28,43,45,46],accord:[6,30],accordingli:[6,14,30],account:[6,21],accru:[41,46],accumul:[6,41,46],accur:[6,30,38],accuraci:38,acheiv:49,achiev:[41,46],achill:32,ack:6,acquir:[19,46],across:[6,11,19,28,46,49,50],action:[6,13],activ:[4,6,28,40,46,52],activetask:46,actual:[4,6,13,20,23,25,30,34,41,50],acycl:19,add:[0,6,9,10,11,21,24,25,28],addamsfamili:11,added:10,adding:[6,11,19,21,30,36,45,49],addit:[0,6,11,13,19,21,26,28,31,41,43,46,49,52],addition:[11,13,41],address:[6,8,17,21,26,28],adher:10,adjac:41,adjust:[6,38],advanc:6,advantag:43,advers:30,advic:[28,30],advis:[6,12,21,30],aes:6,af08:13,afd:21,affect:[6,25,28,30,41],afford:6,after:[5,6,11,12,13,14,16,17,18,26,28,30,40,41,43,45,46,49,50],afterward:[26,29],afunct:14,again:[6,28,41,51,52],against:[6,11,14,28,29,30,43,51,52],agentlib:26,aggreg:[6,10,13],aggregat:13,aggregate:9,aggregates:52,aid:12,akeyspac:14,algorithm:[6,11,51],alia:[10,13,32],alias:[6,10],alic:19,align:23,aliv:6,all:[0,6,9,11,12,13,14,17,18],allmemtableslivedatas:46,allmemtablesoffheaps:46,allmemtablesonheaps:46,alloc:[6,30,40,43,46],allow:[0,4,6,9,10,11,12],allowallauthent:[6,49],allowallauthor:[6,49],allowallinternodeauthent:6,almost:[6,14,21,41],alon:[6,23],along:[6,13],alongsid:[35,52],alphabet:23,alphanumer:[11,19],alreadi:[6,11,14,16,18,21,28,41,49],also:[0,4,6,10,11,12,13,14,17,18,19,21,26,28,29,30,31,41,43,46,49,51,52],alter:[9,10],alter_keyspace_stat:12,alter_role_stat:12,alter_table_instruct:11,alter_table_stat:12,alter_type_modif:21,alter_type_stat:[12,21],alter_user_stat:12,altere:[11,19],altern:[6,10,11,12,13,17,26,28,31,43,49],although:[6,28],alwai:[0,6,9,10,11,13,14,18,21,23,28,29,30,41,43],amend:24,amongst:11,amount:[6,11,13,21,26,28,29,30,41,42,43,46,51,52],amplif:43,anaggreg:14,analogu:13,analyt:38,analyz:29,ani:[0,6,10,11,12,13,14,17,18,19,20,21,24,25,26,28,29],annot:23,anonym:[12,21],anoth:[6,11,14,19,21,41,49,52],another:[11,29],anotherarg:14,ant:[26,28,29],anti:[6,21],anticip:11,anticompact:41,antientropystag:46,antipattern:43,any:[0,6,12,19,28,46,52],anymor:[24,41],anyon:23,anyth:41,anywai:6,anywher:13,apach:[2,5,6,7,14,20,23,24,25,26,28,29,30,33,34],api:[6,8,11,15,17,35,50],appear:[12,14,41,52],append:[21,24,43,46,52],apple:21,appli:[6,10,11,12,13,19,21,24,28,30,46,52],applic:[6,11,19,23,25,26,49],apply:[9,13,29],appreci:28,approach:[4,41,51],appropri:[6,11,19,21,25,28,49,50,51],appropriat:[6,50],approxim:[41,46],apt:34,arbitrari:[11,12,21],arbitrarili:11,archiv:[6,40],aren:13,arg:14,argnam:14,argnum:14,argument:[11,13,14,16,17,30,31,42,52],arguments_declar:14,arguments_signatur:14,armor:34,around:[6,19,41,43,50],arrai:[6,30],arriv:[28,30],artifact:26,artifici:11,asap:10,asc:[9,11,13],ascend:[11,13],ascii:[9,11,14,17,21],asf:26,ask:[5,28,29,49],aspect:11,assertionerror:23,assertrow:29,assign:[6,13,30],associ:[6,11],assum:[6,11,14,26,49,50],assumpt:49,astyanax:32,async:[6,49],asynchron:[6,16,30,43],asynchroni:46,atabl:14,atom:[11,13,20,24],atomiclong:46,attach:28,attemp:46,attempt:[0,6,11,16,18,19,21,30,41,46,49,52],attent:[23,28],attribut:41,auth:6,authenticatedus:6,authorizationproxi:49,authorize:[9,19],auto:[6,30],auto_bootstrap:51,autocompact:41,autogener:54,autom:[8,23],automat:[6,13,14,16],avail:[0,6,8,11,14,19,26,28,29,34,40,49,52],availabil:6,availabl:[6,28,50],ave:21,averag:[14,41,46],average_s:11,averagefin:14,averagest:14,avg_bucket_s:41,avoid:[6,11,12,23,25,28,38,41,43,49,50,52],awai:[26,51,52],awar:[0,11,28,38,42],aws:43,azure:43,b124:13,b70de1d0:13,back:[6,41,46,51],backend:6,background:[30,34,41,49],backpressur:6,backup:[6,36],backward:[6,10,11,15,19,21],bad:[6,14,30,50],balanc:51,banana:21,band:21,bar:[12,23],base:[0,4,6,10,11,13,14,18,19,21,24,28,29,30,41,43,46,49,51],bash:30,basi:[6,30,42],basic:[11,41,43],batch:[6,9],batch_remove:46,batch_stat:12,batch_store:46,batchlog:[13,46],be34:13,beatl:21,beca:52,becaus:[6,13,14,34,41,42,49],becom:[4,6,11,14,19,28,41,46,49,51],been:[0,4,6,10,13,14,15,19,21,25,28,41,43,49],befor:[0,6,10,11,13,14,16,20,21,26,27],begin:[9,12,13,29,49,52],beginn:28,begintoken:52,behavior:[0,10,14,17,21,23,25,38,41,51],behind:[6,23,29,30,41],belong:[11,13,14,46],below:[6,11,12,13,17,19,21,28,34,41,52],benchmark:43,benefici:41,benefit:[38,41],besid:6,best:[6,29,41,49,50],best_effort:6,better:[6,23,28,41,43],between:[0,6,9,10,13,15,28,30,38,41,46,49,51],beyond:[6,52],big:41,bigger:[11,41],biggest:14,bigint:[9,11,14,17,21],bigintasblob:14,bin:[26,34,35,52],binari:[14,33],bind:[6,10,12,14,30],bind_mark:[12,13,18,21],biolog:11,birth:13,birth_year:13,bit:[6,14,17,21,28,30,42,43],bite:30,bitrot:11,bitstr:9,black:6,blank:[6,23,30],blindli:30,blob:[9,10,11,12],blobasbigint:14,blobastyp:14,block:[4,6,11,24,31,41,43,46,49],blockedonalloc:6,blog:[6,11,13],blog_til:13,blog_titl:13,bloom:[4,11,36],bloom_filter_fp_ch:[11,38],bloomfilterdiskspaceus:46,bloomfilterfalseposit:46,bloomfilterfalseratio:46,bloomfilteroffheapmemoryus:46,blunt:49,bnf:12,bob:[13,19],bodi:[11,12],boolstyle:52,boot:30,bootstrap:[0,6],born:13,both:[0,6,11,13,14,18,21,24,25,28,30,31,38,41,42,43,46,49,51,52],bottleneck:6,bottom:30,bound:[6,11,12,21,43,49],box:[6,49,50],brace:23,bracket:12,braket:12,branch:[24,25,26],branchnam:28,breakpoint:26,breed:29,bring:6,brk:30,broadcast:6,broken:[41,46],browser:52,bucket:41,bucket_high:41,bucket_low:41,buffer:[4,6,46],bufferpool:45,build:8,built:[26,46],bump:10,bunch:23,burn:40,button:30,bytebuff:14,byteorderedpartition:[6,14],bytescompact:46,bytesflush:46,c73de1d3:13,cach:6,cachecleanupexecutor:46,cachenam:46,calcul:[6,38,40,41,46,50],call:[11,12,13,14,19,23],callback:46,called:[9,14],caller:23,can:[0,4,5,6,8,9,10,11,12,13,14,16,17,18,19,20,21,23,24,25,26,28,29],cancel:10,candid:41,cannot:[6,9,11,13,14,17,18,19,21,41,49],cap:12,capabl:[6,30,52],capac:[6,40,46,50],captur:[6,36],care:[6,41],carlo:19,carri:23,cas:6,cascommit:46,casprepar:46,caspropos:46,casread:46,cassablanca:21,cassafort:32,cassandra:[0,2,4,5],cassandra_home:[6,40,49],cassandraauthor:[6,49],cassandradaemon:[26,34],cassandralogin:49,cassandrarolemanag:[6,49],casser:32,cassi:32,cast:[10,13],caswrite:46,cat:21,categor:46,categori:[11,12,13,14],caught:[25,46],caus:[6,18,30,41,49],caution:6,caveat:49,cbc:6,ccm:[25,29],ccmlib:29,cdc:[6,11],cdc_free_space_in_mb:40,cdc_raw:[6,40],cdccompactor:6,cell:[6,21,46],center:[6,11,21,30,50,51],central:[26,49,52],centric:19,certain:[6,9,11,19,29,41,49],certainli:14,certif:49,chain:19,chanc:38,chang:6,changes:[24,28],channel:[5,8,28],charact:[11,12,13,17,19,21,23,52],chat:8,cheap:6,check:[0,6,11,13,23,25,26,28,29,30,38,40,41,46,49],checkout:[26,28],checksum:[11,42],cherri:24,chess:13,child:52,chmod:49,choic:[6,11,36,41],choos:[0,6,11,27],chosen:[0,6,11,14],chown:49,chrome:52,chunk:[4,6,30,42,52],chunk_length_in_kb:[11,42],chunk_length_kb:6,chunkcach:46,chunksize:52,churn:6,cipher:[6,49],cipher_suit:6,circular:19,citi:21,clash:12,class_nam:6,classpath:[6,14,21,46],claus:[10,11],clean:[6,23,46],cleanli:28,cleanup:[30,41,45,46],clear:[25,28],click:[13,26,28],client:[0,6,8,10,11,13,17,19,21,25,30,31],clientrequest:46,clock:6,clockr:6,clone:[26,30,52],close:[6,15,49],closer:38,cls:52,cluster:[0,4,6,10],clustering:[9,11,13],clustering_column:11,clustering_ord:11,cmsparallelremarken:26,code:[6,10,12,14,20],codestyl:23,col:14,cold:6,collat:6,collect:[6,10,11,12,13,14,15,17],collection_liter:12,collection_typ:21,color:[21,52],column:[6,10],column_definit:11,column_nam:[11,13,16],columnfamili:[6,23,41],columnfamily:9,columns:13,colupdatetimedeltahistogram:46,com:[6,11,14,23,24,49],combin:[4,6,10,40,41],come:[6,49],comingl:41,comma:[6,11,12,13,31,49,51,52],command:[0,6,24],comment:[6,11],commit:[6,8,11],commitlog:2,commitlog_archiv:6,commitlogread:40,commitlogreadhandl:40,commitlogreplay:40,commitlogseg:6,committ:[24,28,29],common:0,common_nam:11,commun:[6,8,25,26,28,30,31,35,49],commut:30,compact:[4,6,9],compaction_window_s:41,compaction_window_unit:41,compactionbyteswritten:46,compactionexecutor:46,compactionhistori:41,compactionparamet:41,compactionparametersjson:41,compactionstat:41,compar:[6,28,41,46],compat:[6,10],compatilibi:21,compet:6,compil:[23,26,52],complain:26,complet:[6,13,14,28,30,41,46,49,51,52],completedtask:46,complex:[6,9,14,21,28],complexarg:14,compliant:[6,14,49],complic:28,compon:[4,11,25,38,46,49],compos:[11,13,21],composit:11,compound:17,comprehens:25,compress:[4,6],compressioninfo:4,compressionmetadataoffheapmemoryus:46,compressionratio:46,compressor:[6,11],compris:[4,11,42],compromis:49,comput:[6,14],concaten:14,concept:[15,19,41],concern:[13,14],concret:[12,21],concurr:[6,43],concurrentmarksweep:43,condens:13,condit:[6,10,12,13,19,21,23,24,41,46,49,52],conditionnotmet:46,conf:[6,30,31,34,46,49,52],config:[46,49,52],configur:[0,4],confirm:[6,8,25,26],conflict:[13,21,24],conform:[18,25],confus:[10,12,30],conjunct:52,connect:[6,11,19,21,26],connectednativecli:46,connectedthriftcli:46,connector:[30,32,49],consecut:31,consequ:[11,13,21,43],conserv:6,consid:[0,6,13,21,28,31,38,41,43],consol:[26,31,52],constant:[10,11],constantli:[6,41],construct:12,constructor:[6,23],consum:[29,38,40,46],consumpt:40,contact:6,contain:[0,6,8,11,12,13,15,18,19,21,26,28,40,41,42,49,52],contains:[9,10,13,16],contend:[6,46],content:[4,6,11,12,13,36,41,52],contentionhistogram:46,context:[9,19,28,30,49],contigu:13,continu:[0,6,23,29,41,49,50],contrarili:12,contrast:[29,49],contributor:[24,28,29,34],control:[0,6,10,11,13,15],conveni:[9,12,14,17,29,51],convent:[6,11],convers:[10,11],convert:[10,11,13,14,41],coordin:[0,6,11,13,14,21,30,46],coordinatorreadlat:46,coordinatorscanlat:46,cop:23,copi:[0,30,41,52],core:[6,14,43],correct:[10,25,34,41,42],correctli:[6,11,30,41,49],correl:[6,10,50],correspond:[6,11,13,14,18,21,28,29,30,40,50],corrupt:[6,11,41,42,43],cost:[6,13,21,42],could:[12,21,25,28,41,52],couldn:34,count:[6,9,13],counter:[6,9],counter_mutation:46,countercach:46,countermutationstag:46,countri:[13,21],country_cod:21,coupl:[0,6],cours:[6,13],cover:[25,28,29,30,33,41,46],cpu:[6,11,40,42],cqerl:32,cql3:[11,14,25,29,52],cql:6,cql_type:[11,12,13,14,19,21],cqlc:32,cqldefinit:14,cqlsh:[30,33,34],cqltester:[25,29],crash:43,crc32:4,crc:4,crc_check_chanc:[11,42],creat:[6,10,11,13,14,16,17,18],create:[9,10],create_aggregate_stat:12,create_function_stat:12,create_index_stat:12,create_keyspace_stat:12,create_materialized_view_stat:12,create_role_stat:12,create_table_stat:12,create_trigger_stat:12,create_type_stat:[12,21],create_user_stat:12,createkeystor:6,createt:29,creation:[11,13,14,18,21],creator:19,credenti:6,critic:[25,28,49],cross:[6,30,50],crossnodedroppedlat:46,cryptographi:6,csv:52,cuddli:21,curl:24,current:[6,9,11,13,14,19,21,26,28,34,41,46,51,52],currentlyblockedtask:46,custom:[6,9,10,11,14,15,16,19],custom_option1:19,custom_option2:19,custom_typ:[14,21],cute:21,cvh:25,cycl:40,daemon:26,dai:[17,21,41],danger:6,dash:12,data:[0,4,6,10],data_read:19,data_writ:19,databas:[12,13,15],datacent:[0,6,50],datacenter1:6,dataset:6,datastax:[6,11,14,32],datatyp:14,date:[9,10,11,14,15,17],dateof:[10,14],datestamp:17,datetieredcompactionstrategi:[11,41],days:41,db_user:49,dba:49,dc1:[6,11,49],dc2:[6,11,49],dcassandra:[41,46,49,51],dclocal_read_repair_ch:[0,11,41],dcom:49,ddl:[11,52],ddl_statement:12,dead:[6,45],dead_node_ip:51,deb:34,debian:[30,33],decid:[9,41,50],decim:[11,14,17,21,52],decimal:[9,21],decimalsep:52,declar:[11,12,14,21],decod:17,decommiss:[6,51],decompress:42,decreas:41,decrement:[13,21],decrypt:6,dedic:6,deem:6,deeper:28,default_time_to_l:[10,11,13],default_weight:6,defend:30,defin:[0,6,9,10,11,12,13],deflat:6,deflatecompressor:[11,42],degrad:6,delet:[6,10,11,12,13,21,28],delete_stat:[12,13],delimit:6,deliv:[0,6],deliveri:6,delta:46,demand:49,deni:30,denorm:21,denot:12,dens:38,depend:[4,6,11,12,13,14,25,26,28,29,41],deploi:[30,31],deploy:[6,49,50],deprec:[6,10,11,15,30,41],deprecated:14,desc:[9,11,13,52],descend:[11,13],describ:[2,6,7,10,11,12,13,14,15,17,21,25,26,28,53],describe:[9,19,38,49],descript:[6,10,11,14,21,46,52],descriptor:46,design:[14,40,41,43],desir:[16,21,30],destin:[40,52],detail:[5,10,11,12,13,14,21,30],determin:[0,6,13,19,38,42,50],determinist:30,dev:[6,8,11,30],develop:[5,8,26],dfb660d92ad8:52,dht:6,dictat:[6,49],did:[25,46],die:6,diff:[15,23],differ:[0,6,11,12,13,14,15,19,21,24,26,28,29,30,31,34,41,42,43,46,51],difficult:[6,29],difficulti:21,digest:4,digit:[17,21,30],diminish:21,direct:[6,11,17,19,28,46],directli:[13,18,19,26,41],director:13,directori:[6,20,26,29,30],dirti:6,disabl:[6,11,14],disable_stcs_in_l0:41,disableautocompact:41,disallow:6,discard:[6,40],disconnect:41,discourag:[11,21,28],discov:30,discuss:[8,21,28],disk:[4,6,11],displai:[11,52],disrupt:[30,49],dist:34,distinct:[0,9,10,13],distinguish:[9,14],distribut:[6,29,30,41,46,49,51],divid:12,djava:[26,30,49],dml:20,dml_statement:12,dmx4jaddress:46,dmx4jport:46,dns:30,dobar:23,doc:[6,25,40,49],document:[5,12,14,15,17,25,28,35],doe:[6,11,13,14,16,17,18,19,21,24,25,28],doesn:[14,21,23,29,30],dofoo:23,dollar:[10,12],domain:49,don:[5,13,23,24,25,26,28,30,31,41,51],done:[6,11,13,21,28,29,31,35,41],doubl:[6,9,10,11,12,14,17,21,26,46,50],down:[6,19,41,46,50,51],download:[6,26,34,46],downward:19,drive:[6,41,43],driver:[6,12,14,29],drop:[6,9,10],drop_aggregate_stat:12,drop_function_stat:12,drop_index_stat:12,drop_keyspace_stat:12,drop_materialized_view_stat:12,drop_role_stat:12,drop_table_stat:12,drop_trigger_stat:12,drop_type_stat:[12,21],drop_user_stat:12,droppabl:41,droppedmessag:45,droppedmetr:46,droppedmut:46,dropwizard:46,dt_socket:26,dtest:[25,27],due:[11,13,30,34,46,51],dump:52,duplic:25,durable_writ:11,durat:[6,19,21,41,46],dure:[6,11,14,20,28,29,30,41,42,46,49,51,52],dynam:[6,45,49],dynamic_snitch:50,each:[0,4,6,10,11,12,13,14,17,18,19,21,24,28],each_quorum:0,earli:[6,12,28],earlier:15,easi:[9,28],easier:[0,28],easiest:30,ebs:43,ec2:[6,43,50],ec2multiregionsnitch:[6,50],ec2snitch:[6,50],ecc:43,echo:34,eclips:23,ecosystem:25,edg:25,edit:[31,46,49],edition:[26,34],edu:34,effect:[6,11,28,30,38,42,49],effectiv:46,effici:[6,11,41,50,51],effort:6,either:[6,8,12,13,14,16,21,23,24,26,28,30,34,35,40,41,46,49],elaps:[41,46],element:[21,52],elig:6,els:[11,13,23,28],email:[8,16,21],embed:29,emploi:38,empti:[6,10,11,12,52],enabl:[6,11,14,17,19,30],enableautocompact:41,encapsul:[23,46],enclos:[9,10,12,14,19],enclosur:12,encod:[17,21,25,52],encode:15,encoding:52,encount:[5,13,34,46],encourag:[6,11],encrypt:[6,49],encryption:45,encryption_opt:6,end:[21,28,30,41,49,52],endpoint:[46,50],endtoken:52,enforc:[17,49],engin:[11,28,46],engine:2,enhanc:43,enough:[0,6,21,30,31,41,50,52],enqueu:6,ensur:[11,13,18,20,30,42,49],entail:30,enter:[30,52],entir:[0,4,6,14,21,30,38,41,49,51,52],entri:[4,6,13,28],entries:[9,16],entropi:6,entry_titl:13,enumer:19,env:[30,31,46,49],environ:[0,5,6,26,30],ephemer:43,epoch:21,equal:[0,6,10,11,13,23,41],equival:[10,11,12,13,14,19,24,41],eras:11,erlcass:32,err:52,errfile:52,error:[6,11,12,14,16,18,19,21,23,25,26],escap:[12,17],especi:[28,30,41,52],essenti:[6,14,30,52],essential:0,establish:[6,19,50],estim:46,estimat:46,estimatedcolumncounthistogram:46,estimatedpartitioncount:46,estimatedpartitionsizehistogram:46,etc:[6,18,21,23,25,30,31,34,41,46,49],eth0:6,eth1:6,ev1:21,even:[0,6,10,12,13,14,17,21,28],evenli:6,event:[13,21,41,52],event_typ:13,eventu:13,eventual:4,ever:[23,29,30,43],everi:[4,6,11,13,14,18,19,20,21,35,38,41,43,52],everyth:[12,23,26,30],evict:46,evil:[6,14],exact:[11,12,14,42],exactli:[11,14,18,49],exampl:[0,6,11,13,14,17,19,29,34,35,41,49,50,52],exaust:6,excalibur:11,exce:[4,6,17,23],exceed:[6,43],excel:11,excelsior:11,except:[0,13,14,17,23,25,28,29,30,46],excess:38,exchang:[6,30],exclud:46,exclus:[21,29],execut:[6,11,12,13,14,19,26,29,35,41,46,52],execute:[9,19,49],exhaust:6,exhibit:13,exist:[6,11,12,13,14,16,17,18,19,20,21,25,26,29],exists:[9,10,11,13,14,16,18,19,20,21],expect:[6,10,12,21,23,25,28,41,49],expens:[6,38,50],experi:[6,41],experienc:6,expir:[10,11,13,21],expiri:41,explain:[23,25,28,34],explicit:10,explicitli:[6,10,13,17,21,23,41,50],explorer:26,expon:10,exponenti:46,expos:[6,49],express:[0,6,10,12,50],expung:30,extend:[21,28,29],extens:[11,49],extension:6,extern:[46,51],extra:[0,6,11,41],extract:[23,34],extrem:6,extreme:13,fact:[29,30],factor:[0,6,11],fail:[6,13,14,21],fairli:[6,40,49],fake:14,fall:6,fallback:[6,50],fals:[6,11,17,19,21,38,40,41,42,46,49,51,52],famili:[6,43],fast:[6,38,41],faster:[6,28,42,43],fastest:[6,24,50],fatal:6,fault:30,fav:[16,21],fax:21,fct:14,fct_using_udt:14,fear:30,feasibl:21,featur:[25,26,28,49],fed:6,feedback:28,feel:24,fetch:[6,11,52],few:[41,43],fewer:[6,28],fffffffff:[17,21],field:[10,13,14,17,21,23,38],field_definit:21,field_nam:13,fifteen:46,fifteenminutecachehitr:46,figur:41,file:4,filenam:[11,52],filesystem:49,fill:[40,41],fillion:13,filter:[4,11],filtering:[9,13,18],finalfunc:[9,14],find:[6,26,29,34,38,41,51],fine:[6,28,49],finer:6,finish:[26,28],fips:[6,49],fire:20,firefox:52,firewal:[6,30,31,50],first:[5,6,11,13,14,21,28,30,33,41,43,49,52],firstnam:13,fit:[6,41,46],five:46,fiveminutecachehitr:46,fix:[6,10,12,24],flag:[6,13,24,25,28,40,46,51],flexibl:49,flight:[6,49],flip:11,flow:[19,25],fluent:32,flush:[4,6,40,41,43,46],fname:14,focu:28,folder:26,follow:[0,5,6,8,9,10,11,12,13,14,17,18,19,21,23,24,25,26,28,29,30,31,34,36,40,41,42,46,49,50,52],font:12,foo:[11,12,40],forc:[4,6,11,13,52],foreground:[31,34],forev:41,forget:5,fork:28,form:[6,10,11,12,14,19],formal:12,format:[6,10,17,21],former:46,forward:[6,11],found:[5,12,14,15,28,29,31,35,49,52],four:13,fqcn:29,fraction:6,frame:6,framework:[25,29],franc:13,free:[6,11,21,24,26,46],freed:4,freenod:8,frequenc:[6,40],frequent:[6,29],fresh:51,friendli:[21,29],from:[0,4,6,9,11,12,13,14,15,17,18,19,21,24],fromjson:15,frozen:[9,10,11,13,14,21],fruit:[21,28],fsync:[6,46],full:[6,9,11,13,16,19,28,34,35,41,42,49,52],fulli:[6,11,12,14],function_cal:12,function_nam:[13,14,19],functions:[9,19,52],fundament:17,further:[5,6,11,18,21],furthermor:[10,13,49],futur:[6,9,10,11,21,28],g1gc:43,game:[14,21],garbag:11,gather:41,gaug:46,gaurante:0,gc_grace_second:11,gc_type:46,gce:[30,43],gcg:6,gener:[0,2,4,6,8,11,12,13,14,17,21],genuin:23,get:[6,8,24,26,28,30],getint:14,getlocalhost:[6,30],getlong:14,getpartition:23,getstr:14,gettempsstablepath:23,getter:[19,23],gist:23,git:[5,24,26,28],github:[23,24,28,29],give:[18,19,21,28],given:[0,6,11,12,13,14,16,21,28,38,41,49,51,52],global:[6,52],gmt:21,goal:[6,41],gocassa:32,gocql:32,gone:6,good:[6,23,28,29,30,52],googl:[23,52],gori:30,gossipingpropertyfilesnitch:[6,50],gossipstag:46,gp2:43,gpg:34,grai:21,grain:49,grammar:[11,12],grant:[6,9],grant_permission_stat:12,grant_role_stat:12,granular:6,graph:19,gravesit:11,great:[28,41],greater:[0,6,30,50],greatli:6,green:21,group:[6,10,11],group_by_claus:13,grow:21,guarante:0,guid:[6,26],guidelin:[10,25,43],had:[10,41],half:[6,24,30],hand:[6,13,43],handl:[6,14],handoff:[6,46,51],hang:28,happen:[6,13,23,24,28],happi:28,happili:43,hard:[6,14,41,43],hardwar:[6,36],hash:[4,6,41],hashcod:23,have:[0,5,6,9,10,11,12,13,14,15,18,19,21,23,24,25,26,28,29,30,31,34,38,41,42,43,46,49,50],haven:28,hayt:32,hdd:[6,43],head:28,header:[26,52],headroom:6,heap:[4,6,26],heap_buff:6,heavi:6,heavili:43,held:[6,43],help:[5,6,10,28,29,35],helper:29,henc:[5,6,11,21],here:[6,24,29,30,32,41,46,49],hex:[12,17],hexadecim:[10,12],hibern:51,hidden:51,hide:[23,25],hierarch:19,hierarchi:19,high:[0,30,41,43],higher:[0,19,28,38,41,46,51],highest:41,highli:[28,30,43,49],hint:[0,6,11,12,30,31,36],hintedhandoff:[6,45],hintedhandoffmanag:46,hints_creat:46,hints_not_stor:46,hintsdispatch:46,histogram:[41,46],histor:28,histori:23,hit:[6,41,46],hitrat:46,hoc:29,hold:[0,6,10,13,19,30,41,52],home:[21,52],hope:41,hopefulli:28,host:6,hostnam:[6,30],hot:[6,46],hotspot:11,hotspotdiagnost:49,hottest:6,hour:[6,21,28,41],hours:41,how:[0,5,6,7,8,11,12,21],howev:[6,9,10,11,12,13,15,17,18,21,28,29,30,31,34,38,42,43,49,52],hsha:6,html:6,http:[6,23,24,26,34,46],httpadaptor:46,hub:30,human:11,hypothet:24,iauthent:6,iauthor:6,icompressor:42,idea:[6,14],ideal:6,idealli:[29,41,49],idempot:[13,21],idemptot:21,ident:0,identifi:[6,9,10,11],idiomat:8,idl:6,ieee:[17,21],iendpointsnitch:[6,50],ignor:[0,6,10,14,21,23,52],ignore:6,iinternodeauthent:6,illeg:14,illustr:19,imag:21,imagin:41,immedi:[6,11,21,28,38,42],immut:[4,30,42,43],impact:[6,11,25,41],implement:[6,10,13,14,18,19,23,29,30,40,42,49,50],impli:[11,12,21],implic:[0,49],implicitli:14,import_:52,important:11,imposs:41,improv:[0,6,11,21,28,29,38,41,43,50,51,52],inact:30,includ:[4,6,10,11,12,13,18,19,21,23,28,40,41,43,46,49,52],include:[28,46],inclus:28,incom:6,incomingbyt:46,incompat:[6,10],incompatible:6,incomplet:25,inconsist:[0,30],incorrect:30,increas:[6,11,30,38,42,43,46,50,51],increment:[6,10,13,21,28,41],incur:[13,21,46],indent:23,independ:[11,41,43,49],index:[4,6,9,10,11,12,13,15],index_identifi:16,index_nam:16,indexclass:16,indexedentrys:46,indexinfocount:46,indexinfoget:46,indexsummaryoffheapmemoryus:46,indic:[5,6,12,13,23,28,30],indirectli:13,individu:[6,10,14,21,28,29,43,49],induc:13,inequ:[10,13],inet:[9,11,14,17,21],inetaddress:[6,30],inexpens:43,infiniti:[10,12],infinity:[9,12],influenc:11,info:[6,31,46],inform:[4,6,12,13,21,35,49,50,51,52],ingest:6,ingestrate:52,inher:[11,21],inherit:19,init:46,initcond:[9,14],initi:[6,14,23,25,40,46,49,52],input:[9,10,14,17,21,25,52],inputd:21,inreleas:34,insensit:[11,12],insert:[6,9,10,11,12],insert_stat:[12,13],inserted:6,insid:[11,13,21,23,52],inside:12,inspect:[6,52],inspection:26,instabl:6,instal:[6,20,30,34,52],install:33,installat:33,instanc:[6,10,11,12,13,14,16,18,19,20,21,26,29,30,40,41,43,46],instantan:46,instanti:10,instantli:6,instead:[10,11,13,18,21,23,30,41],instruct:[6,8,11,24,26,36],instrument:49,intasblob:13,integ:[0,10,11,12,13,17,21],integer:[12,46],integr:[29,49],intellij:23,intend:[25,49],intens:[6,29,30],intent:25,inter:6,interact:[29,35,52],interest:[0,41,49],interfac:[6,10,14,23,30,31,42,49],intern:[6,11,13,18],internaldroppedlat:46,internalresponsestag:46,internet:6,internod:[6,30],internode_encrypt:[6,49],interpret:[10,21,52],interrupt:30,interv:[6,9,46],intra:[6,46,50],intrins:21,introduc:[6,10,17,28,51],introduct:[10,19,29],intvalu:14,invalid:[6,13,19,25,49],invertedindex:20,investig:6,invoc:14,invok:[24,34,49],invoke:34,involv:[6,13,41,42,49],ioerror:23,ip1:6,ip2:6,ip3:6,ipv4:[6,17,21,30],ipv6:[6,17,21],irc:5,irolemanag:6,irrevers:[11,21],isn:[0,18,23,28,30],iso:21,isol:[11,13],issu:[0,19,24,28,29,30,38,41,42],item:[12,21,25,26],iter:0,itself:[6,11,16,30,34],iv_length:6,jaa:49,jacki:24,jamm:26,januari:21,jar:[14,23,26,46],java7:49,java:[6,14,20,21,23,26,28],javaag:26,javadoc:[23,25],javas:6,javascript:[6,14],javax:49,jbod:43,jce8:6,jce:6,jceks:6,jdk:6,jdwp:26,jenkin:29,jetbrain:26,jira:[5,25,28,29,40],jks:6,jkskeyprovid:6,jmc:[41,49],jmx:[6,19],jmx_password:49,jmx_user:49,jmxremot:49,job:28,john:[13,21],join:[6,8,13],joss:13,jpg:21,jsmith:21,json:[9,10,13,15],json_claus:13,jsr:[6,14],jsse:6,jsserefguid:6,judgement:23,junit:[23,26,29],jurisdict:6,just:[6,14,19,26,28,29,30,41,49],jvm:[6,20,26,30,31,45],jvm_extra_opts:26,jvm_opts:[31,49],jvmstabilityinspector:25,keep:[6,8,11,23,28,30,41,46],keepal:[6,30],kei:[4,6,10],kept:[6,41,46],kernel:[6,30],key:[9,10,11,13,14,16,18,21,29,40,42],key_alia:6,key_password:6,key_provid:6,keycach:46,keycachehitr:46,keys:[9,16],keyserv:34,keyspac:[0,6,10,11,12,14,16,19,21],keyspace1:[6,19],keyspace2:6,keyspace:[6,9,10],keyspace_nam:[11,14,19,21,41],keyspaces:[9,19,52],keystor:[6,49],keystore_password:6,keystorepassword:49,kill:[6,34],kilobyt:42,kind:[11,12,21,28,40,41],kitten:21,know:[6,13,21,23,41],known:[19,21,32,35,38,41],ks_owner:49,ks_user:49,kundera:32,label:[21,28],lag:46,land:42,landlin:21,languag:[6,9,10,12,14],language:[9,14],larg:[6,11,13,14,21,29],larger:[6,29,30,41,42,43],largest:[6,46],last:[6,12,13,14,15,28,41,46],lastknownloc:11,lastli:[13,21],lastnam:13,latenc:[0,6,30,46,50],later:[0,11,21,23,28,30],latest:[0,28,34,41,52],latter:12,layer:43,layout:11,lazi:11,lazili:11,lcs:11,lead:[6,10,21,41],learn:[6,29,30,52],least:[0,6,11,12,13,18,30,41,43],leav:[6,12,13,23,30,52],left:[6,17,41],legaci:[6,19],legal:10,length:[4,6,10,17,25,41],less:[6,21,28,30,38,43],let:[6,41],letter:17,leveledcompactionstrategi:[11,38,41],lexic:30,lib:[6,20,25,26,34],libqtcassandra:32,librari:[8,25,29,32,46,52],licenc:25,licens:[25,26,28],life:28,lifespan:43,like:[0,6,12,13,14,17,21,23,24,25,28,29,30,36,41,42,43,49],likewis:19,limit:[6,9,10,11],line:[12,23],linear:43,linearli:38,link:[6,8,11,12,28,29,34],linux:[6,30],list:[4,5,6],list_liter:[13,21],list_permissions_stat:12,list_roles_stat:12,list_users_stat:12,listarg:14,listen:6,liter:[10,12,14,17],littl:23,live:13,livediskspaceus:46,livescannedhistogram:46,livesstablecount:46,load:[0,6,11,20,21],local:[0,6,11,26,28,29,35,43,46,49,50,52],local_jmx:49,local_one:[0,49,52],local_quorum:[0,52],local_serial:52,localhost:[6,35,49],locat:6,lock:[6,30,46],log:[6,11,13,25,29],log_al:41,logback:31,logged:6,logger:[23,31],logic:[6,20],login:[6,9,19,49],lol:21,longer:[6,10,30,41,51],look:[6,12,24,28,29,41,43],loop:23,lose:[6,41,51],loss:[6,21],lost:[41,51],lot:6,low:[6,28],lower:[0,6,11,12,13,19,30,38,41,46,51],lowercas:12,lowest:[28,41],lz4:6,lz4compressor:[6,11,42],macaddr:9,machin:[6,11,29,30,46,49,50,51],made:[6,21],magnet:6,magnitud:13,mai:[0,4,6,9,10,11,13,14,16,17,19,21,25,26,28,29,30,34,38,41,49,50,51,52],mail:5,main:[0,14,18,26,30],main_actor:13,mainli:[6,11],maintain:[6,28],mainten:46,major:[0,10,28],make:[0,6,8,20,21,23,26,28,29,30,31,34,41,49,51,52],man:6,manag:[6,19,26,29,46,49,51],mandatori:[11,14],mani:[0,6,11,23,25,28,41,42,43,46,49,52],manipul:12,manual:[6,24,30],map:[6,9,10,11,13,14],map_liter:[11,16,19,21],mar:21,mark:[6,19,41,51],marker:[6,11,12,25,30],match:[6,12,13,14,17,19,46,50],materi:[6,10,11,12,15],materialized:15,materialized_view_stat:12,matter:[11,30],max:6,max_map_count:30,max_mutation_size_in_kb:[6,30],max_thread:6,max_threshold:41,maxattempts:52,maxbatchsize:52,maxfiledescriptorcount:46,maxim:43,maximum:[4,6,14,38,46,52],maxinserterrors:52,maxoutputsize:52,maxparseerrors:52,maxpartitions:46,maxpools:46,maxrequests:52,maxrows:52,maxtimeuuid:10,mayb:13,mbean:[6,19,41,46,49],mbeans:[19,49],mbeanserv:19,mbp:6,mct:6,mean:[6,9,11,12,13,14,17,18,21],meaning:13,meanpartitions:46,meant:[21,30,46],measur:[6,25,29,46,51,52],mechan:40,median:46,meet:[6,25],megabyt:6,member:23,membership:6,memlock:30,memori:[4,6,11],memory_pool:46,memtabl:2,memtable_allocation_typ:4,memtable_cleanup_threshold:4,memtablecolumnscount:46,memtableflushwrit:46,memtablelivedatas:46,memtableoffheaps:46,memtableonheaps:46,memtablepool:6,memtablepostflush:46,memtablereclaimmemori:46,memtableswitchcount:46,mention:[6,21,28,46,49],menu:26,mere:23,merg:[24,28,38],mergetool:24,merkl:46,mess:[28,29],messag:[6,21,25,28],met:13,meta:[13,46],metadata:[4,19,42,43,46],meter:46,method:[10,13,14,19,23,25,26,29],metric:[6,45],metricnam:46,metricsreporterconfigfil:46,microsecond:[11,13,46],midnight:21,might:[6,13,41,46],migrat:[6,46,50],migrationstag:46,millisecond:[6,10,21,46],min:6,min_sstable_s:41,min_threshold:41,minbatchsize:52,mind:6,minim:[6,41,43],minimum:[6,11,14,31,46],minor:[10,12],minpartitions:46,mintimeuuid:10,minut:[6,41,46],minutes:41,misbehav:41,miscelen:46,miscellan:6,miscstag:46,miss:[11,41,46,51],misslat:46,mit:34,mitig:[6,49],mix:[6,41],mmap:30,mnt:16,mock:29,mode:[6,49,52],model:[11,15,19],moder:43,modern:43,modif:[13,19],modifi:[6,10,11,14,19,21,28,38,41,42],modification_stat:13,modify:[9,19],modul:52,modular:25,moment:[6,28],monitor:[30,36,45],monkeyspeci:[11,18],monkeyspecies_by_popul:18,more:[0,4,6,10,11,12,13,21,23,28,29],moreov:13,most:[6,11,12,13,21,26,28,29,30,31,41,42,43,49,52],mostli:[6,11,21],motiv:[29,41],mount:6,move:[6,28,30,36,40,45,46],movement:45,movi:[13,21],mtime:11,much:[0,5,6,11,38,41,50],multi:[0,6,12,25],multipl:[4,6,10,11,12,13,14,21,23,25,26,28,30,31,41,43,50],murmur3partit:4,murmur3partition:[6,14,52],must:[0,6,10,11,13,14,17,18,19,23,28,29,30,31,41,46,49,51,52],mutant:16,mutat:[0,6,13,30,40,46],mutation:46,mutationstag:46,mv1:18,mx4j:46,mx4j_address:46,mx4j_port:46,mx4jtool:46,mxbean:19,myaggreg:14,mycolumn:17,mydir:52,myevent:13,myfunct:14,myid:12,mykei:17,mykeyspac:14,mytabl:[11,14,17,20],mytrigg:20,name:[6,9,10,11,12,13,14,16,17,18,19,20,21,25,26,28,29,30,31,46,49,52],names_valu:13,nan:[9,10,12],nanosecond:21,nathan:13,nativ:[6,10,12],native_transport_min_thread:6,native_typ:21,natur:[11,21,23,41,42],nearli:26,neccessari:6,necessari:[6,11,14,19,28,34,42,49],necessarili:[6,12,31],need:[0,6,10,11,12,13,19,21,23,25,26,28,30,31,34,35,38,41,42,43,49,50,52],neg:6,neglig:13,neighbour:41,neither:[18,21,49],neon:26,nerdmovi:[13,16],nest:[12,13,23],net:[6,26,30],netstat:51,network:[6,13,30,43,49,50],never:[6,10,11,12,13,14,21,23,30,41],nevertheless:13,new_rol:19,new_superus:49,newargtuplevalu:14,newargudtvalu:14,newest:[11,41],newli:[11,21,28,40],newreturntuplevalu:14,newreturnudtvalu:14,news:25,newtuplevalu:14,newudtvalu:14,next:[6,30,35,41,52],nfs:43,ngem3b:13,ngem3c:13,nifti:24,nio:[6,14,46],no_pubkey:34,node:[0,4,6,11,13,14,20,21,25,29],nologin:9,non:[6,9,10,11,12,13,14,19,21,30,38,42,46,49,52],none:[6,11,13,21,49],nonsens:19,nor:[11,18,21],norecursive:[9,19],norm:46,normal:[14,17,26,30,34,46,51,52],noschedul:6,nosuperuser:[9,19],notabl:[14,17],notat:[10,12,13,52],note:[0,5,6,10,11,12,13,14,15,17,19,21,24,28,30,41,49],noth:[6,11,14,24,29,30],notif:8,notion:[11,12],now:10,ntp:6,nullval:52,num_cor:52,number:[0,6,10,11,12,13,14,17,18,21,26,28,29,30,34,38,41,42,46,49,51,52],number_of_cor:6,number_of_dr:6,numer:[15,38],numprocesses:52,object:[6,11,12,25],objectnam:19,observ:23,obsolet:[6,43,46],obtain:[12,49],obviou:[14,24],obvious:11,occup:13,occupi:[6,46],occur:[10,12,13,20,21,30,41,43,46],occurr:21,octet:[6,50],odd:28,off:[4,6,30,42,46,49,52],offer:[15,29,42],offheap:[38,43],offheap_buff:6,offheap_object:6,offici:[36,52],offset:[4,46],often:[6,11,12,23,28,29,30,41,42,43,49,50,52],ohc:6,ohcprovid:6,okai:23,old:[4,6,41,51],older:[6,14,26,34,41,43,52],oldest:[6,11],omit:[6,10,11,13,17,21],onc:[6,12,14,21,24,26,28,30,40,41,43,49,52],once:[4,6,11,21,26,28,30,41,42,46,49,51],one:[0,6,29,30,41,46,52],oneminutecachehitr:46,ongo:[41,51],onli:[0,6,9,11,12,13,14,17,18,19,21,28,29],onlin:52,only:[0,6,19,23,50,52],only_purge_repaired_tombston:41,onto:[4,41],open:[5,6,26,49,50],openfiledescriptorcount:46,openjdk:34,oper:[0,6,10,11,13,16,18,19,21,23],operat:[6,19,36,38],operatingsystem:46,opertaion:6,opportun:38,opt:14,optim:[6,11,12,30,41,43,51],option1_valu:19,option:[4,6,10],optional:[34,49],options:[9,16,19],oracl:[6,34,49],order:[0,4,6,9,10],ordering_claus:13,orderpreservingpartition:6,org:[6,14,20,23,26,29,30,34,41,42,46,49],organ:[4,26,32],origin:[24,28],orign:13,other:[0,4,6,10],other_rol:19,otherwis:[0,9,12,13,16,21],our:[5,6,8,24,26,28,41],ourselv:24,out:[6,12,23,26,28,41,46,49,50,51],outbound:6,outgoingbyt:46,outlin:49,output:[14,19,25,26,38,41,52],outsid:[11,20,21],over:[0,6,11,21,30,41,46,49,50,51],overal:14,overflow:17,overhead:[6,30,42,46,51],overidden:49,overlap:[0,41],overload:[6,14,30],overrid:[6,23,49,51],overridden:[6,11],overview:2,overwhelm:6,overwrit:[42,43],overwritten:46,own:[0,6,11,12,14,21,28,30,34,41,42,46,49],owner:21,ownership:41,pacif:21,packag:[26,30,31,33],packet:6,page:[6,21,26,28,29,30,43,46,52],paged_slice:46,pages:52,pagesize:52,pagetimeout:52,pai:23,pair:[6,11,19,21,41,49],parallel:41,paramet:6,paranoid:6,parenthesi:[11,52],parnew:43,pars:[6,12,40,52],parser:[9,10,40],part:[0,5,6,11,13,14,18,21,25,26,28,29,30,50,51,52],parti:[25,46],partial:4,particip:[0,6,20],particular:[11,12,13,14,17,19,21,30,43,46,49],particularli:[12,21,49],partit:[4,6,10],partition:4,partition_kei:11,partition_key:13,partli:13,pass:[25,28,31,52],password:[6,9,13,19],password_a:19,password_b:19,passwordauthent:[6,49],past:46,patch:[10,13,23,24,25,27],path:[5,6,16,25,34,38,41,42,43,46,49,52],patter:19,pattern:[6,19,21],paus:[6,30],paxo:[13,46,52],peer:[6,46],peerip:46,penalti:[6,13],pend:[41,46],pendingcompact:46,pendingflush:46,pendingrangecalcul:46,pendingtask:46,pendingtasksbytablenam:46,pennsylvania:21,peopl:[28,30],per:[0,4,6,10,11,13,23,24,28,30,38,40,41,42,46,49,52],percent:46,percentag:[6,46,50],percentil:46,percentrepair:46,perdiskmemtableflushwriter_0:46,perfect:14,perform:[6,11,13,19,21,24,25,27],period:[6,43,46,49],perman:[11,30,41,43],permiss:[6,12],permission:9,permissions:9,permit:[6,19,40,49],persist:[4,30,38,43,49],perspect:30,pet:21,pfs:6,pgp:34,pgrep:34,phantom:32,phase:[51,52],phi:6,phone:[13,21],physic:[0,6,11,30,43,50],pid:[30,34],piec:[12,41,46],pin:[6,50],ping:28,pkcs5pad:6,pkill:34,place:[5,6,16,20,23,24,28,40,41,46,49,52],placehold:[14,52],plai:[14,21],plain:4,plan:[11,24,28],platform:19,platter:[6,43],player:[14,21],playorm:32,pleas:[5,6,11,13,14,15,21,23,26,29,30],plu:[14,41,46],plug:6,pluggabl:[19,49],plugin:46,poe:21,point:[6,10,17,21,23,26],pointer:14,polici:[6,28,49],pool:[6,46],popul:[11,18],popular:[26,43],port:[6,26],portion:[43,52],posit:[4,10,11,21,38,46,51],possbili:6,possess:19,possibl:[6,10,11,13,14,17,19,21,25,28,29,30,38,41,43,46,49,51],post:13,post_at:13,posted_at:13,posted_bi:11,posted_month:11,posted_tim:11,potenti:[0,6,9,11,12,14,25,41,43,49,51],power:6,pr3z1den7:21,practic:[11,12,13,49],pre:[6,17,21,43,49],preced:30,precis:[10,17,21,41],precondit:46,predefin:11,predict:13,prefer:[0,6,11,12,21,23,28,49,50],preferipv4stack:26,prefix:[11,12,21],prepar:6,preparedstatementscount:46,preparedstatementsevict:46,preparedstatementsexecut:46,preparedstatementsratio:46,prepend:21,prerequisit:33,present:[12,13,18,46],preserv:[6,17,19],press:34,pressur:46,pretti:52,prevent:[6,29,40],previou:[6,10,11,21,41,51],previous:6,primari:10,primarili:[6,11],primary:[9,11,13,14,18,21,29,40,42],primary_kei:[11,18],print:52,prior:[6,13,19,21],prioriti:28,privat:[6,23,49,50],privileg:[19,34,49],probabilist:[38,42],probabl:[6,11,29,38,41],problem:[5,6,14,24,25,30,49],problemat:21,proc:[6,30],proce:[25,42,51],procedur:[13,49],process:[0,6,14,24,25,26,28,29,30,34,40,42,43,46,49,51,52],prod_clust:52,produc:[13,14,41],product:[6,28,30,43,50],profil:13,program:[14,29],progress:[23,24,28,38,45],project:23,promin:11,prompt:52,propag:[6,11,14,23,25,50],proper:[11,21,30,49],properli:[6,25],properti:[6,11,19],propertyfilesnitch:[6,50],proport:[6,13],proportion:6,propos:[6,46],protect:[6,43],protocol:[6,25,30,35,46,49,52],provid:[0,5,6,11,12,13,14,15,17,21,26,28,35,40,41,42,43,46,49,50,51,53],proxim:[6,50],ps1:49,ps22dhd:13,pull:[29,41,46],purg:43,purpos:[11,12,13,21,43,49],push:[24,28,46],put:[15,28,31,41,51],python:[14,28,29],quak:[14,21],qualifi:[6,11,14,28],qualiti:49,queri:[6,10,11,12,13,14],question:[8,19],queu:[6,46],queue:[6,46],quickli:[30,41],quill:32,quit:[41,52],quorum:[0,49,52],quot:[9,10,11,12,14,17,19,52],quotat:19,quoted_identifi:12,quoted_nam:11,race:24,rack1:6,rack:[0,6,49,50],rackdc:[6,50],rackinferringsnitch:[6,50],raid0:43,raid1:43,raid5:43,rain:12,rais:[12,30],raison:9,ram:[38,42,43],random:[11,14,30,51],randomli:[0,6,51],randompartition:[6,13,14],range_slice:46,rangelat:46,rangemov:51,rangeslic:46,rapid:43,rare:[10,38],raspberri:43,rate:[6,11,46,49,52],ratefile:52,rather:[13,30,41,43],ratio:[6,42,43,46],raw:[6,14],reach:[6,28,30,40,41],read:[0,6,11,13,21,23,25,29,30,33,36,38],read_repair:46,read_repair_ch:[0,6,11,41,50],read_request_timeout:30,readabl:11,readi:[28,49],readlat:46,readrepair:46,readrepairstag:46,readstag:46,readwrit:49,real:[8,11,23,30],realiz:41,realli:[6,29,31],reason:[0,6,13,14,15,30,31,34,41,43,49,51],rebuild:[6,38,41,42,46],receiv:[6,14,28,30,41,43],recent:[6,28,29,43],reclaim:41,recogn:[13,26,28],recommend:[6,11,21,30,43,49,51],recompact:41,recompress:42,reconnect:49,record:[11,13,21,28,41],recov:[6,30,41],recreat:52,recv:34,recycl:[6,46],redistribut:6,redo:28,reduc:[6,30,42],reduct:6,redund:[0,23,25,28,43],refactor:40,refer:[6,11,12,13,14,15,21,23,29,30,34,35,52],referenc:6,reflect:41,refresh:[6,49,52],regard:[11,13],regardless:[0,6,19,28],regener:38,regexp:12,region:[6,50],regist:21,registri:49,regress:[25,29],regular:[12,26,29,30,46,52],regularstatementsexecut:46,reject:[6,13,30,40,49],rel:[6,21,52],relat:[8,10,12,13,26,28,41,46],releas:[6,10],relev:[13,19,21,28,42,49],reli:[6,14,21,30,51],reliabl:41,reload:6,remain:[6,13,14,21,24,41,46,51],remaind:[17,42],remedi:41,remot:[0,24,26],remov:[4,6,10,11,12,13,14,15,17,21,25,30,36,40],removenod:51,renam:21,rename:[9,21],reorder:6,repair:[0,4,6,11,30,36],repeat:[12,34,42,49],replac:[6,14,19,21,25,30,36,41,45],replace:[9,14],replace_address_first_boot:51,replai:[0,21,43,46],replica:[0,6,11,13,30,41,46,50,51],replication_factor:[0,11,49],repo:[24,26],report_writ:19,reportfrequency:52,repositori:[5,8,26,28,29,34],repres:[6,10,17,19,21,30,41,46,49,50,52],represent:[10,17],request:[0,6,13,19,20,29,30,38,41,43,45],request_response:46,requestresponsestag:46,requestschedul:6,requesttyp:46,requir:[0,6,11,13,14,19,23,24,25,26,28,30,38,42,43,49],require_client_auth:6,require_endpoint_verif:6,resampl:6,reserv:6,reset:[6,13],reset_bootstrap_progress:51,resid:[6,13,30,46],resolut:[6,13,30],resolv:[24,30],resourc:[19,49],resp:14,respect:[6,10,14,34,50],respond:[0,6,12],respons:[0,6,19,30,46,51],ressourc:21,rest:[6,11,12,21,25,51],restart:[30,41,49,51],restor:[41,51,52],restrict:[10,11,13,18,19,21],result:[0,6,8,10,11,12],resurrect:41,retain:[30,41],rethrow:23,retri:[0,6,21,46],retriev:[11,13,19],returns:[9,14],reus:25,review:[11,23],revok:[19,49],revoke:9,revoke_permission_stat:12,revoke_role_stat:12,rewrit:[38,41,42],rewritten:43,rfc:[14,21],rich:21,right:[6,26],risk:11,rmem_max:6,rmi:[30,49],robin:6,rogu:14,role:[6,9,10,12,15],role_a:19,role_admin:19,role_b:19,role_c:19,role_nam:19,role_opt:19,role_or_permission_stat:12,roles:9,roll:[30,49],root:[6,24,28,34],rotat:6,roughli:6,round:[6,13,41,46],roundrobin:6,roundrobinschedul:6,rout:[6,50],row:[0,4,6,10,11,13,14,15,17,18,29,35,38,42,43,46,52],rowcach:46,rowcachehit:46,rowcachehitoutofrang:46,rowcachemiss:46,rowindexentri:46,rows_per_partit:11,rpc:[6,46],rpc_min:6,rubi:14,rule:[6,12,14,28,30],run:[5,6,12,21,24,26,28],runtim:6,runtimeexcept:23,safe:[6,14,21,41,49],safeguard:43,safeti:[6,41,51],said:[11,28,30],same:[0,5,6,11,12,13,14,15,17,18,19,21,24,26,28],sampl:[4,6,12,14,46,52],sampler:46,san:43,sandbox:[6,14],satisfi:[0,23,43,46,51],satur:[6,46],save:[6,13,30,31,38,42,43,51],saved_cach:6,sbin:30,scala:14,scale:[6,29,42],scan:[6,13,38,46],scenario:24,scene:30,schedul:6,schema:[0,9,11,14,17,46,52],schema_own:19,scope:[19,46,49],score:[6,14,21,50],script:[6,14,26,29],scrub:[38,41,42,46],search:28,second:[6,11,12,13,21,30,40,43,49,52],secondari:[10,11,12,13,15],secondary_index_stat:12,secondaryindexmanag:46,section:[2,5,7,10,11,12,13,15,19,21,30,33,34,35,41,46,49,51,53],secur:[6,14,15],see:[0,4,6,10,11,12,13,14,17,19,21,26,28],seed:6,seedprovid:6,seek:[6,43,46],seen:[6,11],segment:[4,6,40,46,52],select:[6,9,10,11,12],select_claus:13,select_stat:[12,18],self:25,selinux:30,semant:[10,13,14],semi:30,send:[8,30],sens:[6,10,13,15,30],sensic:14,sensit:[11,12,14,17],sensor:21,sent:[0,6,21,30,46],separ:[4,6,11,13,23,28,31,41,43,49,51,52],seq:6,sequenc:12,sequenti:[6,43],seren:13,seri:[11,41,52],serial:6,serializingcacheprovid:6,serv:[13,43,49],server:[6,12,13,21,26,29,30,43,46,49],servic:[6,26,34,49,51],session:[6,19,49],set:[0,6,9,10,11,12,13,14,17,18],set_liter:21,setcompactionthreshold:41,setcompactionthroughput:41,setint:14,setlong:14,setstr:14,setter:[19,23],sever:[4,13,19,41,49],sfunc:[9,14],sha:24,shadow:41,share:[11,13,26],sharedpool:52,sharp:32,shed:30,shell:[35,36],shift:21,ship:[35,49,52],shortcut:18,shorter:49,shorthand:52,should:[0,5,6,10,11,12,13,14,17,19,21,25,26,28,29,30,31,32,33,35,38,41,42,43,46,49,50,51,52],shouldn:11,show:19,shown:[12,52],shrink:6,shut:6,shutdown:[6,43],side:[11,13,17,21,49],sign:[13,21,30],signific:[6,26,28,29,43],silent:14,similar:[6,13,14,42,43],similarli:[0,10,17,23,43],simpl:[11,26,29,49],simple_classnam:29,simple_select:13,simplequerytest:29,simplereplicationstrategi:49,simpleseedprovid:6,simplesnitch:[6,50],simpli:[0,6,11,13,14,17,21,26,29,41,43,46,51],simul:29,simultan:[6,43,52],sinc:[6,11,13,14,21,26,30,34,41,46,51],singl:[0,6,10,11,12,13,14,17,18,19,21,23,28],singleton:25,situat:[6,29,41],size:[4,6,11,21,23,30,31,38,40],sizetieredcompactionstrategi:[11,41],skip:[6,13,51,52],skipcols:52,skiprows:52,sla:25,slash:12,slf4j:23,slightli:6,slow:[6,50],slower:[6,11,38],slowli:[6,21],small:[6,11,13,21,30,41,43],smaller:[6,30,41,43,52],smallest:[0,11,14,46],smallint:[9,10,11,14,17,21],smith:21,smoother:10,smoothli:6,snappi:6,snappycompressor:[11,42],snapshot:[6,46],snitch:[6,36,45],socket:[6,49],sole:11,solid:[6,43],some:[0,6,9,11,12,13,14,21,26,28,29,30,31,40,41,42,46,49,51,52],some_funct:14,some_nam:12,someaggreg:14,somearg:14,somefunct:14,someon:[24,41],sometim:[6,12,13],someudt:14,somewher:34,soon:49,sort:[4,11,13,21,41,43],sourc:[5,6,8,14],source_elaps:52,space:[6,23,30,40,41,43,46],span:[6,13,41],sparingli:13,spark:32,spec:[25,35,46,52],speci:[11,18],special:[12,13,29,30,41,46],specif:[6,9,11,12,13,19,21,26,28,30,32,40,41,46,49,52],specifc:46,specifi:[0,6,10,11,12,13,14,16,18,19,21,26,30,35,40,41,42,46,49,51,52],specul:[0,46],speculativeretri:46,speed:6,spent:46,spike:30,spin:[6,43],spindl:6,spirit:[6,50],split:[23,30,41,46,52],spread:[6,50],sql:[13,15],squar:12,squash:28,ssd:[6,16,43],ssl:[6,30,45],sss:17,sstabl:2,sstable_s:41,sstable_size_in_mb:41,sstableexpiredblock:41,sstablesperreadhistogram:46,sstablewrit:23,stabil:28,stabl:[34,52],stack:6,stage:28,stale:[6,49],stall:[6,51],stand:[6,29],standalon:29,standard:[6,21,30,34,46],start:[0,6,13],starter:28,startup:[6,20,26,30,41,46,51],state:[6,14,38,41,43,46,51],statement:[6,10,11],static0:11,static1:11,statist:[4,41,46,52],statu:[19,25,28,30,34,52],stcs:11,stdin:52,stdout:52,step:[6,26,31,49],still:[0,6,10,13,14,17,21,23,49,51,52],stop:[6,34,52],stop_commit:6,stop_paranoid:6,storag:2,storage:[9,11],storageservic:[6,23],store:[0,4,6,10,11,12,13,21],store_typ:6,straight:51,straightforward:40,strategi:[0,6,11],stream:[4,6],street:21,strength:6,strict:[10,41],stricter:11,strictli:[8,11,14],string:[6,10,11,12,13,14,16,17,19,20,21,46,52],strong:0,strongli:[6,11,12,49],strongly:6,structur:[4,6,19,25,38,46],stub:49,style:6,stype:[9,14],sub:[11,13,21,34,41],subdirectori:[6,20],subject:[6,14,49],submiss:28,submit:[28,29,36],subscrib:8,subscript:8,subsequ:[6,13,30,41,42],subset:[19,41,52],substitut:34,subsystem:49,subvert:41,succed:46,succesfulli:46,success:[0,52],sudden:6,sudo:[30,34],suffici:[6,43],suggest:[12,28,43],suit:[6,28,29,49],suitabl:[13,14,25,28],summari:[4,6,46],sun:[23,49],sunx509:6,supersed:10,superus:49,superuser:[9,19,49],suppli:[13,24],support:[0,6,10,11,12,13,14,15,16],suppos:13,sure:[6,8,23,26,28,29,30,31,34,41],surplu:30,surpris:0,surround:[17,52],suscept:14,suspect:[5,28],suspend:26,swamp:30,swap:6,symmetri:17,symptom:30,sync:[6,30,46],synchron:6,synonym:19,syntact:[11,19],syntax:[10,12,13,14,19,21,41,42],sysctl:30,sysintern:6,system:[6,11,14,19,29,30,31,35,41,43,46,49,52],system_auth:[6,49],tab:23,tabl:[0,4,6,10],table1:19,table:[9,10],table_nam:[11,13,16,19,20,41],table_opt:[11,18],tables:[19,52],tag:[21,25,28],take:[6,10,11,13,14,21,25,26,28,30,38,41,42,43,51],taken:[6,40,41,46],tar:34,tarbal:[31,33],target:[11,19,26,29,41],task:[26,28,46,52],tcp:[6,30],tcp_keepalive_intvl:30,tcp_keepalive_prob:30,tcp_keepalive_tim:30,tcp_nodelai:6,tcp_wmem:6,teach:[6,50],team:30,technetwork:6,technic:[11,15],technot:6,tee:34,tell:[6,13,25,30,31,46],temporari:49,temporarili:6,tenanc:6,tend:[6,30,43],tendenc:6,terabyt:42,term:6,termin:[12,52],ternari:23,test:[6,8,23,25],test_keyspac:49,testabl:[25,28],testbatchandlist:29,testmethod1:29,testmethod2:29,testsom:29,teststaticcompactt:29,text:[4,9,11,12,13,14,17,21,40,42,49],than:[0,6,11,12,13,14,15,18,21,23,28],thei:[6,9,10,11,12,13,14,15,18,19,21,23,25,28,29],them:[6,10,11,13,14,21,23,28,29,30,35,38,41,46,49],themselv:[13,19],theoret:11,therefor:[28,29,49],thi:[0,2,4,5,6,7,10,11,12,13,14,15,17,18,19,21,23,24,25,26,28,29,30,31,33,34,36,38,40,41,42,43,46,49,50,51,52,53,54],thing:[6,21,24,28,30,33,41],third:[25,46],thobb:52,those:[11,12,13,14,16,17,18,19,21,28,30,40,41,49,52],though:[6,10,12,21],thousand:52,thousandssep:52,thread:[6,43,46,49],threadpool:45,threadpoolnam:46,threadprioritypolici:26,three:[0,6,38,41,42,49,52],threshold:[4,6,40,43,50],thrift:[6,11,15,30,46],throttl:6,throttle_limit:6,through:[0,5,10,11,12,13,26,28,30,35,40,41,52],throughout:49,throughput:[0,6,41,42,43,46],throwabl:[25,29],thrown:21,thu:[6,10,11,12,13,18,21,30,46,50,51],thumb:[6,28],thusli:21,ticket:[5,24,25,28,29,40],tie:30,tighter:6,tightli:6,tild:52,time:[0,6,8,9,10,11,12,13],timelin:11,timeout:[6,21,30,46,52],timer:[6,46],timestamp:[4,9,10,11,13,14,15,17],timeunit:41,timeuuid:[9,10,11],timewindowcompactionstrategi:11,timezon:[17,52],tini:[6,41],tinyint:[9,10,11,14,17,21],tjake:23,tls:[6,45],tls_dhe_rsa_with_aes_128_cbc_sha:6,tls_dhe_rsa_with_aes_256_cbc_sha:6,tls_ecdhe_rsa_with_aes_128_cbc_sha:6,tls_ecdhe_rsa_with_aes_256_cbc_sha:6,tls_rsa_with_aes_128_cbc_sha:6,tls_rsa_with_aes_256_cbc_sha:6,toc:4,todai:12,todat:14,togeth:[11,13,14,41],toggl:49,tojson:15,toler:38,tom:13,tombston:[4,6,11,17,30],tombstone_compaction_interv:41,tombstone_threshold:41,tombstonescannedhistogram:46,ton:29,too:[6,11,12,14,21,25,41],tool:[6,12,28],top:[13,21,28],topic:52,topolog:[6,50],total:[6,13,40,41,46],totalblockedtask:46,totalcommitlogs:46,totalcompactionscomplet:46,totaldiskspaceus:46,totalhint:46,totalhintsinprogress:46,totallat:46,totimestamp:14,touch:[8,30,41],tough:29,tounixtimestamp:14,toward:11,trace:[6,46,52],track:[6,41,46],tracker:28,tradeoff:[0,6],tradit:[41,42],traffic:[6,50],trail:23,transact:[13,20,46],transfer:[6,30,49],transform:13,transit:[10,19],translat:6,transpar:[6,30],transport:[6,26,46],treat:[0,6,10,30,50],tree:[26,46],tri:41,trigger:[4,6,9,12,15],trigger_nam:20,trigger_stat:12,trip:13,trivial:49,troubleshoot:[25,36],truesnapshotss:46,truli:9,truncat:[6,11],truncate:[9,10],truncate_stat:12,trunk:[24,25,26,28],trust:49,trustor:6,truststor:[6,49],truststore_password:6,truststorepassword:49,tserverfactori:6,ttl:[4,6,9,10,11],tty:52,tune:[30,38,43],tupl:[6,10,12,13,14,15,17],tuple:[9,21],tuple_liter:[12,13],tuple_typ:21,tuplevalu:[10,14],turn:[0,6,28,30,49],twcs:[11,41],twice:[6,21],two:[0,6,11,12,13,14,17,26],txt:[4,14,24,25,28],type:[0,6],type_hint:12,typeasblob:14,typecodec:14,types:52,typic:[0,6,13,30,38,41,43,46,49,52],ubuntu:26,udf:[6,14],udf_stat:12,udfcontext:[10,14],udt:[14,17],udt_liter:12,udt_nam:21,udt_stat:12,udtarg:14,udtnam:14,udtvalu:[10,14],ulimit:30,unabl:[6,25],unaffect:21,unavail:[6,11,46,49,51],unblock:46,unbound:21,unchecked_tombstone_compact:41,uncom:[6,46,49],uncomment:6,uncommon:28,uncompress:[6,42,46],undelet:41,under:[6,21,23,29,46,49],underli:[6,18,41,49],understand:[6,28,30],unencrypt:[6,49],unexpectedli:21,unfinishedcommit:46,unflush:40,unfortun:29,uniqu:[11,14,21],unit:25,unixtimestampof:[10,14],unless:[6,11,13,16,18,19,21,23,40,49,50],unlik:[6,10,13],unlike:[13,21],unlimit:[6,30,52],unlogged:9,unnecessari:[25,51],unnecessarili:40,unpredict:13,unprepar:46,unquot:12,unquoted_identifi:12,unquoted_nam:11,unrel:28,unreleas:28,unsecur:49,unset:[6,10,13,17],unsign:21,unspecifi:6,unsubscrib:8,untar:34,until:[0,6,21,38,40,41,42,49,50],unuse:6,unusu:25,updat:[6,10,11,12,13,14,18,19,21,25,29],update:[9,10],update_paramet:13,update_stat:[12,13],upgrad:[6,41],upgradesst:[38,41,42],upload:28,upon:[6,21,38,42],upper:[12,17,41,49],upstream:28,url:24,usag:[4,6,11,21],usage:[40,46,52],use:[6,9],use_stat:12,usecas:41,useconcmarksweepgc:26,usecondcardmark:26,used:46,useecassandra:49,useparnewgc:26,user1:13,user2:13,user3:13,user4:13,user:[5,6,8,9,10,11,12,13],user_count:13,user_defined_typ:21,user_funct:19,user_nam:13,user_occup:13,user_opt:19,useraction:13,userid:[11,13,14],userindex:16,usernam:[6,13,14,49,52],users:9,usethreadprior:26,using:[9,11,13,16,20,21],usr:52,usual:[6,13,21,24,29,38,49],utc:[17,52],utd:11,utf8:[21,52],utf:52,util:[14,25,41,52],uuid:[9,10,11,12],val0:11,val1:11,val:14,valid:[6,10,11,12,13,14,17,21,30,41,42,46,49,52],validationexecutor:46,valu:[6,10,11,12,13,14,16,17,21,25,26,30,38,41,46,49,50,52],value1:13,value2:13,valueof:14,values:[9,11,13,14,16,17,21],varchar:[9,11,14,17,21],vari:[6,42],variabl:[6,10,12,17,21,26],variant:12,varieti:40,varint:[9,11,14,17,21],variou:[26,29,43,49],veri:[6,11,13,28,29,30,38,41,42,43],verifi:[28,30,32,34,42],version:[5,6],vertic:52,via:[6,8,10,19,25,30,31,41,42,43,46,49,50],view:[6,10,11,12,15],view_nam:18,viewlockacquiretim:46,viewmutationstag:46,viewpendingmut:46,viewreadtim:46,viewreplicasattempt:46,viewreplicassuccess:46,viewwrit:46,viewwritelat:46,virtual:[0,6,30,41,46,51],visibl:[11,19,23,38],vnode:[6,42],volum:[6,40,42],vulner:[6,49],wai:[4,6,11,12,15,17,18,21,24,26,29,30,41,42],wait:[0,6,11,28,30,46],waitingoncommit:46,waitingonfreememtablespac:46,waitingonsegmentalloc:46,want:[6,11,13,26,28,29,30,49,51],warn:[6,11,23],washington:21,wasn:10,wast:6,weaker:0,websit:34,weight:[6,46],welcom:8,well:[6,11,13,14,17,21,25,26,40,42,43,49,50],went:46,were:[6,9,10,19,25,26,41,46],what:[11,13,21,27],whatev:[10,13,30],whedon:13,when:[4,6,9,10,11,12,13,14,15,16,17,19,21,23,25,28,29],where:[0,4,6,9,10,11,12],where_claus:13,wherea:49,whether:[0,6,9,11,13,26,41,50,52],which:[0,4,5,6,10,11,12,13,14,15,16,18,19,20,21,28,29,30,31,34,35,38,40,41,42,43,46,49,50,51],whichev:[0,6],whitelist:49,who:[19,28,30],whole:[6,11,13,14,21,41],whose:[11,21],why:[25,28],wide:[4,40],width:12,wiki:[6,26],wildcard:[13,19],window:[0,6],winner:30,wip:[26,28],wipe:[30,51],wire:30,wise:11,wish:[6,41,46],within:[0,4,6,11,12,13,16,28,30,41,43,46,49],without:[6,11,12,13,14,19,21,24,26,28,29,30,40],wmem_max:6,won:[6,13,24],wont:41,word:[10,11,12,18,19,21,30],work:[6,10,11,14,15,17],worker:52,workload:[6,25,38,41,43],workspac:26,worktre:26,worri:[28,30],wors:[6,50],worst:[6,28],worthwhil:6,would:[6,12,13,14,17,19,26,28,29,36,41,42,43,49,50],wrap:50,write:[0,4,6,10,11,13,21,23,25,29,30,40,41,42,43,46,49,50,51,52],write_request_timeout:30,writelat:46,writer:[6,23],writetim:14,writetime:9,writetimeoutexcept:6,written:[4,6,20,30,38,41,42,46],wrong:6,wrte:46,www:[6,11,34],xlarg:43,xml:31,xmn220m:26,xms1024m:26,xmx1024m:26,xmx:43,xss256k:26,xvf:34,yaml:[6,14,31,34],year:13,yet:[11,46],yield:[13,51],you:[5,6,8,10,11,12,13,14,16,17,18,20,21,23,24,26,27],younger:14,your:[0,5,6,8,10,11,12,23,26,28,29,30,31,34,36,41,43,49,50,52],yourself:[24,29],yyyi:21,yyyy:17,z_0:[11,16,18],zero:[6,10,30,46,50],zip:21,zipcod:21,zone:[6,21,50],zzzzz:28},titles:["Dynamo","Guarantees","Architecture","Overview","Storage Engine","Reporting Bugs and Contributing","Cassandra Configuration File","Configuring Cassandra","Contact us","Appendices","Changes","Data Definition","Definitions","Data Manipulation","Functions","The Cassandra Query Language (CQL)","Secondary Indexes","JSON Support","Materialized Views","Security","Triggers","Data Types","Data Modeling","Code Style","How-to Commit","Review Checklist","Building and IDE Integration","Cassandra Development","Contributing Code Changes","Testing","Frequently Asked Questions","Configuring Cassandra","Client drivers","Getting Started","Installing Cassandra","Inserting and querying","Welcome to Apache Cassandra&#8217;s documentation!","Backups","Bloom Filters","Bulk Loading","Change Data Capture","Compaction","Compression","Hardware Choices","Hints","Operating Cassandra","Monitoring","Read repair","Repair","Security","Snitch","Adding, replacing, moving and removing nodes","cqlsh: the CQL shell","Cassandra Tools","Nodetool","Troubleshooting"],titleterms:{"class":50,"delete":13,"function":[13,14,17],"import":23,"long":29,"new":30,"static":11,"switch":41,access:49,add:30,adding:51,address:30,advanc:42,after:51,aggreg:14,aggregat:14,aggregate:14,alias:13,all:[19,30],alloc:51,allocate_tokens_for_keyspac:6,allow:13,alter:[11,18,19],altere:21,ani:30,apach:36,appendic:9,appendix:9,architectur:2,asked:30,assign:51,auth:49,authent:[6,19,49],author:[6,49],auto_snapshot:6,automat:19,avg:14,backup:37,batch:[13,30],batch_size_fail_threshold_in_kb:6,batch_size_warn_threshold_in_kb:6,batchlog_replay_throttle_in_kb:6,befor:28,benefit:42,binari:34,blob:[14,30],bloom:38,boilerpl:23,bootstrap:[30,41,51],branch:28,broadcast_address:6,broadcast_rpc_address:6,buffer_pool_use_heap_if_exhaust:6,bufferpool:46,bug:[5,28],build:26,bulk:[30,39],cach:[11,46,49],call:30,can:30,captur:40,capture:52,cas_contention_timeout_in_m:6,cassandra:[6,7,15,17,26,27,29,30,31,34,36,40,45,49,53],cast:14,cdc:40,cdc_enabl:6,cdc_free_space_check_interval_m:6,cdc_raw_directori:6,cdc_total_space_in_mb:6,chang:[10,28,30,31,38,40,41],characterist:21,checklist:25,choic:43,choos:28,claus:13,cleanup:51,clear:52,client:[32,35,46,49],client_encryption_opt:6,clojur:32,cloud:43,cluster:[11,30],cluster_nam:6,code:[23,28],collect:[21,41],column:11,column_index_cache_size_in_kb:6,column_index_size_in_kb:6,command:[26,41,52],comment:12,commit:24,commit_failure_polici:6,commitlog:[4,46],commitlog_compress:6,commitlog_directori:6,commitlog_segment_size_in_mb:6,commitlog_sync:6,commitlog_sync_batch_window_in_m:6,commitlog_sync_period_in_m:6,commitlog_total_space_in_mb:6,commitlogseg:40,common:[11,41,43],compact:[11,41,46],compaction_large_partition_warning_threshold_mb:6,compaction_throughput_mb_per_sec:6,compactionstrategi:41,compat:[11,52],compress:[11,42],concern:41,concurrent_compactor:6,concurrent_counter_writ:6,concurrent_materialized_view_writ:6,concurrent_read:6,concurrent_writ:6,condition:19,configur:[6,7,31,40,42],connect:30,consider:11,consist:0,consistency:52,constant:12,contact:8,contribut:[5,28],control:19,convent:[12,23],convers:14,copy:52,count:14,counter:[13,21],counter_cache_keys_to_sav:6,counter_cache_save_period:6,counter_cache_size_in_mb:6,counter_write_request_timeout_in_m:6,cpu:43,cql:[9,11,15,46,52],cqlsh:[35,52],cqlshrc:52,creat:[19,21,28],create:[11,14,16,18,19,20],credenti:19,credentials_update_interval_in_m:6,credentials_validity_in_m:6,cross_node_timeout:6,cstar_perf:29,custom:21,cython:52,data:[11,13,17,19,21,22,30,40,41,51],data_file_directori:6,databas:19,date:21,dead:51,debian:34,debug:26,defin:[14,21],definit:[11,12],defragment:41,delet:[30,41],depend:52,describe:52,detail:41,detect:0,develop:27,directori:[31,41],disabl:40,disk:[30,43],disk_failure_polici:6,disk_optimization_strategi:6,document:36,doe:30,driver:[32,35],drop:[11,14,16,18,19,20,21,30],droppedmessag:46,dtest:29,dynam:50,dynamic_snitch_badness_threshold:6,dynamic_snitch_reset_interval_in_m:6,dynamic_snitch_update_interval_in_m:6,dynamo:0,each:30,eclips:26,email:30,enabl:[40,49],enable_scripted_user_defined_funct:6,enable_user_defined_funct:6,encode:17,encryption:49,endpoint_snitch:6,engine:4,entri:30,environ:31,erlang:32,error:30,even:30,exception:23,exist:30,exit:52,expand:52,expir:41,factor:30,fail:[30,51],failur:[0,30],file:[6,23,34],file_cache_size_in_mb:6,filedescriptorratio:46,filter:[13,38],fix:28,format:23,frequent:30,from:[26,30,34,52],fromjson:17,fulli:41,further:40,garbag:41,garbagecollector:46,gc_grace_second:41,gc_log_threshold_in_m:6,gc_warn_threshold_in_m:6,gener:23,get:33,give:30,gossip:0,grace:41,grant:19,group:13,guarante:1,handl:23,hang:51,happen:30,hardwar:43,haskel:32,heap:30,help:52,hint:44,hinted_handoff_disabled_datacent:6,hinted_handoff_en:6,hinted_handoff_throttle_in_kb:6,hintedhandoff:46,hints_compress:6,hints_directori:6,hints_flush_period_in_m:6,host:[30,52],how:[24,30],ide:[23,26],idea:26,identifi:12,impact:42,incremental_backup:6,index:[16,46],index_summary_capacity_in_mb:6,index_summary_resize_interval_in_minut:6,initial_token:6,insert:[13,17,35],install:34,installat:34,integrat:[26,49],intellij:26,inter:49,inter_dc_stream_throughput_outbound_megabits_per_sec:6,inter_dc_tcp_nodelai:6,intern:19,internal:49,internode_authent:6,internode_compress:6,internode_recv_buff_size_in_byt:6,internode_send_buff_size_in_byt:6,irc:8,java:[30,32],jconsol:30,jmx:[30,41,46,49],join:30,json:17,jvm:46,kei:[11,16,18],key_cache_keys_to_sav:6,key_cache_save_period:6,key_cache_size_in_mb:6,keyspac:[30,46],keyspace:11,keyword:[9,12],lang:30,languag:15,larg:30,lcs:41,level:[0,41],limit:13,line:[26,52],list:[8,19,21,30],listen:30,listen_address:[6,30],listen_interfac:6,listen_interface_prefer_ipv6:6,listen_on_broadcast_address:6,liter:21,live:30,load:[30,39],locat:31,log:[30,31,41],login:52,lot:30,made:30,mail:8,main:31,major:41,manipul:13,manual:51,map:[16,21,30],materi:18,materialized:18,max:[14,30],max_hint_window_in_m:6,max_hints_delivery_thread:6,max_hints_file_size_in_mb:6,max_value_size_in_mb:6,maxtimeuuid:14,mean:30,memori:[30,43,46],memorypool:46,memtabl:4,memtable_allocation_typ:6,memtable_cleanup_threshold:6,memtable_flush_writ:6,memtable_heap_space_in_mb:6,memtable_offheap_space_in_mb:6,merg:41,messag:30,method:30,metric:46,min:14,minor:41,mintimeuuid:14,model:22,monitor:[46,51],more:[30,41],move:51,movement:51,multilin:23,nativ:[14,21],native_transport_max_concurrent_connect:6,native_transport_max_concurrent_connections_per_ip:6,native_transport_max_frame_size_in_mb:6,native_transport_max_thread:6,native_transport_port:6,native_transport_port_ssl:6,net:32,networktopologystrategi:0,newer:26,node:[30,49,51],nodej:32,nodetool:[30,41,54],noteworthi:21,now:14,num_token:6,onli:30,oper:30,operat:[41,42,45],option:[11,18,41,52],optional:52,order:11,ordere:13,other:[11,30],outofmemoryerror:30,overview:[3,40],packag:34,paging:52,paramet:[13,40,41],partit:11,partition:6,password:49,patch:28,perform:29,permiss:19,permission:19,permissions:19,permissions_update_interval_in_m:6,permissions_validity_in_m:6,phi_convict_threshold:6,php:32,pick:0,point:30,port:30,prepar:12,prepared_statements_cache_size_mb:6,prerequisit:34,primari:[11,18],progress:51,project:26,properti:31,python:32,pytz:52,queri:[15,35],question:30,rang:[0,51],range_request_timeout_in_m:6,read:[40,47],read_request_timeout_in_m:6,refus:30,releas:28,remot:30,remov:[41,51],repair:[41,47,48],replac:51,replic:[0,30],report:[5,30,46],request:46,request_schedul:6,request_scheduler_id:6,request_scheduler_opt:6,request_timeout_in_m:6,reserv:9,result:13,resum:51,revers:11,review:25,revoke:19,rhel:30,right:28,ring:[0,30],role:[19,49],role_manag:6,roles:19,roles_update_interval_in_m:6,roles_validity_in_m:6,row_cache_class_nam:6,row_cache_keys_to_sav:6,row_cache_save_period:6,row_cache_size_in_mb:6,rpc_address:6,rpc_interfac:6,rpc_interface_prefer_ipv6:6,rpc_keepal:6,rpc_max_thread:6,rpc_min_thread:6,rpc_port:6,rpc_recv_buff_size_in_byt:6,rpc_send_buff_size_in_byt:6,rpc_server_typ:6,rubi:32,run:29,runtim:31,rust:32,safety:6,sai:30,same:30,saved_caches_directori:6,scala:32,scalar:14,secondari:16,secur:[19,49],see:30,seed:30,seed_provid:6,select:[13,17,18],selector:13,serial:52,server_encryption_opt:6,session:52,set:[19,21,26,30],setup:26,share:52,shell:52,show:[30,52],signatur:14,simplestrategi:0,singl:[30,41],size:41,slow_query_log_timeout_in_m:6,snapshot_before_compact:6,snitch:50,sourc:26,source:52,special:52,speed:30,ssl:49,ssl_storage_port:6,sstabl:[4,41,46],sstable_preemptive_open_interval_in_mb:6,stai:30,standard:49,start:[26,28,33],start_native_transport:6,start_rpc:6,starv:41,statement:[12,18,23],stcs:41,storag:[4,46],storage_port:6,store:30,strategi:41,stream:[30,46,51],stream_throughput_outbound_megabits_per_sec:6,streaming_socket_timeout_in_m:6,stress:29,style:23,sum:14,support:17,tabl:[11,40,46],table:11,tarbal:34,term:12,test:[26,29],than:30,thei:30,though:30,threadpool:46,thresholds:6,thrift_framed_transport_size_in_mb:6,thrift_prepared_statements_cache_size_mb:6,tick:28,tier:41,time:[14,21,41],timestamp:[21,30],timeuuid:14,timewindowcompactionstrategi:41,tls:49,tock:28,todo:[0,1,3,4,11,22,37,39,44,47,48,54],tojson:17,token:[0,14,51],tombston:41,tombstone_failure_threshold:6,tombstone_warn_threshold:6,tool:[29,53],top:30,tracetype_query_ttl:6,tracetype_repair_ttl:6,tracing:52,transparent_data_encryption_opt:6,trickle_fsync:6,trickle_fsync_interval_in_kb:6,trigger:[20,41],troubleshoot:55,truncate:11,truncate_request_timeout_in_m:6,ttl:[13,41],tunabl:0,tupl:21,two:30,type:[9,11,17,21,41,46],udt:21,unabl:30,unit:[26,29],unlogged:13,unlogged_batch_across_partitions_warn_threshold:6,unrepair:41,unsubscrib:30,updat:30,update:13,usag:30,use:[11,42],user:[14,19,21],users:19,using:26,uuid:14,variabl:31,version:[10,52],view:18,warn:40,welcom:36,what:[28,30],when:[30,41],where:13,whitespac:23,why:[30,41],window:41,windows_timer_interv:6,without:41,work:[21,28],write_request_timeout_in_m:6,writetime:13,yaml:40,you:28}})
\ No newline at end of file
diff --git a/src/doc/3.10/tools/cqlsh.html b/src/doc/3.10/tools/cqlsh.html
deleted file mode 100644
index cd9f347..0000000
--- a/src/doc/3.10/tools/cqlsh.html
+++ /dev/null
@@ -1,483 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Cassandra Tools"
-
-doc-title: "cqlsh: the CQL shell"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Cassandra Tools" href="index.html"/>
-      <link rel="next" title="Nodetool" href="nodetool.html"/>
-      <link rel="prev" title="Cassandra Tools" href="index.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Tools</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">cqlsh: the CQL shell</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#compatibility">Compatibility</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#optional-dependencies">Optional Dependencies</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#cqlshrc">cqlshrc</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#command-line-options">Command Line Options</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#special-commands">Special Commands</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="nodetool.html">Nodetool</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="cqlsh-the-cql-shell">
-<span id="cqlsh"></span><h1>cqlsh: the CQL shell<a class="headerlink" href="#cqlsh-the-cql-shell" title="Permalink to this headline">¶</a></h1>
-<p>cqlsh is a command line shell for interacting with Cassandra through CQL (the Cassandra Query Language).  It is shipped
-with every Cassandra package, and can be found in the bin/ directory alongside the cassandra executable.  cqlsh utilizes
-the Python native protocol driver, and connects to the single node specified on the command line.</p>
-<div class="section" id="compatibility">
-<h2>Compatibility<a class="headerlink" href="#compatibility" title="Permalink to this headline">¶</a></h2>
-<p>cqlsh is compatible with Python 2.7.</p>
-<p>In general, a given version of cqlsh is only guaranteed to work with the version of Cassandra that it was released with.
-In some cases, cqlsh make work with older or newer versions of Cassandra, but this is not officially supported.</p>
-</div>
-<div class="section" id="optional-dependencies">
-<h2>Optional Dependencies<a class="headerlink" href="#optional-dependencies" title="Permalink to this headline">¶</a></h2>
-<p>cqlsh ships with all essential dependencies.  However, there are some optional dependencies that can be installed to
-improve the capabilities of cqlsh.</p>
-<div class="section" id="pytz">
-<h3>pytz<a class="headerlink" href="#pytz" title="Permalink to this headline">¶</a></h3>
-<p>By default, cqlsh displays all timestamps with a UTC timezone.  To support display of timestamps with another timezone,
-the <a class="reference external" href="http://pytz.sourceforge.net/">pytz</a> library must be installed.  See the <code class="docutils literal"><span class="pre">timezone</span></code> option in <a class="reference internal" href="#cqlshrc">cqlshrc</a> for
-specifying a timezone to use.</p>
-</div>
-<div class="section" id="cython">
-<h3>cython<a class="headerlink" href="#cython" title="Permalink to this headline">¶</a></h3>
-<p>The performance of cqlsh&#8217;s <code class="docutils literal"><span class="pre">COPY</span></code> operations can be improved by installing <a class="reference external" href="http://cython.org/">cython</a>.  This will
-compile the python modules that are central to the performance of <code class="docutils literal"><span class="pre">COPY</span></code>.</p>
-</div>
-</div>
-<div class="section" id="cqlshrc">
-<h2>cqlshrc<a class="headerlink" href="#cqlshrc" title="Permalink to this headline">¶</a></h2>
-<p>The <code class="docutils literal"><span class="pre">cqlshrc</span></code> file holds configuration options for cqlsh.  By default this is in the user&#8217;s home directory at
-<code class="docutils literal"><span class="pre">~/.cassandra/cqlsh</span></code>, but a custom location can be specified with the <code class="docutils literal"><span class="pre">--cqlshrc</span></code> option.</p>
-<p>Example config values and documentation can be found in the <code class="docutils literal"><span class="pre">conf/cqlshrc.sample</span></code> file of a tarball installation.  You
-can also view the latest version of <a class="reference external" href="https://github.com/apache/cassandra/blob/trunk/conf/cqlshrc.sample">cqlshrc online</a>.</p>
-</div>
-<div class="section" id="command-line-options">
-<h2>Command Line Options<a class="headerlink" href="#command-line-options" title="Permalink to this headline">¶</a></h2>
-<p>Usage:</p>
-<p><code class="docutils literal"><span class="pre">cqlsh</span> <span class="pre">[options]</span> <span class="pre">[host</span> <span class="pre">[port]]</span></code></p>
-<p>Options:</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">-C</span></code> <code class="docutils literal"><span class="pre">--color</span></code></dt>
-<dd>Force color output</dd>
-<dt><code class="docutils literal"><span class="pre">--no-color</span></code></dt>
-<dd>Disable color output</dd>
-<dt><code class="docutils literal"><span class="pre">--browser</span></code></dt>
-<dd>Specify the browser to use for displaying cqlsh help.  This can be one of the <a class="reference external" href="https://docs.python.org/2/library/webbrowser.html">supported browser names</a> (e.g. <code class="docutils literal"><span class="pre">firefox</span></code>) or a browser path followed by <code class="docutils literal"><span class="pre">%s</span></code> (e.g.
-<code class="docutils literal"><span class="pre">/usr/bin/google-chrome-stable</span> <span class="pre">%s</span></code>).</dd>
-<dt><code class="docutils literal"><span class="pre">--ssl</span></code></dt>
-<dd>Use SSL when connecting to Cassandra</dd>
-<dt><code class="docutils literal"><span class="pre">-u</span></code> <code class="docutils literal"><span class="pre">--user</span></code></dt>
-<dd>Username to authenticate against Cassandra with</dd>
-<dt><code class="docutils literal"><span class="pre">-p</span></code> <code class="docutils literal"><span class="pre">--password</span></code></dt>
-<dd>Password to authenticate against Cassandra with, should
-be used in conjunction with <code class="docutils literal"><span class="pre">--user</span></code></dd>
-<dt><code class="docutils literal"><span class="pre">-k</span></code> <code class="docutils literal"><span class="pre">--keyspace</span></code></dt>
-<dd>Keyspace to authenticate to, should be used in conjunction
-with <code class="docutils literal"><span class="pre">--user</span></code></dd>
-<dt><code class="docutils literal"><span class="pre">-f</span></code> <code class="docutils literal"><span class="pre">--file</span></code></dt>
-<dd>Execute commands from the given file, then exit</dd>
-<dt><code class="docutils literal"><span class="pre">--debug</span></code></dt>
-<dd>Print additional debugging information</dd>
-<dt><code class="docutils literal"><span class="pre">--encoding</span></code></dt>
-<dd>Specify a non-default encoding for output (defaults to UTF-8)</dd>
-<dt><code class="docutils literal"><span class="pre">--cqlshrc</span></code></dt>
-<dd>Specify a non-default location for the <code class="docutils literal"><span class="pre">cqlshrc</span></code> file</dd>
-<dt><code class="docutils literal"><span class="pre">-e</span></code> <code class="docutils literal"><span class="pre">--execute</span></code></dt>
-<dd>Execute the given statement, then exit</dd>
-<dt><code class="docutils literal"><span class="pre">--connect-timeout</span></code></dt>
-<dd>Specify the connection timeout in seconds (defaults to 2s)</dd>
-<dt><code class="docutils literal"><span class="pre">--request-timeout</span></code></dt>
-<dd>Specify the request timeout in seconds (defaults to 10s)</dd>
-<dt><code class="docutils literal"><span class="pre">-t</span></code> <code class="docutils literal"><span class="pre">--tty</span></code></dt>
-<dd>Force tty mode (command prompt)</dd>
-</dl>
-</div>
-<div class="section" id="special-commands">
-<h2>Special Commands<a class="headerlink" href="#special-commands" title="Permalink to this headline">¶</a></h2>
-<p>In addition to supporting regular CQL statements, cqlsh also supports a number of special commands that are not part of
-CQL.  These are detailed below.</p>
-<div class="section" id="consistency">
-<h3><code class="docutils literal"><span class="pre">CONSISTENCY</span></code><a class="headerlink" href="#consistency" title="Permalink to this headline">¶</a></h3>
-<p><cite>Usage</cite>: <code class="docutils literal"><span class="pre">CONSISTENCY</span> <span class="pre">&lt;consistency</span> <span class="pre">level&gt;</span></code></p>
-<p>Sets the consistency level for operations to follow.  Valid arguments include:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">ANY</span></code></li>
-<li><code class="docutils literal"><span class="pre">ONE</span></code></li>
-<li><code class="docutils literal"><span class="pre">TWO</span></code></li>
-<li><code class="docutils literal"><span class="pre">THREE</span></code></li>
-<li><code class="docutils literal"><span class="pre">QUORUM</span></code></li>
-<li><code class="docutils literal"><span class="pre">ALL</span></code></li>
-<li><code class="docutils literal"><span class="pre">LOCAL_QUORUM</span></code></li>
-<li><code class="docutils literal"><span class="pre">LOCAL_ONE</span></code></li>
-<li><code class="docutils literal"><span class="pre">SERIAL</span></code></li>
-<li><code class="docutils literal"><span class="pre">LOCAL_SERIAL</span></code></li>
-</ul>
-</div>
-<div class="section" id="serial-consistency">
-<h3><code class="docutils literal"><span class="pre">SERIAL</span> <span class="pre">CONSISTENCY</span></code><a class="headerlink" href="#serial-consistency" title="Permalink to this headline">¶</a></h3>
-<p><cite>Usage</cite>: <code class="docutils literal"><span class="pre">SERIAL</span> <span class="pre">CONSISTENCY</span> <span class="pre">&lt;consistency</span> <span class="pre">level&gt;</span></code></p>
-<p>Sets the serial consistency level for operations to follow.  Valid arguments include:</p>
-<ul class="simple">
-<li><code class="docutils literal"><span class="pre">SERIAL</span></code></li>
-<li><code class="docutils literal"><span class="pre">LOCAL_SERIAL</span></code></li>
-</ul>
-<p>The serial consistency level is only used by conditional updates (<code class="docutils literal"><span class="pre">INSERT</span></code>, <code class="docutils literal"><span class="pre">UPDATE</span></code> and <code class="docutils literal"><span class="pre">DELETE</span></code> with an <code class="docutils literal"><span class="pre">IF</span></code>
-condition). For those, the serial consistency level defines the consistency level of the serial phase (or “paxos” phase)
-while the normal consistency level defines the consistency for the “learn” phase, i.e. what type of reads will be
-guaranteed to see the update right away. For example, if a conditional write has a consistency level of <code class="docutils literal"><span class="pre">QUORUM</span></code> (and
-is successful), then a <code class="docutils literal"><span class="pre">QUORUM</span></code> read is guaranteed to see that write. But if the regular consistency level of that
-write is <code class="docutils literal"><span class="pre">ANY</span></code>, then only a read with a consistency level of <code class="docutils literal"><span class="pre">SERIAL</span></code> is guaranteed to see it (even a read with
-consistency <code class="docutils literal"><span class="pre">ALL</span></code> is not guaranteed to be enough).</p>
-</div>
-<div class="section" id="show-version">
-<h3><code class="docutils literal"><span class="pre">SHOW</span> <span class="pre">VERSION</span></code><a class="headerlink" href="#show-version" title="Permalink to this headline">¶</a></h3>
-<p>Prints the cqlsh, Cassandra, CQL, and native protocol versions in use.  Example:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW VERSION
-[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
-</pre></div>
-</div>
-</div>
-<div class="section" id="show-host">
-<h3><code class="docutils literal"><span class="pre">SHOW</span> <span class="pre">HOST</span></code><a class="headerlink" href="#show-host" title="Permalink to this headline">¶</a></h3>
-<p>Prints the IP address and port of the Cassandra node that cqlsh is connected to in addition to the cluster name.
-Example:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW HOST
-Connected to Prod_Cluster at 192.0.0.1:9042.
-</pre></div>
-</div>
-</div>
-<div class="section" id="show-session">
-<h3><code class="docutils literal"><span class="pre">SHOW</span> <span class="pre">SESSION</span></code><a class="headerlink" href="#show-session" title="Permalink to this headline">¶</a></h3>
-<p>Pretty prints a specific tracing session.</p>
-<p><cite>Usage</cite>: <code class="docutils literal"><span class="pre">SHOW</span> <span class="pre">SESSION</span> <span class="pre">&lt;session</span> <span class="pre">id&gt;</span></code></p>
-<p>Example usage:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
-
-Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
-
- activity                                                  | timestamp                  | source    | source_elapsed | client
------------------------------------------------------------+----------------------------+-----------+----------------+-----------
-                                        Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 |              0 | 127.0.0.1
- Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 |           3843 | 127.0.0.1
-...
-</pre></div>
-</div>
-</div>
-<div class="section" id="source">
-<h3><code class="docutils literal"><span class="pre">SOURCE</span></code><a class="headerlink" href="#source" title="Permalink to this headline">¶</a></h3>
-<p>Reads the contents of a file and executes each line as a CQL statement or special cqlsh command.</p>
-<p><cite>Usage</cite>: <code class="docutils literal"><span class="pre">SOURCE</span> <span class="pre">&lt;string</span> <span class="pre">filename&gt;</span></code></p>
-<p>Example usage:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>cqlsh&gt; SOURCE &#39;/home/thobbs/commands.cql&#39;
-</pre></div>
-</div>
-</div>
-<div class="section" id="capture">
-<h3><code class="docutils literal"><span class="pre">CAPTURE</span></code><a class="headerlink" href="#capture" title="Permalink to this headline">¶</a></h3>
-<p>Begins capturing command output and appending it to a specified file.  Output will not be shown at the console while it
-is captured.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>CAPTURE &#39;&lt;file&gt;&#39;;
-CAPTURE OFF;
-CAPTURE;
-</pre></div>
-</div>
-<p>That is, the path to the file to be appended to must be given inside a string literal. The path is interpreted relative
-to the current working directory. The tilde shorthand notation (<code class="docutils literal"><span class="pre">'~/mydir'</span></code>) is supported for referring to <code class="docutils literal"><span class="pre">$HOME</span></code>.</p>
-<p>Only query result output is captured. Errors and output from cqlsh-only commands will still be shown in the cqlsh
-session.</p>
-<p>To stop capturing output and show it in the cqlsh session again, use <code class="docutils literal"><span class="pre">CAPTURE</span> <span class="pre">OFF</span></code>.</p>
-<p>To inspect the current capture configuration, use <code class="docutils literal"><span class="pre">CAPTURE</span></code> with no arguments.</p>
-</div>
-<div class="section" id="help">
-<h3><code class="docutils literal"><span class="pre">HELP</span></code><a class="headerlink" href="#help" title="Permalink to this headline">¶</a></h3>
-<p>Gives information about cqlsh commands. To see available topics, enter <code class="docutils literal"><span class="pre">HELP</span></code> without any arguments. To see help on a
-topic, use <code class="docutils literal"><span class="pre">HELP</span> <span class="pre">&lt;topic&gt;</span></code>.  Also see the <code class="docutils literal"><span class="pre">--browser</span></code> argument for controlling what browser is used to display help.</p>
-</div>
-<div class="section" id="tracing">
-<h3><code class="docutils literal"><span class="pre">TRACING</span></code><a class="headerlink" href="#tracing" title="Permalink to this headline">¶</a></h3>
-<p>Enables or disables tracing for queries.  When tracing is enabled, once a query completes, a trace of the events during
-the query will be printed.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>TRACING ON
-TRACING OFF
-</pre></div>
-</div>
-</div>
-<div class="section" id="paging">
-<h3><code class="docutils literal"><span class="pre">PAGING</span></code><a class="headerlink" href="#paging" title="Permalink to this headline">¶</a></h3>
-<p>Enables paging, disables paging, or sets the page size for read queries.  When paging is enabled, only one page of data
-will be fetched at a time and a prompt will appear to fetch the next page.  Generally, it&#8217;s a good idea to leave paging
-enabled in an interactive session to avoid fetching and printing large amounts of data at once.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>PAGING ON
-PAGING OFF
-PAGING &lt;page size in rows&gt;
-</pre></div>
-</div>
-</div>
-<div class="section" id="expand">
-<h3><code class="docutils literal"><span class="pre">EXPAND</span></code><a class="headerlink" href="#expand" title="Permalink to this headline">¶</a></h3>
-<p>Enables or disables vertical printing of rows.  Enabling <code class="docutils literal"><span class="pre">EXPAND</span></code> is useful when many columns are fetched, or the
-contents of a single column are large.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>EXPAND ON
-EXPAND OFF
-</pre></div>
-</div>
-</div>
-<div class="section" id="login">
-<h3><code class="docutils literal"><span class="pre">LOGIN</span></code><a class="headerlink" href="#login" title="Permalink to this headline">¶</a></h3>
-<p>Authenticate as a specified Cassandra user for the current session.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>LOGIN &lt;username&gt; [&lt;password&gt;]
-</pre></div>
-</div>
-</div>
-<div class="section" id="exit">
-<h3><code class="docutils literal"><span class="pre">EXIT</span></code><a class="headerlink" href="#exit" title="Permalink to this headline">¶</a></h3>
-<p>Ends the current session and terminates the cqlsh process.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>EXIT
-QUIT
-</pre></div>
-</div>
-</div>
-<div class="section" id="clear">
-<h3><code class="docutils literal"><span class="pre">CLEAR</span></code><a class="headerlink" href="#clear" title="Permalink to this headline">¶</a></h3>
-<p>Clears the console.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>CLEAR
-CLS
-</pre></div>
-</div>
-</div>
-<div class="section" id="describe">
-<h3><code class="docutils literal"><span class="pre">DESCRIBE</span></code><a class="headerlink" href="#describe" title="Permalink to this headline">¶</a></h3>
-<p>Prints a description (typically a series of DDL statements) of a schema element or the cluster.  This is useful for
-dumping all or portions of the schema.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>DESCRIBE CLUSTER
-DESCRIBE SCHEMA
-DESCRIBE KEYSPACES
-DESCRIBE KEYSPACE &lt;keyspace name&gt;
-DESCRIBE TABLES
-DESCRIBE TABLE &lt;table name&gt;
-DESCRIBE INDEX &lt;index name&gt;
-DESCRIBE MATERIALIZED VIEW &lt;view name&gt;
-DESCRIBE TYPES
-DESCRIBE TYPE &lt;type name&gt;
-DESCRIBE FUNCTIONS
-DESCRIBE FUNCTION &lt;function name&gt;
-DESCRIBE AGGREGATES
-DESCRIBE AGGREGATE &lt;aggregate function name&gt;
-</pre></div>
-</div>
-<p>In any of the commands, <code class="docutils literal"><span class="pre">DESC</span></code> may be used in place of <code class="docutils literal"><span class="pre">DESCRIBE</span></code>.</p>
-<p>The <code class="docutils literal"><span class="pre">DESCRIBE</span> <span class="pre">CLUSTER</span></code> command prints the cluster name and partitioner:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>cqlsh&gt; DESCRIBE CLUSTER
-
-Cluster: Test Cluster
-Partitioner: Murmur3Partitioner
-</pre></div>
-</div>
-<p>The <code class="docutils literal"><span class="pre">DESCRIBE</span> <span class="pre">SCHEMA</span></code> command prints the DDL statements needed to recreate the entire schema.  This is especially
-useful for dumping the schema in order to clone a cluster or restore from a backup.</p>
-</div>
-<div class="section" id="copy-to">
-<h3><code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#copy-to" title="Permalink to this headline">¶</a></h3>
-<p>Copies data from a table to a CSV file.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>COPY &lt;table name&gt; [(&lt;column&gt;, ...)] TO &lt;file name&gt; WITH &lt;copy option&gt; [AND &lt;copy option&gt; ...]
-</pre></div>
-</div>
-<p>If no columns are specified, all columns from the table will be copied to the CSV file.  A subset of columns to copy may
-be specified by adding a comma-separated list of column names surrounded by parenthesis after the table name.</p>
-<p>The <code class="docutils literal"><span class="pre">&lt;file</span> <span class="pre">name&gt;</span></code> should be a string literal (with single quotes) representing a path to the destination file.  This
-can also the special value <code class="docutils literal"><span class="pre">STDOUT</span></code> (without single quotes) to print the CSV to stdout.</p>
-<p>See <a class="reference internal" href="#shared-copy-options"><span class="std std-ref">Shared COPY Options</span></a> for options that apply to both <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
-<div class="section" id="options-for-copy-to">
-<h4>Options for <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#options-for-copy-to" title="Permalink to this headline">¶</a></h4>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">MAXREQUESTS</span></code></dt>
-<dd>The maximum number token ranges to fetch simultaneously. Defaults to 6.</dd>
-<dt><code class="docutils literal"><span class="pre">PAGESIZE</span></code></dt>
-<dd>The number of rows to fetch in a single page. Defaults to 1000.</dd>
-<dt><code class="docutils literal"><span class="pre">PAGETIMEOUT</span></code></dt>
-<dd>By default the page timeout is 10 seconds per 1000 entries
-in the page size or 10 seconds if pagesize is smaller.</dd>
-<dt><code class="docutils literal"><span class="pre">BEGINTOKEN</span></code>, <code class="docutils literal"><span class="pre">ENDTOKEN</span></code></dt>
-<dd>Token range to export.  Defaults to exporting the full ring.</dd>
-<dt><code class="docutils literal"><span class="pre">MAXOUTPUTSIZE</span></code></dt>
-<dd>The maximum size of the output file measured in number of lines;
-beyond this maximum the output file will be split into segments.
--1 means unlimited, and is the default.</dd>
-<dt><code class="docutils literal"><span class="pre">ENCODING</span></code></dt>
-<dd>The encoding used for characters. Defaults to <code class="docutils literal"><span class="pre">utf8</span></code>.</dd>
-</dl>
-</div>
-</div>
-<div class="section" id="copy-from">
-<h3><code class="docutils literal"><span class="pre">COPY</span> <span class="pre">FROM</span></code><a class="headerlink" href="#copy-from" title="Permalink to this headline">¶</a></h3>
-<p>Copies data from a CSV file to table.</p>
-<p><cite>Usage</cite>:</p>
-<div class="highlight-none"><div class="highlight"><pre><span></span>COPY &lt;table name&gt; [(&lt;column&gt;, ...)] FROM &lt;file name&gt; WITH &lt;copy option&gt; [AND &lt;copy option&gt; ...]
-</pre></div>
-</div>
-<p>If no columns are specified, all columns from the CSV file will be copied to the table.  A subset
-of columns to copy may be specified by adding a comma-separated list of column names surrounded
-by parenthesis after the table name.</p>
-<p>The <code class="docutils literal"><span class="pre">&lt;file</span> <span class="pre">name&gt;</span></code> should be a string literal (with single quotes) representing a path to the
-source file.  This can also the special value <code class="docutils literal"><span class="pre">STDIN</span></code> (without single quotes) to read the
-CSV data from stdin.</p>
-<p>See <a class="reference internal" href="#shared-copy-options"><span class="std std-ref">Shared COPY Options</span></a> for options that apply to both <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
-<div class="section" id="id1">
-<h4>Options for <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h4>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">INGESTRATE</span></code></dt>
-<dd>The maximum number of rows to process per second. Defaults to 100000.</dd>
-<dt><code class="docutils literal"><span class="pre">MAXROWS</span></code></dt>
-<dd>The maximum number of rows to import. -1 means unlimited, and is the default.</dd>
-<dt><code class="docutils literal"><span class="pre">SKIPROWS</span></code></dt>
-<dd>A number of initial rows to skip.  Defaults to 0.</dd>
-<dt><code class="docutils literal"><span class="pre">SKIPCOLS</span></code></dt>
-<dd>A comma-separated list of column names to ignore.  By default, no columns are skipped.</dd>
-<dt><code class="docutils literal"><span class="pre">MAXPARSEERRORS</span></code></dt>
-<dd>The maximum global number of parsing errors to ignore. -1 means unlimited, and is the default.</dd>
-<dt><code class="docutils literal"><span class="pre">MAXINSERTERRORS</span></code></dt>
-<dd>The maximum global number of insert errors to ignore. -1 means unlimited.  The default is 1000.</dd>
-<dt><code class="docutils literal"><span class="pre">ERRFILE</span></code> =</dt>
-<dd>A file to store all rows that could not be imported, by default this is <code class="docutils literal"><span class="pre">import_&lt;ks&gt;_&lt;table&gt;.err</span></code> where <code class="docutils literal"><span class="pre">&lt;ks&gt;</span></code> is
-your keyspace and <code class="docutils literal"><span class="pre">&lt;table&gt;</span></code> is your table name.</dd>
-<dt><code class="docutils literal"><span class="pre">MAXBATCHSIZE</span></code></dt>
-<dd>The max number of rows inserted in a single batch. Defaults to 20.</dd>
-<dt><code class="docutils literal"><span class="pre">MINBATCHSIZE</span></code></dt>
-<dd>The min number of rows inserted in a single batch. Defaults to 2.</dd>
-<dt><code class="docutils literal"><span class="pre">CHUNKSIZE</span></code></dt>
-<dd>The number of rows that are passed to child worker processes from the main process at a time. Defaults to 1000.</dd>
-</dl>
-</div>
-<div class="section" id="shared-copy-options">
-<span id="id2"></span><h4>Shared COPY Options<a class="headerlink" href="#shared-copy-options" title="Permalink to this headline">¶</a></h4>
-<p>Options that are common to both <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
-<dl class="docutils">
-<dt><code class="docutils literal"><span class="pre">NULLVAL</span></code></dt>
-<dd>The string placeholder for null values.  Defaults to <code class="docutils literal"><span class="pre">null</span></code>.</dd>
-<dt><code class="docutils literal"><span class="pre">HEADER</span></code></dt>
-<dd>For <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code>, controls whether the first line in the CSV output file will contain the column names.  For COPY FROM,
-specifies whether the first line in the CSV input file contains column names.  Defaults to <code class="docutils literal"><span class="pre">false</span></code>.</dd>
-<dt><code class="docutils literal"><span class="pre">DECIMALSEP</span></code></dt>
-<dd>The character that is used as the decimal point separator.  Defaults to <code class="docutils literal"><span class="pre">.</span></code>.</dd>
-<dt><code class="docutils literal"><span class="pre">THOUSANDSSEP</span></code></dt>
-<dd>The character that is used to separate thousands. Defaults to the empty string.</dd>
-<dt><code class="docutils literal"><span class="pre">BOOLSTYlE</span></code></dt>
-<dd>The string literal format for boolean values.  Defaults to <code class="docutils literal"><span class="pre">True,False</span></code>.</dd>
-<dt><code class="docutils literal"><span class="pre">NUMPROCESSES</span></code></dt>
-<dd>The number of child worker processes to create for <code class="docutils literal"><span class="pre">COPY</span></code> tasks.  Defaults to a max of 4 for <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">FROM</span></code> and 16
-for <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code>.  However, at most (num_cores - 1) processes will be created.</dd>
-<dt><code class="docutils literal"><span class="pre">MAXATTEMPTS</span></code></dt>
-<dd>The maximum number of failed attempts to fetch a range of data (when using <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">TO</span></code>) or insert a chunk of data
-(when using <code class="docutils literal"><span class="pre">COPY</span> <span class="pre">FROM</span></code>) before giving up. Defaults to 5.</dd>
-<dt><code class="docutils literal"><span class="pre">REPORTFREQUENCY</span></code></dt>
-<dd>How often status updates are refreshed, in seconds.  Defaults to 0.25.</dd>
-<dt><code class="docutils literal"><span class="pre">RATEFILE</span></code></dt>
-<dd>An optional file to output rate statistics to.  By default, statistics are not output to a file.</dd>
-</dl>
-</div>
-</div>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="nodetool.html" class="btn btn-default pull-right " role="button" title="Nodetool" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="index.html" class="btn btn-default" role="button" title="Cassandra Tools" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/tools/index.html b/src/doc/3.10/tools/index.html
deleted file mode 100644
index 3cc6da6..0000000
--- a/src/doc/3.10/tools/index.html
+++ /dev/null
@@ -1,113 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Cassandra Tools"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="cqlsh: the CQL shell" href="cqlsh.html"/>
-      <link rel="prev" title="Hardware Choices" href="../operating/hardware.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Cassandra Tools</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
-<li class="toctree-l2"><a class="reference internal" href="nodetool.html">Nodetool</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="cassandra-tools">
-<h1>Cassandra Tools<a class="headerlink" href="#cassandra-tools" title="Permalink to this headline">¶</a></h1>
-<p>This section describes the command line tools provided with Apache Cassandra.</p>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
-<li class="toctree-l1"><a class="reference internal" href="nodetool.html">Nodetool</a></li>
-</ul>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="cqlsh.html" class="btn btn-default pull-right " role="button" title="cqlsh: the CQL shell" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../operating/hardware.html" class="btn btn-default" role="button" title="Hardware Choices" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/tools/nodetool.html b/src/doc/3.10/tools/nodetool.html
deleted file mode 100644
index a938d8d..0000000
--- a/src/doc/3.10/tools/nodetool.html
+++ /dev/null
@@ -1,113 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-parent: "Cassandra Tools"
-
-doc-title: "Nodetool"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="up" title="Cassandra Tools" href="index.html"/>
-      <link rel="next" title="Troubleshooting" href="../troubleshooting/index.html"/>
-      <link rel="prev" title="cqlsh: the CQL shell" href="cqlsh.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Tools</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Nodetool</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="nodetool">
-<span id="id1"></span><h1>Nodetool<a class="headerlink" href="#nodetool" title="Permalink to this headline">¶</a></h1>
-<div class="admonition-todo admonition" id="index-0">
-<p class="first admonition-title">Todo</p>
-<p class="last">Try to autogenerate this from Nodetool’s help.</p>
-</div>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../troubleshooting/index.html" class="btn btn-default pull-right " role="button" title="Troubleshooting" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="cqlsh.html" class="btn btn-default" role="button" title="cqlsh: the CQL shell" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.10/troubleshooting/index.html b/src/doc/3.10/troubleshooting/index.html
deleted file mode 100644
index 6d19180..0000000
--- a/src/doc/3.10/troubleshooting/index.html
+++ /dev/null
@@ -1,102 +0,0 @@
----
-layout: docpage
-
-title: "Documentation"
-
-is_homepage: false
-is_sphinx_doc: true
-
-doc-title: "Troubleshooting"
-doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
-      <link rel="next" title="Cassandra Development" href="../development/index.html"/>
-      <link rel="prev" title="Nodetool" href="../tools/nodetool.html"/>
-'
-doc-search-path: "../search.html"
-
-extra-footer: '
-<script type="text/javascript">
-    var DOCUMENTATION_OPTIONS = {
-      URL_ROOT:    "",
-      VERSION:     "",
-      COLLAPSE_INDEX: false,
-      FILE_SUFFIX: ".html",
-      HAS_SOURCE:  false,
-      SOURCELINK_SUFFIX: ""
-    };
-</script>
-'
-
----
-<div class="container-fluid">
-  <div class="row">
-    <div class="col-md-2">
-      <div class="doc-navigation">
-        <div class="doc-menu" role="navigation">
-          <div class="navbar-header">
-            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
-              <span class="sr-only">Toggle navigation</span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-          </div>
-          <div class="navbar-collapse collapse sidebar-navbar-collapse">
-            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
-              <div class="form-group">
-                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
-                <input type="hidden" name="check_keywords" value="yes" />
-                <input type="hidden" name="area" value="default" />
-              </div>
-            </form>
-            
-            
-            
-            <ul class="current">
-<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Troubleshooting</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
-</ul>
-
-            
-            
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-    <div class="col-md-8">
-      <div class="content doc-content">
-        <div class="container">
-          
-  <div class="section" id="troubleshooting">
-<h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">¶</a></h1>
-</div>
-
-
-
-          
-          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
-            
-            <a href="../development/index.html" class="btn btn-default pull-right " role="button" title="Cassandra Development" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
-            
-            
-            <a href="../tools/nodetool.html" class="btn btn-default" role="button" title="Nodetool" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
-            
-          </div>
-          
-        </div>
-      </div>
-    </div>
-    <div class="col-md-2">
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/src/doc/3.7/_images/eclipse_debug0.png b/src/doc/3.7/_images/eclipse_debug0.png
new file mode 100644
index 0000000..79fc5fd
--- /dev/null
+++ b/src/doc/3.7/_images/eclipse_debug0.png
Binary files differ
diff --git a/src/doc/3.7/_images/eclipse_debug1.png b/src/doc/3.7/_images/eclipse_debug1.png
new file mode 100644
index 0000000..87b8756
--- /dev/null
+++ b/src/doc/3.7/_images/eclipse_debug1.png
Binary files differ
diff --git a/src/doc/3.7/_images/eclipse_debug2.png b/src/doc/3.7/_images/eclipse_debug2.png
new file mode 100644
index 0000000..df4eddb
--- /dev/null
+++ b/src/doc/3.7/_images/eclipse_debug2.png
Binary files differ
diff --git a/src/doc/3.7/_images/eclipse_debug3.png b/src/doc/3.7/_images/eclipse_debug3.png
new file mode 100644
index 0000000..2317814
--- /dev/null
+++ b/src/doc/3.7/_images/eclipse_debug3.png
Binary files differ
diff --git a/src/doc/3.7/_images/eclipse_debug4.png b/src/doc/3.7/_images/eclipse_debug4.png
new file mode 100644
index 0000000..5063d48
--- /dev/null
+++ b/src/doc/3.7/_images/eclipse_debug4.png
Binary files differ
diff --git a/src/doc/3.7/_images/eclipse_debug5.png b/src/doc/3.7/_images/eclipse_debug5.png
new file mode 100644
index 0000000..ab68e68
--- /dev/null
+++ b/src/doc/3.7/_images/eclipse_debug5.png
Binary files differ
diff --git a/src/doc/3.7/_images/eclipse_debug6.png b/src/doc/3.7/_images/eclipse_debug6.png
new file mode 100644
index 0000000..61ef30b
--- /dev/null
+++ b/src/doc/3.7/_images/eclipse_debug6.png
Binary files differ
diff --git a/src/doc/3.7/_sources/bugs.txt b/src/doc/3.7/_sources/bugs.txt
index 90efb14..240cfd4 100644
--- a/src/doc/3.7/_sources/bugs.txt
+++ b/src/doc/3.7/_sources/bugs.txt
@@ -14,7 +14,7 @@
 .. See the License for the specific language governing permissions and
 .. limitations under the License.
 
-Reporting bugs and contributing
+Reporting Bugs and Contributing
 ===============================
 
 If you encounter a problem with Cassandra, the first places to ask for help are the :ref:`user mailing list
@@ -25,7 +25,6 @@
 details as you can on your problem, and don't forget to indicate which version of Cassandra you are running and on which
 environment.
 
-If you would like to contribute, please check `the section on contributing
-<https://wiki.apache.org/cassandra/HowToContribute>`__ on the Cassandra wiki. Please note that the source of this
-documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
+Further details on how to contribute can be found at our :doc:`development/index` section. Please note that the source of
+this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
 same path.
diff --git a/src/doc/3.7/_sources/configuration/cassandra_config_file.txt b/src/doc/3.7/_sources/configuration/cassandra_config_file.txt
index 428a452..5a20733 100644
--- a/src/doc/3.7/_sources/configuration/cassandra_config_file.txt
+++ b/src/doc/3.7/_sources/configuration/cassandra_config_file.txt
@@ -722,6 +722,10 @@
 ------------------------------
 *This option is commented out by default.*
 
+memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.
+
 Ratio of occupied non-flushing memtable size to total permitted size
 that will trigger a flush of the largest memtable. Larger mct will
 mean larger flushes and hence less compaction, but also less concurrent
@@ -769,16 +773,35 @@
 --------------------------
 *This option is commented out by default.*
 
-This sets the amount of memtable flush writer threads.  These will
-be blocked by disk io, and each one will hold a memtable in memory
-while blocked.
+This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.
 
-memtable_flush_writers defaults to one per data_file_directory.
+Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.
 
-If your data directories are backed by SSD, you can increase this, but
-avoid having memtable_flush_writers * data_file_directories > number of cores
+You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.
 
-*Default Value:* 1
+memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.
+
+Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.
+
+There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.
+
+
+*Default Value:* 2
 
 ``cdc_total_space_in_mb``
 -------------------------
@@ -1324,6 +1347,15 @@
 
 *Default Value:* 10000
 
+``slow_query_log_timeout_in_ms``
+--------------------------------
+
+How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.
+
+*Default Value:* 500
+
 ``cross_node_timeout``
 ----------------------
 
diff --git a/src/doc/3.7/_sources/cql/changes.txt b/src/doc/3.7/_sources/cql/changes.txt
index d0c51cc..4f71748 100644
--- a/src/doc/3.7/_sources/cql/changes.txt
+++ b/src/doc/3.7/_sources/cql/changes.txt
@@ -24,7 +24,10 @@
 3.4.3
 ^^^^^
 
+- Support for ``GROUP BY`` (:jira:`10707`).
 - Adds a ``DEFAULT UNSET`` option for ``INSERT JSON`` to ignore omitted columns (:jira:`11424`).
+- Allows ``null`` as a legal value for TTL on insert and update. It will be treated as equivalent to
+inserting a 0 (:jira:`12216`).
 
 3.4.2
 ^^^^^
diff --git a/src/doc/3.7/_sources/cql/dml.txt b/src/doc/3.7/_sources/cql/dml.txt
index f1c126b..1b0f80b 100644
--- a/src/doc/3.7/_sources/cql/dml.txt
+++ b/src/doc/3.7/_sources/cql/dml.txt
@@ -34,6 +34,7 @@
    select_statement: SELECT [ JSON | DISTINCT ] ( `select_clause` | '*' )
                    : FROM `table_name`
                    : [ WHERE `where_clause` ]
+                   : [ GROUP BY `group_by_clause` ]
                    : [ ORDER BY `ordering_clause` ]
                    : [ PER PARTITION LIMIT (`integer` | `bind_marker`) ]
                    : [ LIMIT (`integer` | `bind_marker`) ]
@@ -49,6 +50,7 @@
            : '(' `column_name` ( ',' `column_name` )* ')' `operator` `tuple_literal`
            : TOKEN '(' `column_name` ( ',' `column_name` )* ')' `operator` `term`
    operator: '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY
+   group_by_clause: `column_name` ( ',' `column_name` )*
    ordering_clause: `column_name` [ ASC | DESC ] ( ',' `column_name` [ ASC | DESC ] )*
 
 For instance::
@@ -208,6 +210,25 @@
 ``CONTAINS`` applies to the map values. The ``CONTAINS KEY`` operator may only be used on map columns and applies to the
 map keys.
 
+.. _group-by-clause:
+
+Grouping results
+~~~~~~~~~~~~~~~~
+
+The ``GROUP BY`` option allows to condense into a single row all selected rows that share the same values for a set
+of columns.
+
+Using the ``GROUP BY`` option, it is only possible to group rows at the partition key level or at a clustering column
+level. By consequence, the ``GROUP BY`` option only accept as arguments primary key column names in the primary key
+order. If a primary key column is restricted by an equality restriction it is not required to be present in the
+``GROUP BY`` clause.
+
+Aggregate functions will produce a separate value for each group. If no ``GROUP BY`` clause is specified,
+aggregates functions will produce a single value for all the rows.
+
+If a column is selected without an aggregate function, in a statement with a ``GROUP BY``, the first value encounter
+in each group will be returned.
+
 .. _ordering-clause:
 
 Ordering results
@@ -399,7 +420,8 @@
   automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
   the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
   is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
-  default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values.
+  default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of ``null`` is equivalent
+  to inserting with a TTL of 0.
 
 .. _delete_statement:
 
diff --git a/src/doc/3.10/_sources/development/code_style.txt b/src/doc/3.7/_sources/development/code_style.txt
similarity index 100%
rename from src/doc/3.10/_sources/development/code_style.txt
rename to src/doc/3.7/_sources/development/code_style.txt
diff --git a/src/doc/3.10/_sources/development/how_to_commit.txt b/src/doc/3.7/_sources/development/how_to_commit.txt
similarity index 100%
rename from src/doc/3.10/_sources/development/how_to_commit.txt
rename to src/doc/3.7/_sources/development/how_to_commit.txt
diff --git a/src/doc/3.10/_sources/development/how_to_review.txt b/src/doc/3.7/_sources/development/how_to_review.txt
similarity index 100%
rename from src/doc/3.10/_sources/development/how_to_review.txt
rename to src/doc/3.7/_sources/development/how_to_review.txt
diff --git a/src/doc/3.10/_sources/development/ide.txt b/src/doc/3.7/_sources/development/ide.txt
similarity index 100%
rename from src/doc/3.10/_sources/development/ide.txt
rename to src/doc/3.7/_sources/development/ide.txt
diff --git a/src/doc/3.10/_sources/development/index.txt b/src/doc/3.7/_sources/development/index.txt
similarity index 100%
rename from src/doc/3.10/_sources/development/index.txt
rename to src/doc/3.7/_sources/development/index.txt
diff --git a/src/doc/3.10/_sources/development/patches.txt b/src/doc/3.7/_sources/development/patches.txt
similarity index 100%
rename from src/doc/3.10/_sources/development/patches.txt
rename to src/doc/3.7/_sources/development/patches.txt
diff --git a/src/doc/3.10/_sources/development/testing.txt b/src/doc/3.7/_sources/development/testing.txt
similarity index 100%
rename from src/doc/3.10/_sources/development/testing.txt
rename to src/doc/3.7/_sources/development/testing.txt
diff --git a/src/doc/3.7/_sources/index.txt b/src/doc/3.7/_sources/index.txt
index ec27f5a..562603d 100644
--- a/src/doc/3.7/_sources/index.txt
+++ b/src/doc/3.7/_sources/index.txt
@@ -34,6 +34,7 @@
    operating/index
    tools/index
    troubleshooting/index
+   development/index
    faq/index
 
    bugs
diff --git a/src/doc/3.7/_sources/operating/compaction.txt b/src/doc/3.7/_sources/operating/compaction.txt
index 8d70a41..b0f97c4 100644
--- a/src/doc/3.7/_sources/operating/compaction.txt
+++ b/src/doc/3.7/_sources/operating/compaction.txt
@@ -45,6 +45,12 @@
     rebuild the secondary indexes on the node.
 Anticompaction
     after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.
+Sub range compaction
+    It is possible to only compact a given sub range - this could be useful if you know a token that has been
+    misbehaving - either gathering many updates or many deletes. (``nodetool compact -st x -et y``) will pick
+    all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
+    most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
+    the resulting sstable will end up in L0.
 
 When is a minor compaction triggered?
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/src/doc/3.7/_sources/operating/metrics.txt b/src/doc/3.7/_sources/operating/metrics.txt
index 2c634c4..546d9c2 100644
--- a/src/doc/3.7/_sources/operating/metrics.txt
+++ b/src/doc/3.7/_sources/operating/metrics.txt
@@ -585,6 +585,93 @@
 connectedThriftClients      Counter        Number of clients connected to this nodes thrift protocol server
 =========================== ============== ===========
 
+JVM Metrics
+^^^^^^^^^^^
+
+JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using `Metric Reporters`_.
+
+BufferPool
+++++++++++
+
+**Metric Name**
+    ``jvm.buffers.<direct|mapped>.<MetricName>``
+
+**JMX MBean**
+    ``java.nio:type=BufferPool name=<direct|mapped>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Capacity                   Gauge<Long>    Estimated total capacity of the buffers in this pool
+Count                      Gauge<Long>    Estimated number of buffers in the pool
+Used                       Gauge<Long>    Estimated memory that the Java virtual machine is using for this buffer pool
+========================== ============== ===========
+
+FileDescriptorRatio
++++++++++++++++++++
+
+**Metric Name**
+    ``jvm.fd.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=OperatingSystem name=<OpenFileDescriptorCount|MaxFileDescriptorCount>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Usage                      Ratio          Ratio of used to total file descriptors
+========================== ============== ===========
+
+GarbageCollector
+++++++++++++++++
+
+**Metric Name**
+    ``jvm.gc.<gc_type>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=GarbageCollector name=<gc_type>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Count                      Gauge<Long>    Total number of collections that have occurred
+Time                       Gauge<Long>    Approximate accumulated collection elapsed time in milliseconds
+========================== ============== ===========
+
+Memory
+++++++
+
+**Metric Name**
+    ``jvm.memory.<heap/non-heap/total>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=Memory``
+
+========================== ============== ===========
+Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
+Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
+Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
+Usage                      Ratio          Ratio of used to maximum memory
+Used                       Gauge<Long>    Amount of used memory in bytes
+========================== ============== ===========
+
+MemoryPool
+++++++++++
+
+**Metric Name**
+    ``jvm.memory.pools.<memory_pool>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=MemoryPool name=<memory_pool>``
+
+========================== ============== ===========
+Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
+Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
+Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
+Usage                      Ratio          Ratio of used to maximum memory
+Used                       Gauge<Long>    Amount of used memory in bytes
+========================== ============== ===========
+
 JMX
 ^^^
 
diff --git a/src/doc/3.7/architecture/dynamo.html b/src/doc/3.7/architecture/dynamo.html
index ec4904d..23c7d0a 100644
--- a/src/doc/3.7/architecture/dynamo.html
+++ b/src/doc/3.7/architecture/dynamo.html
@@ -77,8 +77,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/architecture/guarantees.html b/src/doc/3.7/architecture/guarantees.html
index da6dbf0..ce1795b 100644
--- a/src/doc/3.7/architecture/guarantees.html
+++ b/src/doc/3.7/architecture/guarantees.html
@@ -70,8 +70,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/architecture/index.html b/src/doc/3.7/architecture/index.html
index 290e38e..b8ca6b0 100644
--- a/src/doc/3.7/architecture/index.html
+++ b/src/doc/3.7/architecture/index.html
@@ -67,8 +67,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/architecture/overview.html b/src/doc/3.7/architecture/overview.html
index 6447e58..fb549b3 100644
--- a/src/doc/3.7/architecture/overview.html
+++ b/src/doc/3.7/architecture/overview.html
@@ -70,8 +70,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/architecture/storage_engine.html b/src/doc/3.7/architecture/storage_engine.html
index fff1d48..dcf6c8a 100644
--- a/src/doc/3.7/architecture/storage_engine.html
+++ b/src/doc/3.7/architecture/storage_engine.html
@@ -75,8 +75,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/bugs.html b/src/doc/3.7/bugs.html
index 32a2354..bff79de 100644
--- a/src/doc/3.7/bugs.html
+++ b/src/doc/3.7/bugs.html
@@ -6,7 +6,7 @@
 is_homepage: false
 is_sphinx_doc: true
 
-doc-title: "Reporting bugs and contributing"
+doc-title: "Reporting Bugs and Contributing"
 doc-header-links: '
   <link rel="top" title="Apache Cassandra Documentation v3.7" href="index.html"/>
       <link rel="next" title="Contact us" href="contactus.html"/>
@@ -61,8 +61,9 @@
 <li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Reporting bugs and contributing</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
 </ul>
 
@@ -77,14 +78,14 @@
         <div class="container">
           
   <div class="section" id="reporting-bugs-and-contributing">
-<h1>Reporting bugs and contributing<a class="headerlink" href="#reporting-bugs-and-contributing" title="Permalink to this headline">¶</a></h1>
+<h1>Reporting Bugs and Contributing<a class="headerlink" href="#reporting-bugs-and-contributing" title="Permalink to this headline">¶</a></h1>
 <p>If you encounter a problem with Cassandra, the first places to ask for help are the <a class="reference internal" href="contactus.html#mailing-lists"><span class="std std-ref">user mailing list</span></a> and the <code class="docutils literal"><span class="pre">#cassandra</span></code> <a class="reference internal" href="contactus.html#irc-channels"><span class="std std-ref">IRC channel</span></a>.</p>
 <p>If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
 ticket through the <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA">Apache Cassandra JIRA</a>. Please provide as much
 details as you can on your problem, and don&#8217;t forget to indicate which version of Cassandra you are running and on which
 environment.</p>
-<p>If you would like to contribute, please check <a class="reference external" href="https://wiki.apache.org/cassandra/HowToContribute">the section on contributing</a> on the Cassandra wiki. Please note that the source of this
-documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
+<p>Further details on how to contribute can be found at our <a class="reference internal" href="development/index.html"><span class="doc">Cassandra Development</span></a> section. Please note that the source of
+this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
 same path.</p>
 </div>
 
diff --git a/src/doc/3.7/configuration/cassandra_config_file.html b/src/doc/3.7/configuration/cassandra_config_file.html
index e8c34bd..6903fd2 100644
--- a/src/doc/3.7/configuration/cassandra_config_file.html
+++ b/src/doc/3.7/configuration/cassandra_config_file.html
@@ -178,6 +178,7 @@
 <li class="toctree-l3"><a class="reference internal" href="#cas-contention-timeout-in-ms"><code class="docutils literal"><span class="pre">cas_contention_timeout_in_ms</span></code></a></li>
 <li class="toctree-l3"><a class="reference internal" href="#truncate-request-timeout-in-ms"><code class="docutils literal"><span class="pre">truncate_request_timeout_in_ms</span></code></a></li>
 <li class="toctree-l3"><a class="reference internal" href="#request-timeout-in-ms"><code class="docutils literal"><span class="pre">request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#slow-query-log-timeout-in-ms"><code class="docutils literal"><span class="pre">slow_query_log_timeout_in_ms</span></code></a></li>
 <li class="toctree-l3"><a class="reference internal" href="#cross-node-timeout"><code class="docutils literal"><span class="pre">cross_node_timeout</span></code></a></li>
 <li class="toctree-l3"><a class="reference internal" href="#streaming-socket-timeout-in-ms"><code class="docutils literal"><span class="pre">streaming_socket_timeout_in_ms</span></code></a></li>
 <li class="toctree-l3"><a class="reference internal" href="#phi-convict-threshold"><code class="docutils literal"><span class="pre">phi_convict_threshold</span></code></a></li>
@@ -214,8 +215,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -816,6 +818,9 @@
 <div class="section" id="memtable-cleanup-threshold">
 <h2><code class="docutils literal"><span class="pre">memtable_cleanup_threshold</span></code><a class="headerlink" href="#memtable-cleanup-threshold" title="Permalink to this headline">¶</a></h2>
 <p><em>This option is commented out by default.</em></p>
+<p>memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.</p>
 <p>Ratio of occupied non-flushing memtable size to total permitted size
 that will trigger a flush of the largest memtable. Larger mct will
 mean larger flushes and hence less compaction, but also less concurrent
@@ -852,13 +857,28 @@
 <div class="section" id="memtable-flush-writers">
 <h2><code class="docutils literal"><span class="pre">memtable_flush_writers</span></code><a class="headerlink" href="#memtable-flush-writers" title="Permalink to this headline">¶</a></h2>
 <p><em>This option is commented out by default.</em></p>
-<p>This sets the amount of memtable flush writer threads.  These will
-be blocked by disk io, and each one will hold a memtable in memory
-while blocked.</p>
-<p>memtable_flush_writers defaults to one per data_file_directory.</p>
-<p>If your data directories are backed by SSD, you can increase this, but
-avoid having memtable_flush_writers * data_file_directories &gt; number of cores</p>
-<p><em>Default Value:</em> 1</p>
+<p>This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.</p>
+<p>Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.</p>
+<p>You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.</p>
+<p>memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.</p>
+<p>Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.</p>
+<p>There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.</p>
+<p><em>Default Value:</em> 2</p>
 </div>
 <div class="section" id="cdc-total-space-in-mb">
 <h2><code class="docutils literal"><span class="pre">cdc_total_space_in_mb</span></code><a class="headerlink" href="#cdc-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
@@ -1298,6 +1318,13 @@
 <p>The default timeout for other, miscellaneous operations</p>
 <p><em>Default Value:</em> 10000</p>
 </div>
+<div class="section" id="slow-query-log-timeout-in-ms">
+<h2><code class="docutils literal"><span class="pre">slow_query_log_timeout_in_ms</span></code><a class="headerlink" href="#slow-query-log-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.</p>
+<p><em>Default Value:</em> 500</p>
+</div>
 <div class="section" id="cross-node-timeout">
 <h2><code class="docutils literal"><span class="pre">cross_node_timeout</span></code><a class="headerlink" href="#cross-node-timeout" title="Permalink to this headline">¶</a></h2>
 <p>Enable operation timeout information exchange between nodes to accurately
diff --git a/src/doc/3.7/configuration/index.html b/src/doc/3.7/configuration/index.html
index 3c50e1c..c7c39ed 100644
--- a/src/doc/3.7/configuration/index.html
+++ b/src/doc/3.7/configuration/index.html
@@ -64,8 +64,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/contactus.html b/src/doc/3.7/contactus.html
index 2b5dea0..461f80c 100644
--- a/src/doc/3.7/contactus.html
+++ b/src/doc/3.7/contactus.html
@@ -9,7 +9,7 @@
 doc-title: "Contact us"
 doc-header-links: '
   <link rel="top" title="Apache Cassandra Documentation v3.7" href="index.html"/>
-      <link rel="prev" title="Reporting bugs and contributing" href="bugs.html"/>
+      <link rel="prev" title="Reporting Bugs and Contributing" href="bugs.html"/>
 '
 doc-search-path: "search.html"
 
@@ -60,8 +60,9 @@
 <li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Contact us</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="#mailing-lists">Mailing lists</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#irc">IRC</a></li>
@@ -115,7 +116,7 @@
           <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
             
             
-            <a href="bugs.html" class="btn btn-default" role="button" title="Reporting bugs and contributing" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            <a href="bugs.html" class="btn btn-default" role="button" title="Reporting Bugs and Contributing" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
             
           </div>
           
diff --git a/src/doc/3.7/cql/appendices.html b/src/doc/3.7/cql/appendices.html
index c7177d6..5da3643 100644
--- a/src/doc/3.7/cql/appendices.html
+++ b/src/doc/3.7/cql/appendices.html
@@ -82,8 +82,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/changes.html b/src/doc/3.7/cql/changes.html
index e23906c..90fbc07 100644
--- a/src/doc/3.7/cql/changes.html
+++ b/src/doc/3.7/cql/changes.html
@@ -101,8 +101,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -122,8 +123,11 @@
 <div class="section" id="id1">
 <h2>3.4.3<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
+<li>Support for <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10707">CASSANDRA-10707</a>).</li>
 <li>Adds a <code class="docutils literal"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> option for <code class="docutils literal"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> to ignore omitted columns (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11424">CASSANDRA-11424</a>).</li>
+<li>Allows <code class="docutils literal"><span class="pre">null</span></code> as a legal value for TTL on insert and update. It will be treated as equivalent to</li>
 </ul>
+<p>inserting a 0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12216">CASSANDRA-12216</a>).</p>
 </div>
 <div class="section" id="id2">
 <h2>3.4.2<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
diff --git a/src/doc/3.7/cql/ddl.html b/src/doc/3.7/cql/ddl.html
index 6fe3c22..7100be3 100644
--- a/src/doc/3.7/cql/ddl.html
+++ b/src/doc/3.7/cql/ddl.html
@@ -89,8 +89,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/definitions.html b/src/doc/3.7/cql/definitions.html
index 63feb44..fe82ca4 100644
--- a/src/doc/3.7/cql/definitions.html
+++ b/src/doc/3.7/cql/definitions.html
@@ -87,8 +87,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/dml.html b/src/doc/3.7/cql/dml.html
index c73f8e1..2ce41f5 100644
--- a/src/doc/3.7/cql/dml.html
+++ b/src/doc/3.7/cql/dml.html
@@ -85,8 +85,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -110,6 +111,7 @@
 <strong id="grammar-token-select_statement">select_statement</strong> ::=  SELECT [ JSON | DISTINCT ] ( <a class="reference internal" href="#grammar-token-select_clause"><code class="xref docutils literal"><span class="pre">select_clause</span></code></a> | '*' )
                       FROM <a class="reference internal" href="ddl.html#grammar-token-table_name"><code class="xref docutils literal"><span class="pre">table_name</span></code></a>
                       [ WHERE <a class="reference internal" href="#grammar-token-where_clause"><code class="xref docutils literal"><span class="pre">where_clause</span></code></a> ]
+                      [ GROUP BY <a class="reference internal" href="#grammar-token-group_by_clause"><code class="xref docutils literal"><span class="pre">group_by_clause</span></code></a> ]
                       [ ORDER BY <a class="reference internal" href="#grammar-token-ordering_clause"><code class="xref docutils literal"><span class="pre">ordering_clause</span></code></a> ]
                       [ PER PARTITION LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind_marker"><code class="xref docutils literal"><span class="pre">bind_marker</span></code></a>) ]
                       [ LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind_marker"><code class="xref docutils literal"><span class="pre">bind_marker</span></code></a>) ]
@@ -125,6 +127,7 @@
                       '(' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal"><span class="pre">operator</span></code></a> <a class="reference internal" href="types.html#grammar-token-tuple_literal"><code class="xref docutils literal"><span class="pre">tuple_literal</span></code></a>
                       TOKEN '(' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal"><span class="pre">term</span></code></a>
 <strong id="grammar-token-operator">operator        </strong> ::=  '=' | '&lt;' | '&gt;' | '&lt;=' | '&gt;=' | '!=' | IN | CONTAINS | CONTAINS KEY
+<strong id="grammar-token-group_by_clause">group_by_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> )*
 <strong id="grammar-token-ordering_clause">ordering_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> [ ASC | DESC ] ( ',' <a class="reference internal" href="ddl.html#grammar-token-column_name"><code class="xref docutils literal"><span class="pre">column_name</span></code></a> [ ASC | DESC ] )*
 </pre>
 <p>For instance:</p>
@@ -274,6 +277,19 @@
 <code class="docutils literal"><span class="pre">CONTAINS</span></code> applies to the map values. The <code class="docutils literal"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operator may only be used on map columns and applies to the
 map keys.</p>
 </div>
+<div class="section" id="grouping-results">
+<span id="group-by-clause"></span><h3>Grouping results<a class="headerlink" href="#grouping-results" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option allows to condense into a single row all selected rows that share the same values for a set
+of columns.</p>
+<p>Using the <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option, it is only possible to group rows at the partition key level or at a clustering column
+level. By consequence, the <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option only accept as arguments primary key column names in the primary key
+order. If a primary key column is restricted by an equality restriction it is not required to be present in the
+<code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause.</p>
+<p>Aggregate functions will produce a separate value for each group. If no <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause is specified,
+aggregates functions will produce a single value for all the rows.</p>
+<p>If a column is selected without an aggregate function, in a statement with a <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code>, the first value encounter
+in each group will be returned.</p>
+</div>
 <div class="section" id="ordering-results">
 <span id="ordering-clause"></span><h3>Ordering results<a class="headerlink" href="#ordering-results" title="Permalink to this headline">¶</a></h3>
 <p>The <code class="docutils literal"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause allows to select the order of the returned results. It takes as argument a list of column names
@@ -434,7 +450,8 @@
 automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
 the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
 is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
-default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values.</li>
+default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of <code class="docutils literal"><span class="pre">null</span></code> is equivalent
+to inserting with a TTL of 0.</li>
 </ul>
 </div>
 </div>
diff --git a/src/doc/3.7/cql/functions.html b/src/doc/3.7/cql/functions.html
index af5b86d..0bfa687 100644
--- a/src/doc/3.7/cql/functions.html
+++ b/src/doc/3.7/cql/functions.html
@@ -82,8 +82,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/index.html b/src/doc/3.7/cql/index.html
index f17870d..db976ed 100644
--- a/src/doc/3.7/cql/index.html
+++ b/src/doc/3.7/cql/index.html
@@ -75,8 +75,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/indexes.html b/src/doc/3.7/cql/indexes.html
index f8527b9..af0fb60 100644
--- a/src/doc/3.7/cql/indexes.html
+++ b/src/doc/3.7/cql/indexes.html
@@ -82,8 +82,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/json.html b/src/doc/3.7/cql/json.html
index 2213ec5..374d09b 100644
--- a/src/doc/3.7/cql/json.html
+++ b/src/doc/3.7/cql/json.html
@@ -85,8 +85,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/mvs.html b/src/doc/3.7/cql/mvs.html
index 7b706c2..24d6a2b 100644
--- a/src/doc/3.7/cql/mvs.html
+++ b/src/doc/3.7/cql/mvs.html
@@ -83,8 +83,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/security.html b/src/doc/3.7/cql/security.html
index 9577b5f..2d5216d 100644
--- a/src/doc/3.7/cql/security.html
+++ b/src/doc/3.7/cql/security.html
@@ -83,8 +83,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/triggers.html b/src/doc/3.7/cql/triggers.html
index 1f321d9..76536ac 100644
--- a/src/doc/3.7/cql/triggers.html
+++ b/src/doc/3.7/cql/triggers.html
@@ -82,8 +82,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/cql/types.html b/src/doc/3.7/cql/types.html
index da9b867..7f354e2 100644
--- a/src/doc/3.7/cql/types.html
+++ b/src/doc/3.7/cql/types.html
@@ -88,8 +88,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/data_modeling/index.html b/src/doc/3.7/data_modeling/index.html
index ca695e6..934e550 100644
--- a/src/doc/3.7/data_modeling/index.html
+++ b/src/doc/3.7/data_modeling/index.html
@@ -61,8 +61,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.10/development/code_style.html b/src/doc/3.7/development/code_style.html
similarity index 99%
rename from src/doc/3.10/development/code_style.html
rename to src/doc/3.7/development/code_style.html
index 730f7ab..393dc56 100644
--- a/src/doc/3.10/development/code_style.html
+++ b/src/doc/3.7/development/code_style.html
@@ -10,7 +10,7 @@
 
 doc-title: "Code Style"
 doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+  <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
       <link rel="up" title="Cassandra Development" href="index.html"/>
       <link rel="next" title="Review Checklist" href="how_to_review.html"/>
       <link rel="prev" title="Contributing Code Changes" href="patches.html"/>
diff --git a/src/doc/3.10/development/how_to_commit.html b/src/doc/3.7/development/how_to_commit.html
similarity index 98%
rename from src/doc/3.10/development/how_to_commit.html
rename to src/doc/3.7/development/how_to_commit.html
index e7f7852..52a3dd3 100644
--- a/src/doc/3.10/development/how_to_commit.html
+++ b/src/doc/3.7/development/how_to_commit.html
@@ -10,7 +10,7 @@
 
 doc-title: "How-to Commit"
 doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+  <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
       <link rel="up" title="Cassandra Development" href="index.html"/>
       <link rel="next" title="Frequently Asked Questions" href="../faq/index.html"/>
       <link rel="prev" title="Review Checklist" href="how_to_review.html"/>
diff --git a/src/doc/3.10/development/how_to_review.html b/src/doc/3.7/development/how_to_review.html
similarity index 98%
rename from src/doc/3.10/development/how_to_review.html
rename to src/doc/3.7/development/how_to_review.html
index 644e1d4..401f179 100644
--- a/src/doc/3.10/development/how_to_review.html
+++ b/src/doc/3.7/development/how_to_review.html
@@ -10,7 +10,7 @@
 
 doc-title: "Review Checklist"
 doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+  <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
       <link rel="up" title="Cassandra Development" href="index.html"/>
       <link rel="next" title="How-to Commit" href="how_to_commit.html"/>
       <link rel="prev" title="Code Style" href="code_style.html"/>
diff --git a/src/doc/3.10/development/ide.html b/src/doc/3.7/development/ide.html
similarity index 99%
rename from src/doc/3.10/development/ide.html
rename to src/doc/3.7/development/ide.html
index 8c0b119..7a2edd1 100644
--- a/src/doc/3.10/development/ide.html
+++ b/src/doc/3.7/development/ide.html
@@ -10,7 +10,7 @@
 
 doc-title: "Building and IDE Integration"
 doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+  <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
       <link rel="up" title="Cassandra Development" href="index.html"/>
       <link rel="next" title="Testing" href="testing.html"/>
       <link rel="prev" title="Cassandra Development" href="index.html"/>
diff --git a/src/doc/3.10/development/index.html b/src/doc/3.7/development/index.html
similarity index 98%
rename from src/doc/3.10/development/index.html
rename to src/doc/3.7/development/index.html
index efe555a..ef801f7 100644
--- a/src/doc/3.10/development/index.html
+++ b/src/doc/3.7/development/index.html
@@ -8,7 +8,7 @@
 
 doc-title: "Cassandra Development"
 doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+  <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
       <link rel="next" title="Building and IDE Integration" href="ide.html"/>
       <link rel="prev" title="Troubleshooting" href="../troubleshooting/index.html"/>
 '
diff --git a/src/doc/3.10/development/patches.html b/src/doc/3.7/development/patches.html
similarity index 99%
rename from src/doc/3.10/development/patches.html
rename to src/doc/3.7/development/patches.html
index 7edb955..6cfe38e 100644
--- a/src/doc/3.10/development/patches.html
+++ b/src/doc/3.7/development/patches.html
@@ -10,7 +10,7 @@
 
 doc-title: "Contributing Code Changes"
 doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+  <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
       <link rel="up" title="Cassandra Development" href="index.html"/>
       <link rel="next" title="Code Style" href="code_style.html"/>
       <link rel="prev" title="Testing" href="testing.html"/>
diff --git a/src/doc/3.10/development/testing.html b/src/doc/3.7/development/testing.html
similarity index 99%
rename from src/doc/3.10/development/testing.html
rename to src/doc/3.7/development/testing.html
index bcdee26..3615bef 100644
--- a/src/doc/3.10/development/testing.html
+++ b/src/doc/3.7/development/testing.html
@@ -10,7 +10,7 @@
 
 doc-title: "Testing"
 doc-header-links: '
-  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+  <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
       <link rel="up" title="Cassandra Development" href="index.html"/>
       <link rel="next" title="Contributing Code Changes" href="patches.html"/>
       <link rel="prev" title="Building and IDE Integration" href="ide.html"/>
diff --git a/src/doc/3.7/faq/index.html b/src/doc/3.7/faq/index.html
index 41689ad..cc5d047 100644
--- a/src/doc/3.7/faq/index.html
+++ b/src/doc/3.7/faq/index.html
@@ -9,8 +9,8 @@
 doc-title: "Frequently Asked Questions"
 doc-header-links: '
   <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
-      <link rel="next" title="Reporting bugs and contributing" href="../bugs.html"/>
-      <link rel="prev" title="Troubleshooting" href="../troubleshooting/index.html"/>
+      <link rel="next" title="Reporting Bugs and Contributing" href="../bugs.html"/>
+      <link rel="prev" title="How-to Commit" href="../development/how_to_commit.html"/>
 '
 doc-search-path: "../search.html"
 
@@ -61,6 +61,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Frequently Asked Questions</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="#why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses">Why can&#8217;t I set <code class="docutils literal"><span class="pre">listen_address</span></code> to listen on 0.0.0.0 (all my addresses)?</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#what-ports-does-cassandra-use">What ports does Cassandra use?</a></li>
@@ -83,7 +84,7 @@
 <li class="toctree-l2"><a class="reference internal" href="#why-bootstrapping-a-new-node-fails-with-a-stream-failed-error">Why bootstrapping a new node fails with a &#8220;Stream failed&#8221; error?</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -300,10 +301,10 @@
           
           <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
             
-            <a href="../bugs.html" class="btn btn-default pull-right " role="button" title="Reporting bugs and contributing" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            <a href="../bugs.html" class="btn btn-default pull-right " role="button" title="Reporting Bugs and Contributing" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
             
             
-            <a href="../troubleshooting/index.html" class="btn btn-default" role="button" title="Troubleshooting" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            <a href="../development/how_to_commit.html" class="btn btn-default" role="button" title="How-to Commit" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
             
           </div>
           
diff --git a/src/doc/3.7/genindex.html b/src/doc/3.7/genindex.html
index 38a65ec..b7e598d 100644
--- a/src/doc/3.7/genindex.html
+++ b/src/doc/3.7/genindex.html
@@ -60,8 +60,9 @@
 <li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/getting_started/configuring.html b/src/doc/3.7/getting_started/configuring.html
index 15c0cc0..3dc2351 100644
--- a/src/doc/3.7/getting_started/configuring.html
+++ b/src/doc/3.7/getting_started/configuring.html
@@ -76,8 +76,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/getting_started/drivers.html b/src/doc/3.7/getting_started/drivers.html
index f29dba3..75f9c5a 100644
--- a/src/doc/3.7/getting_started/drivers.html
+++ b/src/doc/3.7/getting_started/drivers.html
@@ -85,8 +85,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/getting_started/index.html b/src/doc/3.7/getting_started/index.html
index c842dbe..531eb9d 100644
--- a/src/doc/3.7/getting_started/index.html
+++ b/src/doc/3.7/getting_started/index.html
@@ -67,8 +67,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/getting_started/installing.html b/src/doc/3.7/getting_started/installing.html
index 6dc9d26..bb06366 100644
--- a/src/doc/3.7/getting_started/installing.html
+++ b/src/doc/3.7/getting_started/installing.html
@@ -75,8 +75,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/getting_started/querying.html b/src/doc/3.7/getting_started/querying.html
index 3433d93..8ea9364 100644
--- a/src/doc/3.7/getting_started/querying.html
+++ b/src/doc/3.7/getting_started/querying.html
@@ -74,8 +74,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/index.html b/src/doc/3.7/index.html
index d88f85d..2bc6228 100644
--- a/src/doc/3.7/index.html
+++ b/src/doc/3.7/index.html
@@ -49,28 +49,24 @@
       <span class="linkdescr">CQL reference documentation</span></p>
     </td>
     <td class="right-column">
-      <p class="biglink"><a class="biglink" href="faq/index.html">FAQs</a><br/>
-      <span class="linkdescr">Frequently Asked Questions (with answers!)</span></p>
+      <p class="biglink"><a class="biglink" href="development/index.html">Cassandra Development</a><br/>
+      <span class="linkdescr">Learn how to improve Cassandra and contribute patches</span></p>
     </td>
   </tr>
   <tr>
     <td class="left-column">
-      <p class="biglink"><a class="biglink" href="configuration/index.html">Configuration</a><br/>
-      <span class="linkdescr">Cassandra's handles and knobs</span></p>
+      <p class="biglink"><a class="biglink" href="faq/index.html">FAQs</a><br/>
+      <span class="linkdescr">Frequently Asked Questions (with answers!)</span></p>
     </td>
     <td class="right-column">
+      <p class="biglink"><a class="biglink" href="configuration/index.html">Configuration</a><br/>
+      <span class="linkdescr">Cassandra's handles and knobs</span></p>
     </td>
   </tr>
 </table>
 
 <h3>Meta informations</h3>
 
-<!--
-<div class="doc-landing-metainfos">
-<p class="biglink"><a class="biglink" href="bugs.html">Reporting bugs</a></p>
-<p class="biglink"><a class="biglink" href="contactus.html">Contact us</a></p>
-</div>
--->
 <ul>
   <li><a class="biglink" href="bugs.html">Reporting bugs</a></li>
   <li><a class="biglink" href="contactus.html">Contact us</a></li>
diff --git a/src/doc/3.7/objects.inv b/src/doc/3.7/objects.inv
index 996d069..a895888 100644
--- a/src/doc/3.7/objects.inv
+++ b/src/doc/3.7/objects.inv
Binary files differ
diff --git a/src/doc/3.7/operating/backups.html b/src/doc/3.7/operating/backups.html
index 853f17d..2515869 100644
--- a/src/doc/3.7/operating/backups.html
+++ b/src/doc/3.7/operating/backups.html
@@ -80,8 +80,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/bloom_filters.html b/src/doc/3.7/operating/bloom_filters.html
index 58a309b..cfb5ea5 100644
--- a/src/doc/3.7/operating/bloom_filters.html
+++ b/src/doc/3.7/operating/bloom_filters.html
@@ -83,8 +83,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/bulk_loading.html b/src/doc/3.7/operating/bulk_loading.html
index 271669c..382109f 100644
--- a/src/doc/3.7/operating/bulk_loading.html
+++ b/src/doc/3.7/operating/bulk_loading.html
@@ -80,8 +80,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/cdc.html b/src/doc/3.7/operating/cdc.html
index 885d240..5d2355d 100644
--- a/src/doc/3.7/operating/cdc.html
+++ b/src/doc/3.7/operating/cdc.html
@@ -87,8 +87,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/compaction.html b/src/doc/3.7/operating/compaction.html
index 62854a9..67e1901 100644
--- a/src/doc/3.7/operating/compaction.html
+++ b/src/doc/3.7/operating/compaction.html
@@ -98,8 +98,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -138,6 +139,12 @@
 <dd>rebuild the secondary indexes on the node.</dd>
 <dt>Anticompaction</dt>
 <dd>after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.</dd>
+<dt>Sub range compaction</dt>
+<dd>It is possible to only compact a given sub range - this could be useful if you know a token that has been
+misbehaving - either gathering many updates or many deletes. (<code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">compact</span> <span class="pre">-st</span> <span class="pre">x</span> <span class="pre">-et</span> <span class="pre">y</span></code>) will pick
+all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
+most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
+the resulting sstable will end up in L0.</dd>
 </dl>
 </div>
 <div class="section" id="when-is-a-minor-compaction-triggered">
diff --git a/src/doc/3.7/operating/compression.html b/src/doc/3.7/operating/compression.html
index 39c0d41..138e25d 100644
--- a/src/doc/3.7/operating/compression.html
+++ b/src/doc/3.7/operating/compression.html
@@ -86,8 +86,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/hardware.html b/src/doc/3.7/operating/hardware.html
index 06eafd1..2e9bb6e 100644
--- a/src/doc/3.7/operating/hardware.html
+++ b/src/doc/3.7/operating/hardware.html
@@ -86,8 +86,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/hints.html b/src/doc/3.7/operating/hints.html
index 247e6f1..cdbbd87 100644
--- a/src/doc/3.7/operating/hints.html
+++ b/src/doc/3.7/operating/hints.html
@@ -80,8 +80,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/index.html b/src/doc/3.7/operating/index.html
index 3ee2c34..d3aa0d7 100644
--- a/src/doc/3.7/operating/index.html
+++ b/src/doc/3.7/operating/index.html
@@ -77,8 +77,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -170,6 +171,7 @@
 <li class="toctree-l2"><a class="reference internal" href="metrics.html#sstable-index-metrics">SSTable Index Metrics</a></li>
 <li class="toctree-l2"><a class="reference internal" href="metrics.html#bufferpool-metrics">BufferPool Metrics</a></li>
 <li class="toctree-l2"><a class="reference internal" href="metrics.html#client-metrics">Client Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#jvm-metrics">JVM Metrics</a></li>
 <li class="toctree-l2"><a class="reference internal" href="metrics.html#jmx">JMX</a></li>
 <li class="toctree-l2"><a class="reference internal" href="metrics.html#metric-reporters">Metric Reporters</a></li>
 </ul>
diff --git a/src/doc/3.7/operating/metrics.html b/src/doc/3.7/operating/metrics.html
index c0f199e..13f31ba 100644
--- a/src/doc/3.7/operating/metrics.html
+++ b/src/doc/3.7/operating/metrics.html
@@ -90,6 +90,7 @@
 <li class="toctree-l3"><a class="reference internal" href="#sstable-index-metrics">SSTable Index Metrics</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#bufferpool-metrics">BufferPool Metrics</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#client-metrics">Client Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jvm-metrics">JVM Metrics</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#jmx">JMX</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#metric-reporters">Metric Reporters</a></li>
 </ul>
@@ -100,8 +101,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -1376,6 +1378,182 @@
 </tbody>
 </table>
 </div>
+<div class="section" id="jvm-metrics">
+<h2>JVM Metrics<a class="headerlink" href="#jvm-metrics" title="Permalink to this headline">¶</a></h2>
+<p>JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using <a class="reference internal" href="#metric-reporters">Metric Reporters</a>.</p>
+<div class="section" id="bufferpool">
+<h3>BufferPool<a class="headerlink" href="#bufferpool" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal"><span class="pre">jvm.buffers.&lt;direct|mapped&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal"><span class="pre">java.nio:type=BufferPool</span> <span class="pre">name=&lt;direct|mapped&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="22%" />
+<col width="12%" />
+<col width="66%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Capacity</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated total capacity of the buffers in this pool</td>
+</tr>
+<tr class="row-odd"><td>Count</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated number of buffers in the pool</td>
+</tr>
+<tr class="row-even"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated memory that the Java virtual machine is using for this buffer pool</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="filedescriptorratio">
+<h3>FileDescriptorRatio<a class="headerlink" href="#filedescriptorratio" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal"><span class="pre">jvm.fd.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal"><span class="pre">java.lang:type=OperatingSystem</span> <span class="pre">name=&lt;OpenFileDescriptorCount|MaxFileDescriptorCount&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="18%" />
+<col width="49%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to total file descriptors</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="garbagecollector">
+<h3>GarbageCollector<a class="headerlink" href="#garbagecollector" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal"><span class="pre">jvm.gc.&lt;gc_type&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal"><span class="pre">java.lang:type=GarbageCollector</span> <span class="pre">name=&lt;gc_type&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="25%" />
+<col width="14%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Count</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of collections that have occurred</td>
+</tr>
+<tr class="row-odd"><td>Time</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Approximate accumulated collection elapsed time in milliseconds</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="memory">
+<h3>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal"><span class="pre">jvm.memory.&lt;heap/non-heap/total&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal"><span class="pre">java.lang:type=Memory</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Committed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that is committed for the JVM to use</td>
+</tr>
+<tr class="row-even"><td>Init</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
+</tr>
+<tr class="row-odd"><td>Max</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Maximum amount of memory in bytes that can be used for memory management</td>
+</tr>
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to maximum memory</td>
+</tr>
+<tr class="row-odd"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of used memory in bytes</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="memorypool">
+<h3>MemoryPool<a class="headerlink" href="#memorypool" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal"><span class="pre">jvm.memory.pools.&lt;memory_pool&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal"><span class="pre">java.lang:type=MemoryPool</span> <span class="pre">name=&lt;memory_pool&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Committed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that is committed for the JVM to use</td>
+</tr>
+<tr class="row-even"><td>Init</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
+</tr>
+<tr class="row-odd"><td>Max</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Maximum amount of memory in bytes that can be used for memory management</td>
+</tr>
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to maximum memory</td>
+</tr>
+<tr class="row-odd"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of used memory in bytes</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
 <div class="section" id="jmx">
 <h2>JMX<a class="headerlink" href="#jmx" title="Permalink to this headline">¶</a></h2>
 <p>Any JMX based client can access metrics from cassandra.</p>
diff --git a/src/doc/3.7/operating/read_repair.html b/src/doc/3.7/operating/read_repair.html
index 2980ffe..158eeed 100644
--- a/src/doc/3.7/operating/read_repair.html
+++ b/src/doc/3.7/operating/read_repair.html
@@ -80,8 +80,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/repair.html b/src/doc/3.7/operating/repair.html
index 1695b6f..4ca62e0 100644
--- a/src/doc/3.7/operating/repair.html
+++ b/src/doc/3.7/operating/repair.html
@@ -80,8 +80,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/security.html b/src/doc/3.7/operating/security.html
index cda6d48..50c7fd2 100644
--- a/src/doc/3.7/operating/security.html
+++ b/src/doc/3.7/operating/security.html
@@ -88,8 +88,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/snitch.html b/src/doc/3.7/operating/snitch.html
index 2b77db1..3e8aaae 100644
--- a/src/doc/3.7/operating/snitch.html
+++ b/src/doc/3.7/operating/snitch.html
@@ -84,8 +84,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/operating/topo_changes.html b/src/doc/3.7/operating/topo_changes.html
index da28041..b1f2725 100644
--- a/src/doc/3.7/operating/topo_changes.html
+++ b/src/doc/3.7/operating/topo_changes.html
@@ -88,8 +88,9 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/search.html b/src/doc/3.7/search.html
index a88cd59..1d70783 100644
--- a/src/doc/3.7/search.html
+++ b/src/doc/3.7/search.html
@@ -64,8 +64,9 @@
 <li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/searchindex.js b/src/doc/3.7/searchindex.js
index ccf3132..70faa68 100644
--- a/src/doc/3.7/searchindex.js
+++ b/src/doc/3.7/searchindex.js
@@ -1 +1 @@
-Search.setIndex({envversion:50,filenames:["architecture/dynamo","architecture/guarantees","architecture/index","architecture/overview","architecture/storage_engine","bugs","configuration/cassandra_config_file","configuration/index","contactus","cql/appendices","cql/changes","cql/ddl","cql/definitions","cql/dml","cql/functions","cql/index","cql/indexes","cql/json","cql/mvs","cql/security","cql/triggers","cql/types","data_modeling/index","faq/index","getting_started/configuring","getting_started/drivers","getting_started/index","getting_started/installing","getting_started/querying","index","operating/backups","operating/bloom_filters","operating/bulk_loading","operating/cdc","operating/compaction","operating/compression","operating/hardware","operating/hints","operating/index","operating/metrics","operating/read_repair","operating/repair","operating/security","operating/snitch","operating/topo_changes","tools/cqlsh","tools/index","tools/nodetool","troubleshooting/index"],objects:{},objnames:{},objtypes:{},terms:{"03t04":21,"0x0000000000000003":14,"0x00000004":13,"100mb":6,"10mb":6,"10x":[6,34],"11e6":45,"128th":4,"12gb":36,"15m":39,"160mb":34,"16mb":[23,34],"180kb":6,"1st":21,"250m":6,"256mb":6,"256th":6,"2e10":10,"2gb":36,"2nd":[6,11,43],"2xlarg":36,"327e":45,"32gb":36,"32mb":[6,23],"36x":27,"3ff3e5109f22":13,"3gb":35,"3rd":[6,39,43],"40f3":13,"4ae3":13,"4xlarg":36,"50kb":6,"50mb":[6,34],"512mb":6,"5573e5b09f14":13,"5kb":6,"5mb":34,"64k":6,"64kb":[11,35],"6tb":36,"749d6eec0353b12c":27,"75th":39,"86400000m":6,"8gb":36,"8th":[6,33],"90th":39,"95ac6470":45,"95th":39,"98th":39,"99th":39,"9th":39,"\u00eatre":9,"_cache_max_entri":42,"_if_":6,"_must_":6,"_trace":39,"_udt":14,"_update_interval_in_m":42,"_use":14,"_validity_in_m":42,"boolean":[9,11,12,14,17,19,21,45],"break":34,"byte":[6,9,13,21,39],"case":[6,10,11,12,13,14,16,17,18,21,23,31,36,42,44,45],"class":[6,11,14,21,34,35,38,42],"default":[4,6,10,11,13,14,17,19,21,23,24,27,31,33,34,35,39,42,44,45],"delete":[9,10],"double":[9,21],"enum":9,"export":[27,39,45],"false":12,"final":[14,19,34,36,42],"float":[9,10,11,12,14,17,21,31,35],"function":[6,9,10,11,12],"import":[11,14,21,24,34,36,39,45],"int":[9,10,11,13,14,17,18,19,21,33,35],"long":[6,13,21,23,34,39],"new":[0,4,6,10,11,14,16,17,18,19,20,21],"null":[9,12,13,14,17,18,21,45],"public":[6,14,23,27,42,43],"return":[6,11,13,14,16,17,18,19,21],"short":[6,21],"static":[6,9,10],"super":42,"switch":[6,10,19,23],"throw":[6,14],"true":[6,11,12,17,19,21,23,33,34,42,44,45],"try":[11,23,34,47],"var":[6,27],"while":[6,10,11,12,13,21,31,34,35,36,42,45],abil:[14,23,35],abilityid:16,abl:[6,14,23,34],about:[4,6,19,23,31,34,43,45],abov:[6,8,11,12,13,14,21,23,24,33,34,39],absenc:12,abstracttyp:21,accept:[0,6,10,11,12,17,31,44],access:[6,10,21,36,38,39],accord:[6,23],accordingli:[6,14,23],account:[6,21],accru:[34,39],accumul:[6,34],accur:[6,23,31],accuraci:31,acheiv:42,achiev:[34,39],achill:25,ack:6,acquir:[19,39],across:[6,11,19,39,42,43],action:[6,13],activ:[4,6,33,39,45],activetask:39,actual:[4,6,13,20,23,27,34,43],acycl:19,add:[0,6,9,10,11,21],addamsfamili:11,added:10,adding:[11,19,21,23,29,38,42],addit:[0,6,11,13,19,21,24,34,36,39,42,45],addition:[11,13,34],address:[6,8,17,21],adher:10,adjac:34,adjust:[6,31],advanc:6,advantag:36,advers:23,advic:23,advis:[6,12,21,23],aes:6,af08:13,afd:21,affect:[6,23,34],afford:6,after:[5,6,11,12,13,14,16,17,18,23,33,34,36,38,39,42,43],afunct:14,again:[6,34,44,45],against:[6,11,14,23,36,44,45],aggreg:[10,13],aggregate:9,aggregates:45,aid:12,akeyspac:14,algorithm:[6,11,44],alia:[10,13,25],alias:[6,10],alic:19,aliv:6,all:[0,6,9,11,12,13,14,17,18],allmemtableslivedatas:39,allmemtablesoffheaps:39,allmemtablesonheaps:39,alloc:[6,23,33,36,39],allow:[0,4,6,9,10,11,12],allowallauthent:[6,42],allowallauthor:[6,42],allowallinternodeauthent:6,almost:[6,14,21,34],alon:6,along:[6,13],alongsid:[28,45],alphanumer:[11,19],alreadi:[6,11,14,16,18,21,34,42],also:[0,4,6,10,11,12,13,14,17,18,19,21,23,24,34,36,39,42,44,45],alter:[9,10],alter_keyspace_stat:12,alter_role_stat:12,alter_table_instruct:11,alter_table_stat:12,alter_type_modif:21,alter_type_stat:[12,21],alter_user_stat:12,altere:[11,19],altern:[6,10,11,12,13,17,24,36,42],although:6,alwai:[0,6,9,10,11,13,14,18,21,23,34,36],amongst:11,amount:[6,11,13,21,23,34,35,36,39,44,45],amplif:36,anaggreg:14,analogu:13,analyt:31,ani:[0,6,10,11,12,13,14,17,18,19,20,21],anonym:[12,21],anoth:[6,11,14,19,21,34,42,45],another:11,anotherarg:14,anti:[6,21],anticip:11,anticompact:34,antientropystag:39,antipattern:36,any:[0,6,12,19,39,45],anymor:34,anyth:34,anywai:6,anywher:13,apach:[2,5,6,7,14,20,23,26,27],api:[6,8,11,15,17,28,43],appear:[12,14,34,45],append:[21,36,39,45],apple:21,appli:[6,10,11,12,13,19,21,23,39,45],applic:[6,11,19,42],apply:[9,13],approach:[4,34,44],appropri:[6,11,19,21,42,43,44],appropriat:[6,43],approxim:[34,39],apt:27,arbitrari:[11,12,21],arbitrarili:11,archiv:[6,33],aren:13,arg:14,argnam:14,argnum:14,argument:[11,13,14,16,17,23,24,35,45],arguments_declar:14,arguments_signatur:14,armor:27,around:[6,19,34,36,43],arrai:23,arriv:23,artifici:11,asap:10,asc:[9,11,13],ascend:[11,13],ascii:[9,11,14,17,21],ask:[5,42],aspect:11,assign:[6,13,23],associ:[6,11],assum:[6,11,14,42,43],assumpt:42,astyanax:25,async:[6,42],asynchron:[6,16,23,36],asynchroni:39,atabl:14,atom:[11,13,20],atomiclong:39,attemp:39,attempt:[0,6,11,16,18,19,21,23,34,39,42,45],attribut:34,auth:6,authenticatedus:6,authorizationproxi:42,authorize:[9,19],auto:[6,23],auto_bootstrap:44,autocompact:34,autogener:47,autom:8,automat:[6,13,14,16],avail:[0,6,8,11,14,19,27,33,42,45],availabil:6,availabl:[6,43],ave:21,averag:[14,34,39],average_s:11,averagefin:14,averagest:14,avg_bucket_s:34,avoid:[6,11,12,31,34,36,42,43,45],awai:[44,45],awar:[0,11,31,35],aws:36,azure:36,b124:13,b70de1d0:13,back:[6,34,39,44],backend:6,background:[23,27,34,42],backpressur:6,backup:[6,29],backward:[6,10,11,15,19,21],bad:[6,14,23,43],balanc:44,banana:21,band:21,bar:12,base:[0,4,6,10,11,13,14,18,19,21,23,34,36,39,42,44],bash:23,basi:[6,23,35],basic:[11,34,36],batch:[6,9],batch_remove:39,batch_stat:12,batch_store:39,batchlog:[13,39],be34:13,beatl:21,beca:45,becaus:[6,13,14,27,34,35,42],becom:[4,6,11,14,19,34,39,42,44],been:[0,4,6,10,13,14,15,19,21,34,36,42],befor:[0,6,10,11,13,14,16,20,21,25,34,42,43,45],begin:[9,12,13,42,45],begintoken:45,behavior:[0,10,14,17,21,31,34,44],behind:[6,23,34],belong:[11,13,14,39],below:[6,11,12,13,17,19,21,27,34,45],benchmark:36,benefici:34,benefit:[31,34],besid:6,best:[6,34,42,43],best_effort:6,better:[6,34,36],between:[0,6,9,10,13,15,23,31,39,42,44],beyond:[6,45],big:34,bigger:[11,34],biggest:14,bigint:[9,11,14,17,21],bigintasblob:14,bin:[27,28,45],binari:[14,26],bind:[6,10,12,14,23],bind_mark:[12,13,18,21],biolog:11,birth:13,birth_year:13,bit:[6,14,17,21,23,35,36],bite:23,bitrot:11,bitstr:9,black:6,blank:[6,23],blindli:23,blob:[9,10,11,12],blobasbigint:14,blobastyp:14,block:[4,6,11,24,34,36,39,42],blog:[6,11,13],blog_til:13,blog_titl:13,bloom:[4,11,29],bloom_filter_fp_ch:[11,31],bloomfilterdiskspaceus:39,bloomfilterfalseposit:39,bloomfilterfalseratio:39,bloomfilteroffheapmemoryus:39,blunt:42,bnf:12,bob:[13,19],bodi:[11,12],boolstyle:45,boot:23,bootstrap:[0,6],born:13,both:[0,6,11,13,14,18,21,23,24,31,34,35,36,39,42,44,45],bottleneck:6,bottom:23,bound:[6,11,12,21,36,42],box:[6,42,43],bracket:12,braket:12,bring:6,brk:23,broadcast:6,broken:[34,39],browser:45,bucket:34,bucket_high:34,bucket_low:34,buffer:[4,6,39],bufferpool:38,build:[8,39],built:39,bump:10,burn:33,button:23,bytebuff:14,byteorderedpartition:[6,14],bytescompact:39,bytesflush:39,c73de1d3:13,cach:6,cachecleanupexecutor:39,cachenam:39,calcul:[6,31,33,34,39,43],call:[11,12,13,14,19],callback:39,called:[9,14],can:[0,4,5,6,8,9,10,11,12,13,14,16,17,18,19,20,21],cancel:10,candid:34,cannot:[6,9,11,13,14,17,18,19,21,34,42],cap:12,capabl:[6,23,45],capac:[6,33,39,43],captur:[6,29],care:[6,34],carlo:19,cas:6,cascommit:39,casprepar:39,caspropos:39,casread:39,cassablanca:21,cassafort:25,cassandra:[0,2,4,5],cassandra_home:[6,33,42],cassandraauthor:[6,42],cassandradaemon:27,cassandralogin:42,cassandrarolemanag:[6,42],casser:25,cassi:25,cast:[10,13],caswrite:39,cat:21,categor:39,categori:[11,12,13,14],caught:39,caus:[6,18,23,34,42],caution:6,caveat:42,cbc:6,cdc:[6,11],cdc_free_space_in_mb:33,cdc_raw:[6,33],cdccompactor:6,cell:[6,21,39],center:[6,11,21,23,43,44],central:[42,45],centric:19,certain:[6,9,11,19,34,42],certainli:14,certif:42,chain:19,chanc:31,chang:6,channel:[5,8],charact:[11,12,13,17,19,21,45],chat:8,cheap:6,check:[0,5,6,11,13,23,31,33,34,39,42],checksum:[11,35],chess:13,child:45,chmod:42,choic:[6,11,29,34],choos:[0,6,11,25,36,39],chosen:[0,6,11,14],chown:42,chrome:45,chunk:[4,6,23,35,45],chunk_length_in_kb:[11,35],chunk_length_kb:6,chunkcach:39,chunksize:45,churn:6,cipher:[6,42],cipher_suit:6,circular:19,citi:21,clash:12,class_nam:6,classpath:[6,14,21,39],claus:[10,11],clean:[6,39],cleanup:[23,34,38,39],click:13,client:[0,6,8,10,11,13,17,19,21,23,24],clientrequest:39,clock:6,clockr:6,clone:[23,45],close:[6,15,42],closer:31,cls:45,cluster:[0,4,6,10],clustering:[9,11,13],clustering_column:11,clustering_ord:11,code:[6,10,12,14,20,35,39],col:14,cold:6,collat:6,collect:[6,10,11,12,13,14,15,17],collection_liter:12,collection_typ:21,color:[21,45],column:[6,10],column_definit:11,column_nam:[11,13,16],columnfamili:[6,34],columnfamily:9,columns:13,colupdatetimedeltahistogram:39,com:[6,11,14,42],combin:[4,10,33,34],come:[6,42],comingl:34,comma:[6,11,12,13,24,42,44,45],command:[0,6,23,24,27,28],comment:[6,11],commit:[6,8,11,39],commitlog:2,commitlog_archiv:6,commitlogread:33,commitlogreadhandl:33,commitlogreplay:33,commitlogseg:6,common:0,common_nam:11,commun:[6,8,23,24,28,42],commut:23,compact:[4,6,9],compaction_window_s:34,compaction_window_unit:34,compactionbyteswritten:39,compactionexecutor:39,compactionhistori:34,compactionparamet:34,compactionparametersjson:34,compactionstat:34,compar:[6,34,39],compat:[6,10],compatilibi:21,compet:6,compil:45,complet:[6,13,14,23,34,39,42,44,45],completedtask:39,complex:[6,9,14,21],complexarg:14,compliant:[6,14,42],compon:[4,11,31,39,42],compos:[11,13,21],composit:11,compound:17,compress:[4,6],compressioninfo:4,compressionmetadataoffheapmemoryus:39,compressionratio:39,compressor:[6,11],compris:[4,11,35],compromis:42,comput:14,concaten:14,concept:[15,19,34],concern:[13,14],concret:[12,21],concurr:[6,36],concurrentmarksweep:36,condit:[6,10,12,13,19,21,34,39,42,45],conditionnotmet:39,conf:[6,23,24,27,39,42,45],config:[39,42,45],configur:[0,4],confirm:[6,8],conflict:[13,21],conform:18,confus:[10,12,23],conjunct:45,connect:[6,11,19,21],connectednativecli:39,connectedthriftcli:39,connector:[23,25,42],consecut:24,consequ:[11,21,36],conserv:6,consid:[0,6,13,21,24,31,34,36],consol:[24,45],constant:[10,11],constantli:[6,34],construct:12,constructor:6,consum:[31,33,39],consumpt:33,contact:6,contain:[0,6,8,11,12,13,15,18,19,21,33,34,35,42,45],contains:[9,10,13,16],contend:[6,39],content:[4,6,11,12,13,29,34,45],contentionhistogram:39,context:[9,19,23,42],contigu:13,continu:[0,6,34,42,43],contrarili:12,contrast:42,contributor:27,control:[0,6,10,11,13,15],conveni:[9,12,14,17,44],convent:[6,11],convers:[10,11],convert:[10,11,13,14,34],coordin:[0,6,11,13,14,21,23,39],coordinatorreadlat:39,coordinatorscanlat:39,copi:[0,23,34,45],core:[6,14,36],correct:[10,27,34,35],correctli:[6,11,23,34,42],correl:[6,10,43],correspond:[6,11,13,14,18,21,23,33,43],corrupt:[6,11,34,35,36],cost:[6,13,21,35],could:[12,21,34,45],couldn:27,count:[6,9,13],counter:[6,9],counter_mutation:39,countercach:39,countermutationstag:39,countri:[13,21],country_cod:21,coupl:[0,6],cours:[6,13],cover:[23,26,34,39],cpu:[11,33,35],cqerl:25,cql3:[11,14,45],cql:6,cql_type:[11,12,13,14,19,21],cqlc:25,cqldefinit:14,cqlsh:[23,26,27],crash:36,crc32:4,crc:4,crc_check_chanc:[11,35],creat:[6,10,11,13,14,16,17,18],create:[9,10],create_aggregate_stat:12,create_function_stat:12,create_index_stat:12,create_keyspace_stat:12,create_materialized_view_stat:12,create_role_stat:12,create_table_stat:12,create_trigger_stat:12,create_type_stat:[12,21],create_user_stat:12,createkeystor:6,creation:[11,13,14,18,21],creator:19,credenti:6,critic:42,cross:[6,23,43],crossnodedroppedlat:39,cryptographi:6,csv:45,cuddli:21,current:[6,9,11,13,14,19,21,27,34,39,44,45],currentlyblockedtask:39,custom:[6,9,10,11,14,15,16,19],custom_option1:19,custom_option2:19,custom_typ:[14,21],cute:21,cycl:33,dai:[17,21,34],danger:6,dash:12,data:[0,4,6,10],data_read:19,data_writ:19,databas:[12,13,15],datacent:[0,6,43],datacenter1:6,dataset:6,datastax:[6,11,14,25],datatyp:14,date:[9,10,11,14,15,17],dateof:[10,14],datestamp:17,datetieredcompactionstrategi:[11,34],days:34,db_user:42,dba:42,dc1:[6,11,42],dc2:[6,11,42],dcassandra:[34,39,42,44],dclocal_read_repair_ch:[0,11,34],dcom:42,ddl:[11,45],ddl_statement:12,dead:[6,38],dead_node_ip:44,deb:27,debian:[23,26],debug:[24,45],decid:[9,34,43],decim:[11,14,17,21,45],decimal:[9,21],decimalsep:45,declar:[11,12,14,21],decod:17,decommiss:[6,44],decompress:35,decreas:34,decrement:[13,21],decrypt:6,dedic:6,deem:6,default_time_to_l:[10,11,13],default_weight:6,defend:23,defin:[0,6,9,10,11,12,13],deflat:6,deflatecompressor:[11,35],degrad:6,delet:[6,10,11,12,13,21],delete_stat:[12,13],delimit:6,deliv:[0,6],deliveri:6,delta:39,demand:42,deni:23,denorm:21,denot:12,dens:31,depend:[4,6,11,12,13,14,34],deploi:[23,24],deploy:[6,42,43],deprec:[10,11,15,23,34],deprecated:14,desc:[9,11,13,45],descend:[11,13],describ:[2,6,7,10,11,12,13,14,15,17,21,46],describe:[9,19,31,42],descript:[6,10,11,14,21,39,45],design:[14,33,34,36],desir:[16,21,23],destin:[33,45],detail:[5,10,11,12,13,14,21,23],determin:[0,6,13,19,31,35,43],determinist:23,dev:[6,8,11,23],develop:[8,36],dfb660d92ad8:45,dht:6,dictat:[6,42],did:39,die:6,diff:15,differ:[0,6,11,12,13,14,15,19,21,23,24,27,34,35,36,39,44],difficult:6,difficulti:21,digest:4,digit:[17,21,23],diminish:21,direct:[6,11,17,19],directli:[13,18,19,34],director:13,directori:[6,20,23],dirti:6,disabl:[6,11,14],disable_stcs_in_l0:34,disableautocompact:34,disallow:6,discard:[6,33],disconnect:34,discourag:[11,21],discov:23,discuss:[8,21],disk:[4,6,11],displai:[11,45],disrupt:[23,42],dist:27,distinct:[0,9,10,13],distinguish:[9,14],distribut:[6,23,34,39,42,44],divid:12,djava:[23,42],dml:20,dml_statement:12,dmx4jaddress:39,dmx4jport:39,dns:23,doc:[6,33,42],document:[5,12,14,15,17,28],doe:[6,11,13,14,16,17,18,19,21],doesn:[14,21,23],dollar:[10,12],domain:42,don:[5,13,23,24,34,44],done:[6,11,13,21,24,28,34],doubl:[6,9,10,11,12,14,17,21,39,43],down:[6,19,34,39,43,44],download:[6,27,39],downward:19,drive:[6,34,36],driver:[6,12,14],drop:[6,9,10],drop_aggregate_stat:12,drop_function_stat:12,drop_index_stat:12,drop_keyspace_stat:12,drop_materialized_view_stat:12,drop_role_stat:12,drop_table_stat:12,drop_trigger_stat:12,drop_type_stat:[12,21],drop_user_stat:12,droppabl:34,droppedmessag:38,droppedmetr:39,droppedmut:39,dropwizard:39,due:[11,13,23,27,39,44],dump:45,durable_writ:11,durat:[6,19,21,34,39],dure:[6,11,14,20,23,34,35,39,42,44,45],dynam:[6,38,42],dynamic_snitch:43,each:[0,4,6,10,11,12,13,14,17,18,19,21],each_quorum:0,earli:[6,12],earlier:15,easi:9,easier:0,easiest:23,ebs:36,ec2:[6,36,43],ec2multiregionsnitch:[6,43],ec2snitch:[6,43],ecc:36,echo:27,edit:[24,39,42],edition:27,edu:27,effect:[6,11,23,31,35,42],effectiv:39,effici:[6,11,34,43,44],effort:6,either:[6,8,12,13,14,16,21,23,27,28,33,34,39,42],elaps:34,element:[21,45],elig:6,els:[11,13],email:[8,16,21],emploi:31,empti:[6,10,11,12,45],enabl:[6,11,14,17,19,23],enableautocompact:34,encapsul:39,enclos:[9,10,12,14,19],enclosur:12,encod:[17,21,45],encode:15,encoding:45,encount:[5,27,39],encourag:[6,11],encrypt:[6,42],encryption:38,encryption_opt:6,end:[21,23,34,42,45],endpoint:[39,43],endtoken:45,enforc:[17,42],engin:[11,39],engine:2,enhanc:36,enough:[0,6,21,23,24,34,43,45],enqueu:6,ensur:[11,13,18,20,23,35,42],entail:23,enter:[23,45],entir:[0,4,6,14,21,23,31,34,42,44,45],entri:[4,6,13],entries:[9,16],entropi:6,entry_titl:13,enumer:19,env:[23,24,39,42],environ:[0,5,6,23],ephemer:36,epoch:21,equal:[0,6,10,11,13,34],equival:[10,11,12,13,14,19,34],eras:11,erlcass:25,err:45,errfile:45,error:[6,11,12,14,16,18,19,21],escap:[12,17],especi:[23,34,45],essenti:[6,14,23,45],essential:0,establish:[6,19,43],estim:39,estimat:39,estimatedcolumncounthistogram:39,estimatedpartitioncount:39,estimatedpartitionsizehistogram:39,etc:[6,18,21,23,24,27,34,39,42],eth0:6,eth1:6,ev1:21,even:[0,6,10,12,13,14,17,21],evenli:6,event:[13,21,34,45],event_typ:13,eventu:13,eventual:4,ever:[23,36],everi:[4,6,11,13,14,18,19,20,21,28,31,34,36,45],everyth:[12,23],evict:39,evil:[6,14],exact:[11,12,14,35],exactli:[11,14,18,42],exampl:[0,6,11,13,14,17,19,27,28,34,42,43,45],exaust:6,excalibur:11,exce:[4,6,17],exceed:[6,36],excel:11,excelsior:11,except:[0,13,14,17,23,39],exception:39,excess:31,exchang:[6,23],exclud:39,exclus:21,execut:[6,11,12,13,14,19,28,34,39,45],execute:[9,19,42],exhaust:6,exhibit:13,exist:[6,11,12,13,14,16,17,18,19,20,21],exists:[9,10,11,13,14,16,18,19,20,21],expect:[6,10,12,21,34,42],expens:[6,31,43],experi:[6,34],experienc:6,expir:[10,11,13,21],expiri:34,explain:27,explicit:10,explicitli:[6,10,13,17,21,34,43],expon:10,exponenti:39,expos:[6,42],express:[0,6,10,12,43],expung:23,extend:21,extens:[11,42],extension:6,extern:[39,44],extra:[0,6,11,34],extract:27,extrem:6,extreme:13,fact:23,factor:[0,6,11],fail:[6,13,14,21],fairli:[6,33,42],fake:14,fallback:[6,43],fals:[6,11,17,19,21,31,33,34,35,39,42,44,45],famili:[6,36],fast:[6,31,34],faster:[6,35,36],fastest:[6,43],fatal:6,fault:23,fav:[16,21],fax:21,fct:14,fct_using_udt:14,fear:23,feasibl:21,featur:42,fed:6,fetch:[6,11,45],few:[34,36],fewer:6,fffffffff:[17,21],field:[10,13,14,17,21,31],field_definit:21,field_nam:13,fifteen:39,fifteenminutecachehitr:39,figur:34,file:4,filenam:[11,45],filesystem:42,fill:[33,34],fillion:13,filter:[4,11],filtering:[9,13,18],finalfunc:[9,14],find:[6,27,31,34,44],fine:[6,42],finer:6,fips:[6,42],fire:20,firefox:45,firewal:[6,23,24,43],first:[5,6,11,14,21,23,26,34,36,42,45],firstnam:13,fit:[6,34,39],five:39,fiveminutecachehitr:39,fix:[6,10,12,23,34,36],flag:[6,13,33,39,44],flexibl:42,flight:[6,42],flip:11,flow:19,fluent:25,flush:[4,6,33,34,36,39],fname:14,follow:[0,5,6,8,9,10,11,12,13,14,17,18,19,21,23,24,27,29,33,34,35,39,42,43,45],font:12,foo:[11,12,33],forc:[4,6,11,13,45],foreground:[24,27],forev:34,forget:5,form:[6,10,11,12,14,19],formal:12,format:[6,10,17,21,39,45],former:39,forward:[6,11],found:[5,12,14,15,24,28,42,45],four:13,fraction:6,frame:6,franc:13,free:[11,21,39],freed:4,freenod:8,frequenc:33,frequent:6,fresh:44,friendli:21,from:[0,4,6,9,11,12,13,14,15,17,18,19,21],fromjson:15,frozen:[9,10,11,13,14,21],fruit:21,fsync:[6,39],full:[6,9,11,13,16,19,27,28,34,35,42,45],fulli:[6,11,12,14],function_cal:12,function_nam:[13,14,19],functions:[9,19,45],fundament:17,further:[6,11,18,21],furthermor:[10,13,42],futur:[6,9,10,11,21],g1gc:36,game:[14,21],garbag:11,gaug:39,gaurante:0,gc_grace_second:11,gce:[23,36],gcg:6,gener:[0,2,4,6,8,11,12,13,14,17,21,23,36,42,45],get:[6,8,23],getint:14,getlocalhost:[6,23],getlong:14,getstr:14,getter:19,git:5,give:[18,19,21],given:[0,6,11,12,13,14,16,21,31,34,42,44,45],global:[6,45],gmt:21,goal:[6,34],gocassa:25,gocql:25,gone:6,good:[6,23,45],googl:45,gori:23,gossipingpropertyfilesnitch:[6,43],gossipstag:39,gp2:36,gpg:27,grai:21,grain:42,grammar:[11,12],grant:[6,9],grant_permission_stat:12,grant_role_stat:12,granular:6,graph:19,gravesit:11,great:34,greater:[0,6,23,43],greatli:6,green:21,group:[6,10,11,13,19,34,39,42,43],grow:21,guarante:0,guid:6,guidelin:[10,36],had:[10,34],half:[6,23],hand:[6,13,36],handl:[6,14,23,33,36,39,42],handoff:[6,39,44],happen:[6,13],happili:36,hard:[6,14,34,36],hardwar:[6,29],hash:[4,6,34],have:[0,5,6,9,10,11,12,13,14,15,18,19,21,23,24,27,31,34,35,36,39,42,43],hayt:25,hdd:[6,36],header:45,headroom:6,heap:[4,6],heap_buff:6,heavi:6,heavili:36,held:[6,36],help:[5,6,10,28],henc:[5,6,11,21],here:[6,23,25,34,39,42],hex:[12,17],hexadecim:[10,12],hibern:44,hidden:44,hierarch:19,hierarchi:19,high:[0,23,34,36],higher:[0,19,31,34,39,44],highest:34,highli:[23,36,42],hint:[0,6,11,12,23,24,29],hintedhandoff:[6,38],hintedhandoffmanag:39,hints_creat:39,hints_not_stor:39,hintsdispatch:39,histogram:[34,39],hit:[6,34,39],hitrat:39,hold:[0,6,10,13,19,23,34,45],home:[21,45],hope:34,host:6,hostnam:[6,23],hot:[6,39],hotspot:11,hotspotdiagnost:42,hottest:6,hour:[6,21,34],hours:34,how:[0,6,7,8,11,12,21],howev:[6,9,10,11,12,13,15,17,18,21,23,24,27,31,35,36,42,45],hsha:6,html:6,http:[6,27,39],httpadaptor:39,hub:23,human:11,iauthent:6,iauthor:6,icompressor:35,idea:[6,14,23,34,45],ideal:6,idealli:[34,42],idempot:[13,21],idemptot:21,ident:0,identifi:[6,9,10,11],idiomat:8,idl:6,ieee:[17,21],iendpointsnitch:[6,43],ignor:[0,6,10,14,21,45],ignore:6,iinternodeauthent:6,illeg:14,illustr:19,imag:21,imagin:34,immedi:[6,11,21,31,35],immut:[4,23,35,36],impact:[6,11,34],implement:[6,10,13,14,18,19,23,33,35,42,43],impli:[11,12,21],implic:[0,42],implicitli:14,import_:45,important:11,imposs:34,improv:[0,6,11,21,31,34,36,43,44,45],inact:23,includ:[4,6,10,11,12,13,18,19,21,33,34,36,39,42,45],include:39,incom:6,incomingbyt:39,incompat:[6,10],incompatible:6,inconsist:[0,23],incorrect:23,increas:[6,11,23,31,35,36,39,43,44],increment:[6,10,13,21,34],incur:[13,21,39],independ:[11,34,36,42],index:[4,6,9,10,11,12,13,15],index_identifi:16,index_nam:16,indexclass:16,indexedentrys:39,indexinfocount:39,indexinfoget:39,indexsummaryoffheapmemoryus:39,indic:[5,6,12,13,23],indirectli:13,individu:[6,10,14,21,36,42],induc:13,inequ:[10,13],inet:[9,11,14,17,21],inetaddress:[6,23],inexpens:36,infiniti:[10,12],infinity:[9,12],influenc:11,info:[6,24,39],inform:[4,6,12,13,21,28,42,43,44,45],ingestrate:45,inher:[11,21],inherit:19,initcond:[9,14],initi:[6,14,33,42,45],input:[9,10,14,17,21,45],inputd:21,inreleas:27,insensit:[11,12],insert:[6,9,10,11,12],insert_stat:[12,13],inserted:6,insid:[11,13,21,45],inside:12,inspect:[6,45],instabl:6,instal:[6,20,23,27,45],install:26,installat:26,instanc:[6,10,11,12,13,14,16,18,19,20,21,23,33,34,36,39],instantan:39,instanti:10,instantli:6,instead:[10,11,13,18,21,23,34],instruct:[6,8,11,29],instrument:42,intasblob:13,integ:[0,10,11,12,13,17,21],integer:[12,39],integr:42,intend:42,intens:[6,23],inter:6,interact:[28,45],interest:[0,34,42],interfac:[6,10,14,23,24,35,42],intern:[6,11,13,18],internaldroppedlat:39,internalresponsestag:39,internet:6,internod:[6,23],internode_encrypt:[6,42],interpret:[10,21,45],interrupt:23,interv:[6,9,39],intra:[6,39,43],intrins:21,introduc:[10,17,44],introduct:[10,19],intvalu:14,invalid:[6,13,19,42],invertedindex:20,investig:6,invoc:14,invok:[27,42],invoke:27,involv:[6,13,34,35,42],ip1:6,ip2:6,ip3:6,ipv4:[6,17,21,23],ipv6:[6,17,21],irc:5,irolemanag:6,irrevers:[11,21],isn:[0,18,23],iso:21,isol:[11,13],issu:[0,19,23,31,34,35],item:[12,21],iter:0,itself:[6,11,16,23,27],iv_length:6,jaa:42,januari:21,jar:[14,39],java7:42,java:[6,14,20,21],javas:6,javascript:[6,14],javax:42,jbod:36,jce8:6,jce:6,jceks:6,jdk:6,jira:[5,33],jks:6,jkskeyprovid:6,jmc:[34,42],jmx:[6,19],jmx_password:42,jmx_user:42,jmxremot:42,john:[13,21],join:[6,8,13],joss:13,jpg:21,jsmith:21,json:[9,10,13,15],json_claus:13,jsr:[6,14],jsse:6,jsserefguid:6,jurisdict:6,just:[14,19,23,34,42],jvm:[6,20,23,24,42,44],jvm_opts:[24,42],keep:[6,8,11,23,34,39],keepal:[6,23],kei:[4,6,10],kept:[6,34,39],kernel:[6,23],key:[9,10,11,13,14,16,18,21,33,35],key_alia:6,key_password:6,key_provid:6,keycach:39,keycachehitr:39,keys:[9,16],keyserv:27,keyspac:[0,6,10,11,12,14,16,19,21],keyspace1:[6,19],keyspace2:6,keyspace:[6,9,10],keyspace_nam:[11,14,19,21,34],keyspaces:[9,19,45],keystor:[6,42],keystore_password:6,keystorepassword:42,kill:[6,27],kilobyt:35,kind:[11,12,21,33,34],kitten:21,know:[6,13,21,34],known:[19,21,25,28,31,34],ks_owner:42,ks_user:42,kundera:25,label:21,lag:39,land:35,landlin:21,languag:[6,9,10,12,14],language:[9,14],larg:[6,11,13,14,21],larger:[6,23,34,35,36],largest:[6,39],last:[6,12,13,14,15,34,39],lastknownloc:11,lastli:[13,21],lastnam:13,latenc:[0,6,23,39,43],later:[0,11,21,23],latest:[0,27,34,45],latter:12,layer:36,layout:11,lazi:11,lazili:11,lcs:11,lead:[6,10,21,34],learn:[6,23,45],least:[0,6,11,12,13,18,23,34,36],leav:[6,12,13,23,45],left:[6,17,34],legaci:[6,19],length:[4,6,10,17,34],less:[6,21,23,31,36],let:[6,34],letter:17,leveledcompactionstrategi:[11,31,34],lexic:23,lib:[6,20,27],libqtcassandra:25,librari:[8,25,39,45],lifespan:36,like:[0,5,6,12,13,14,17,21,23,29,34,35,36,42],likewis:19,limit:[6,9,10,11],line:[12,24,27,28,42],linear:36,linearli:31,link:[6,8,11,12,27],linux:[6,23],list:[4,5,6],list_liter:[13,21],list_permissions_stat:12,list_roles_stat:12,list_users_stat:12,listarg:14,listen:6,liter:[10,12,14,17],live:13,livediskspaceus:39,livescannedhistogram:39,livesstablecount:39,load:[0,6,11,20,21],local:[0,6,11,28,36,39,42,43,45],local_jmx:42,local_one:[0,42,45],local_quorum:[0,45],local_serial:45,localhost:[6,28,42],locat:6,lock:[6,23,39],log:[6,11,13],log_al:34,logback:24,logged:6,logger:24,logic:[6,20],login:[6,9,19,42],lol:21,longer:[6,10,23,34,44],look:[6,12,34,36],lose:[6,34,44],loss:[6,21],lost:[34,44],lot:6,low:6,lower:[0,6,11,12,13,19,23,31,34,39,44],lowercas:12,lowest:34,lz4:6,lz4compressor:[6,11,35],macaddr:9,machin:[6,11,23,42,43,44],made:[6,21],magnet:6,magnitud:13,mai:[0,4,6,9,10,11,13,14,16,17,19,21,23,27,31,34,42,43,44,45],mail:5,main:[0,14,18,23],main_actor:13,mainli:[6,11],maintain:6,mainten:39,major:[0,10],make:[0,6,8,20,21,23,24,27,34,42,44,45],man:6,manag:[6,19,39,42,44],mandatori:[11,14],mani:[0,6,11,34,35,36,39,42,45],manipul:12,manual:[6,23],map:[6,9,10,11,13,14],map_liter:[11,16,19,21],mar:21,mark:[6,19,34,44],marker:[6,11,12,23],match:[6,12,13,14,17,19,39,43],materi:[6,10,11,12,15],materialized:15,materialized_view_stat:12,matter:[11,23],max:6,max_map_count:23,max_mutation_size_in_kb:[6,23],max_thread:6,max_threshold:34,maxattempts:45,maxbatchsize:45,maxim:36,maximum:[4,6,14,31,39,45],maxinserterrors:45,maxoutputsize:45,maxparseerrors:45,maxpartitions:39,maxpools:39,maxrequests:45,maxrows:45,maxtimeuuid:10,mayb:13,mbean:[6,19,34,39,42],mbeans:[19,42],mbeanserv:19,mbp:6,mct:6,mean:[6,9,11,12,13,14,17,18,21],meaning:13,meanpartitions:39,meant:[21,23,39],measur:[6,39,44,45],mechan:33,median:39,meet:6,megabyt:6,membership:6,memlock:23,memori:[4,6,11],memtabl:2,memtable_allocation_typ:4,memtable_cleanup_threshold:4,memtablecolumnscount:39,memtableflushwrit:39,memtablelivedatas:39,memtableoffheaps:39,memtableonheaps:39,memtablepostflush:39,memtablereclaimmemori:39,memtableswitchcount:39,mention:[6,21,39,42],merg:31,merkl:39,messag:[6,21],met:13,meta:[13,39],metadata:[4,19,35,36,39],meter:39,method:[10,13,14,19],metric:38,metricnam:39,metricsreporterconfigfil:39,microsecond:[11,13,39],midnight:21,might:[6,13,34,39],migrat:[6,39,43],migrationstag:39,millisecond:[6,10,21],min:6,min_sstable_s:34,min_threshold:34,minbatchsize:45,mind:6,minim:[6,34,36],minimum:[6,11,14,24,39],minor:[10,12],minpartitions:39,mintimeuuid:10,minut:[6,34,39],minutes:34,miscelen:39,miscellan:6,miscstag:39,miss:[11,34,39,44],misslat:39,mit:27,mitig:[6,42],mix:[6,34],mmap:23,mnt:16,mode:[6,42,45],model:[11,15,19],moder:36,modern:36,modif:[13,19],modifi:[6,10,11,14,19,21,31,34,35],modification_stat:13,modify:[9,19],modul:45,moment:6,monitor:[23,29,38],monkeyspeci:[11,18],monkeyspecies_by_popul:18,more:[0,4,6,10,11,12,13,21],moreov:13,most:[6,11,12,13,21,23,24,34,35,36,42,45],mostli:[6,11,21],motiv:34,move:[6,23,29,33,38,39],movement:38,movi:[13,21],mtime:11,much:[0,5,6,11,31,34,43],multi:[0,6,12],multipl:[4,6,10,11,12,13,14,21,23,24,34,36,43],murmur3partit:4,murmur3partition:[6,14,45],must:[0,6,10,11,13,14,17,18,19,23,24,34,39,42,44,45],mutant:16,mutat:[0,6,13,23,33,39],mutation:39,mutationstag:39,mv1:18,mx4j:39,mx4j_address:39,mx4j_port:39,mx4jtool:39,mxbean:19,myaggreg:14,mycolumn:17,mydir:45,myevent:13,myfunct:14,myid:12,mykei:17,mykeyspac:14,mytabl:[11,14,17,20],mytrigg:20,name:[6,9,10,11,12,13,14,16,17,18,19,20,21,23,24,39,42,45],names_valu:13,nan:[9,10,12],nanosecond:21,nathan:13,nativ:[6,10,12],native_transport_min_thread:6,native_typ:21,natur:[11,21,34,35],neccessari:6,necessari:[6,11,14,19,27,35,42],necessarili:[6,12,24],need:[0,6,10,11,12,13,19,21,23,24,27,28,31,34,35,36,42,43,45],neg:6,neglig:13,neighbour:34,neither:[18,21,42],nerdmovi:[13,16],nest:[12,13],net:[6,23],netstat:44,network:[6,13,23,36,42,43],never:[6,10,11,12,13,14,21,23,34],nevertheless:13,new_rol:19,new_superus:42,newargtuplevalu:14,newargudtvalu:14,newer:[34,36,45],newest:[11,34],newli:[11,21,33],newreturntuplevalu:14,newreturnudtvalu:14,newtuplevalu:14,newudtvalu:14,next:[6,23,28,34,45],nfs:36,ngem3b:13,ngem3c:13,nio:[6,14],no_pubkey:27,node:[0,4,6,11,13,14,20,21],nologin:9,non:[6,9,10,11,12,13,14,19,21,23,31,35,39,42,45],none:[6,11,13,21,42],nonsens:19,nor:[11,18,21],norecursive:[9,19],norm:39,normal:[14,17,23,27,39,44,45],noschedul:6,nosuperuser:[9,19],notabl:[14,17],notat:[10,12,13,45],note:[0,5,6,10,11,12,13,14,15,17,19,21,23,34,42],noth:[6,11,14,23],notif:8,notion:[11,12],now:10,ntp:6,nullval:45,num_cor:45,number:[0,6,10,11,12,13,14,17,18,21,23,27,31,34,35,39,42,44,45],number_of_cor:6,number_of_dr:6,numer:[15,31],numprocesses:45,object:[6,11,12],objectnam:19,obsolet:[6,36,39],obtain:[12,42],obviou:14,obvious:11,occup:13,occupi:[6,39],occur:[10,12,13,20,21,23,34,36,39],occurr:21,octet:[6,43],off:[4,6,23,35,39,42,45],offer:[15,35],offheap:[31,36],offheap_buff:6,offheap_object:6,offici:[29,45],offset:[4,39],often:[6,11,12,23,34,35,36,42,43,45],ohc:6,ohcprovid:6,old:[4,6,34,44],older:[6,14,27,34,36,45],oldest:[6,11],omit:[6,10,11,13,17,21],onc:[6,12,14,21,23,33,34,36,42,45],once:[4,6,11,21,23,34,35,39,42,44],one:[0,6,23,34,39,45],oneminutecachehitr:39,ongo:[34,44],onli:[0,6,9,11,12,13,14,17,18,19,21],onlin:45,only:[0,6,19,43,45],only_purge_repaired_tombston:34,onto:[4,34],open:[5,6,42,43],openjdk:27,oper:[0,6,10,11,13,16,18,19,21],operat:[6,19,29,31],opertaion:6,opportun:31,opt:14,optim:[6,11,12,23,34,36,44],option1_valu:19,option:[4,6,10],optional:[27,42],options:[9,16,19],oracl:[6,27,42],order:[0,4,6,9,10],ordering_claus:13,orderpreservingpartition:6,org:[6,14,20,23,27,34,35,39,42],organ:[4,25],orign:13,other:[0,4,6,10],other_rol:19,otherwis:[0,9,12,13,16,21],our:[6,8,34],out:[6,12,34,39,42,43,44],outbound:6,outgoingbyt:39,outlin:42,output:[14,19,31,34,45],outsid:[11,20,21],over:[0,6,11,21,23,34,39,42,43,44],overal:14,overflow:17,overhead:[6,23,35,39,44],overidden:42,overlap:[0,34],overload:[6,14,23],overrid:[6,42,44],overridden:[6,11],overview:2,overwhelm:6,overwrit:[35,36],overwritten:39,own:[0,6,11,12,14,21,23,27,34,35,39,42],owner:21,ownership:34,pacif:21,packag:[23,24,26],packet:6,page:[6,21,23,36,39,45],paged_slice:39,pages:45,pagesize:45,pagetimeout:45,pair:[6,11,19,21,34,42],parallel:34,paramet:6,paranoid:6,parenthesi:[11,45],parnew:36,pars:[6,12,33,45],parser:[9,10,33],part:[0,5,6,11,13,14,18,21,23,43,44,45],parti:39,partial:4,particip:[0,6,20],particular:[11,12,13,14,17,19,21,23,36,39,42],particularli:[12,21,42],partit:[4,6,10],partition:4,partition_kei:11,partition_key:13,partli:13,pass:[24,45],password:[6,9,13,19],password_a:19,password_b:19,passwordauthent:[6,42],past:39,patch:[10,13,29],path:[5,6,16,27,31,34,35,36,39,42,45],patter:19,pattern:[6,19,21],paus:[6,23],paxo:[13,39,45],peer:[6,39],peerip:39,penalti:[6,13],pend:[34,39],pendingcompact:39,pendingflush:39,pendingrangecalcul:39,pendingtask:39,pendingtasksbytablenam:39,pennsylvania:21,peopl:23,per:[0,4,6,10,11,13,23,31,33,34,35,39,42,45],percent:39,percentag:[6,39,43],percentil:39,percentrepair:39,perdiskmemtableflushwriter_0:39,perfect:14,perform:[6,11,13,19,21,23,24,31,34,36,39,42,43,45],period:[6,36,39,42],perman:[11,23,34,36],permiss:[6,12],permission:9,permissions:9,permit:[6,19,33,42],persist:[4,23,31,36,42],perspect:23,pet:21,pfs:6,pgp:27,pgrep:27,phantom:25,phase:[44,45],phi:6,phone:[13,21],physic:[0,6,11,23,36,43],pid:[23,27],piec:[12,34,39],pin:[6,43],pkcs5pad:6,pkill:27,place:[5,6,16,20,33,34,39,42,45],placehold:[14,45],plai:[14,21],plain:4,plan:11,platform:19,platter:[6,36],player:[14,21],playorm:25,pleas:[5,6,11,13,14,15,21,23],plu:[14,34,39],plug:6,pluggabl:[19,42],plugin:39,poe:21,point:[6,10,17,21],pointer:14,polici:[6,42],pool:[6,39],popul:[11,18],popular:36,port:6,portion:[36,45],posit:[4,10,11,21,31,39,44],possbili:6,possess:19,possibl:[6,10,11,13,14,17,19,21,23,31,34,36,39,42,44],post:13,post_at:13,posted_at:13,posted_bi:11,posted_month:11,posted_tim:11,potenti:[0,6,9,11,12,14,34,36,42,44],power:6,pr3z1den7:21,practic:[11,12,13,42],pre:[6,17,21,36,42],preced:23,precis:[10,17,21,34],precondit:39,predefin:11,predict:13,prefer:[0,6,11,12,21,42,43],prefix:[11,12,21],prepar:6,preparedstatementscount:39,preparedstatementsevict:39,preparedstatementsexecut:39,preparedstatementsratio:39,prepend:21,prerequisit:26,present:[12,18,39],preserv:[6,17,19],press:27,pressur:39,pretti:45,prevent:[6,33],previou:[6,10,11,21,34,44],previous:6,primari:10,primarili:[6,11],primary:[9,11,13,14,18,21,33,35],primary_kei:[11,18],print:45,prior:[6,13,19,21],privat:[6,42,43],privileg:[19,27,42],probabilist:[31,35],probabl:[6,11,31,34],problem:[5,6,14,23,42],problemat:21,proc:[6,23],proce:[35,44],procedur:[13,42],process:[0,6,14,23,27,33,35,36,39,42,44,45],prod_clust:45,produc:[14,34],product:[6,23,36,43],profil:13,program:14,progress:[31,38],project:39,promin:11,prompt:45,propag:[6,11,14,43],proper:[11,21,23,42],properli:6,properti:[6,11,19],propertyfilesnitch:[6,43],proport:[6,13],proportion:6,propos:[6,39],protect:[6,36],protocol:[6,23,28,39,42,45],provid:[0,5,6,11,12,13,14,15,17,21,28,33,34,35,36,39,42,43,44,46],proxim:[6,43],ps1:42,ps22dhd:13,pull:[34,39],purg:36,purpos:[11,12,13,21,36,42],push:39,put:[15,24,34,44],python:14,quak:[14,21],qualifi:[6,11,14],qualiti:42,queri:[6,10,11,12,13,14],question:[8,19],queu:[6,39],queue:[6,39],quickli:[23,34],quill:25,quit:[34,45],quorum:[0,42,45],quot:[9,10,11,12,14,17,19,45],quotat:19,quoted_identifi:12,quoted_nam:11,rack1:6,rack:[0,6,42,43],rackdc:[6,43],rackinferringsnitch:[6,43],raid0:36,raid1:36,raid5:36,rain:12,rais:[12,23],raison:9,ram:[31,35,36],random:[11,14,23,44],randomli:[0,6,44],randompartition:[6,13,14],range_slice:39,rangelat:39,rangemov:44,rangeslic:39,rapid:36,rare:[10,31],raspberri:36,rate:[6,11,39,42,45],ratefile:45,rather:[13,23,34,36],ratio:[6,35,36,39],raw:[6,14],reach:[6,23,33,34],read:[0,6,11,13,21,23,26,29,31],read_repair:39,read_repair_ch:[0,6,11,34,43],read_request_timeout:23,readabl:11,readi:42,readlat:39,readrepair:39,readrepairstag:39,readstag:39,readwrit:42,real:[8,11,23],realiz:34,realli:[6,24],reason:[0,6,13,14,15,23,24,27,34,36,42,44],rebuild:[6,31,34,35,39],receiv:[6,14,23,34,36],recent:[6,36],reclaim:34,recogn:13,recommend:[6,11,21,23,36,42,44],recompact:34,recompress:35,reconnect:42,record:[11,13,21,34],recov:[6,23,34],recreat:45,recv:27,recycl:[6,39],redistribut:6,reduc:[6,23,35],reduct:6,redund:[0,36],refactor:33,refer:[6,11,12,13,14,15,21,23,27,28,45],referenc:6,reflect:34,refresh:[6,42,45],regard:[11,13],regardless:[0,6,19],regener:31,regexp:12,region:[6,43],regist:21,registri:42,regular:[12,23,39,45],regularstatementsexecut:39,reject:[6,13,23,33,42],rel:[6,21,45],relat:[8,10,12,13,34,39],releas:[6,10,27,45],relev:[13,19,21,35,42],reli:[6,14,21,23,44],reliabl:34,reload:6,remain:[6,13,14,21,34,39,44],remaind:[17,35],remedi:34,remot:0,remov:[4,6,10,11,12,13,14,15,17,21,23,29,33],removenod:44,renam:21,rename:[9,21],reorder:6,repair:[0,4,6,11,23,29],repeat:[12,27,35,42],replac:[6,14,19,21,23,29,34,38],replace:[9,14],replace_address_first_boot:44,replai:[0,21,36,39],replica:[0,6,11,13,23,34,39,43,44],replication_factor:[0,11,42],report_writ:19,reportfrequency:45,repositori:[5,8,27],repres:[6,10,17,19,21,23,34,39,42,43,45],represent:[10,17],request:[0,6,13,19,20,23,31,34,36,38],request_response:39,requestresponsestag:39,requestschedul:6,requesttyp:39,requir:[0,6,11,13,14,19,23,31,35,36,42],require_client_auth:6,require_endpoint_verif:6,resampl:6,reserv:6,reset:[6,13],reset_bootstrap_progress:44,resid:[6,13,23,39],resolut:[6,13,23],resolv:23,resourc:[19,42],resp:14,respect:[6,10,14,27,43],respond:[0,6,12],respons:[0,6,19,23,39,44],ressourc:21,rest:[6,11,12,21,44],restart:[23,34,42,44],restor:[34,44,45],restrict:[10,11,13,18,19,21],result:[0,6,8,10,11,12],resurrect:34,retain:[23,34],retri:[0,6,21,39],retriev:[11,13,19],returns:[9,14],review:11,revok:[19,42],revoke:9,revoke_permission_stat:12,revoke_role_stat:12,rewrit:[31,34,35],rewritten:36,rfc:[14,21],rich:21,right:[6,23,45],risk:11,rmem_max:6,rmi:[23,42],robin:6,rogu:14,role:[6,9,10,12,15],role_a:19,role_admin:19,role_b:19,role_c:19,role_nam:19,role_opt:19,role_or_permission_stat:12,roles:9,roll:[23,42],root:[6,27],rotat:6,roughli:6,round:[6,13,34,39],roundrobin:6,roundrobinschedul:6,rout:[6,43],row:[0,4,6,10,11,13,14,15,17,18,28,31,35,36,39,45],rowcach:39,rowcachehit:39,rowcachehitoutofrang:39,rowcachemiss:39,rowindexentri:39,rows_per_partit:11,rpc:[6,39],rpc_min:6,rubi:14,rule:[6,12,14,23],run:[5,6,12,21,23,24,27,34,36,39,42,44],runtim:6,safe:[6,14,21,34,42],safeguard:36,safeti:[6,34,44],said:[11,23],same:[0,5,6,11,12,13,14,15,17,18,19,21],sampl:[4,6,12,14,39,45],sampler:39,san:36,sandbox:[6,14],satisfi:[0,36,39,44],satur:[6,39],save:[6,13,23,24,31,35,36,44],saved_cach:6,sbin:23,scala:14,scale:[6,35],scan:[6,13,31,39],scene:23,schedul:6,schema:[0,9,11,14,17,39,45],schema_own:19,scope:[19,39,42],score:[6,14,21,43],script:[6,14],scrub:[31,34,35,39],second:[6,11,12,13,21,23,33,36,42,45],secondari:[10,11,12,13,15],secondary_index_stat:12,secondaryindexmanag:39,section:[2,5,7,10,11,12,13,15,19,21,23,26,27,28,34,39,42,44,46],secur:[6,14,15],see:[0,4,6,10,11,12,13,14,17,19,21],seed:6,seedprovid:6,seek:[6,36,39],seen:[6,11],segment:[4,6,33,39,45],select:[6,9,10,11,12],select_claus:13,select_stat:[12,18],selinux:23,semant:[10,13,14],semi:23,send:[8,23],sens:[6,10,13,15,23],sensic:14,sensit:[11,12,14,17],sensor:21,sent:[0,6,21,23,39],separ:[4,6,11,13,24,34,36,42,44,45],seq:6,sequenc:12,sequenti:[6,36],seren:13,seri:[11,34,45],serial:6,serializingcacheprovid:6,serv:[13,36,42],server:[6,12,13,21,23,36,39,42],servic:[6,27,42,44],session:[6,19,42],set:[0,6,9,10,11,12,13,14,17,18],set_liter:21,setcompactionthreshold:34,setcompactionthroughput:34,setint:14,setlong:14,setstr:14,setter:19,setup:42,sever:[4,13,19,34,42],sfunc:[9,14],shadow:34,share:11,sharedpool:45,sharp:25,shed:23,shell:[28,29],shift:21,ship:[28,42,45],shortcut:18,shorter:42,shorthand:45,should:[0,5,6,10,11,12,13,14,17,19,21,23,24,25,26,28,31,34,35,36,39,42,43,44,45],shouldn:11,show:19,shown:[12,45],shrink:6,shut:6,shutdown:[6,36],side:[11,13,17,21,42],sign:[13,21,23],signific:[6,36],silent:14,similar:[6,13,14,35,36],similarli:[0,10,17,36],simpl:[11,42],simple_select:13,simplereplicationstrategi:42,simpleseedprovid:6,simplesnitch:[6,43],simpli:[0,6,11,13,14,17,21,34,36,39,44],simultan:[6,36,45],sinc:[6,11,13,14,21,23,27,34,39,44],singl:[0,6,10,11,12,13,14,17,18,19,21],situat:[6,34],size:[4,6,11,21,23,24,31,33],sizetieredcompactionstrategi:[11,34],skip:[6,13,44,45],skipcols:45,skiprows:45,slash:12,slightli:6,slow:43,slower:[6,11,31],slowli:[6,21],small:[6,11,13,21,23,34,36],smaller:[6,23,34,36,45],smallest:[0,11,14,39],smallint:[9,10,11,14,17,21],smith:21,smoother:10,smoothli:6,snappi:6,snappycompressor:[11,35],snapshot:[6,39],snitch:[6,29,38],socket:[6,42],sole:11,solid:[6,36],some:[0,6,9,11,12,13,14,21,23,24,33,34,35,39,42,44,45],some_funct:14,some_nam:12,someaggreg:14,somearg:14,somefunct:14,someon:34,sometim:[6,12,13],someudt:14,somewher:27,soon:42,sort:[4,11,13,21,34,36],sourc:[5,6,8,14,27,39,45],source_elaps:45,space:[6,23,33,34,36,39],span:[6,13,34],sparingli:13,spark:25,spec:[28,39,45],speci:[11,18],special:[12,13,23,34,39],specif:[6,9,11,12,13,19,21,23,25,33,34,39,42,45],specifc:39,specifi:[0,6,10,11,12,13,14,16,18,19,21,23,28,33,34,35,39,42,44,45],specul:[0,39],speculativeretri:39,speed:6,spent:39,spike:23,spin:[6,36],spindl:6,spirit:[6,43],split:[23,34,39,45],spread:[6,43],sql:[13,15],squar:12,ssd:[6,16,36],ssl:[6,23,38],sss:17,sstabl:2,sstable_s:34,sstable_size_in_mb:34,sstableexpiredblock:34,sstablesperreadhistogram:39,stabl:[27,45],stack:6,stale:[6,42],stall:44,stand:6,standard:[6,21,23,27,39],start:[0,6,13,23,24],startup:[6,20,23,34,39,44],state:[6,14,31,34,36,39,44],statement:[6,10,11],static0:11,static1:11,statist:[4,34,39,45],statu:[19,23,27,45],stcs:11,stdin:45,stdout:45,step:[6,24,42],still:[0,6,10,13,14,17,21,42,44,45],stop:[6,27,45],stop_commit:6,stop_paranoid:6,storag:2,storage:[9,11],storageservic:6,store:[0,4,6,10,11,12,13,21],store_typ:6,straight:44,straightforward:33,strategi:[0,6,11],stream:[4,6],street:21,strength:6,strict:[10,34],stricter:11,strictli:[8,11,14],string:[6,10,11,12,13,14,16,17,19,20,21,39,45],strong:0,strongli:[6,11,12,42],strongly:6,structur:[4,6,19,31,39],stub:42,style:6,stype:[9,14],sub:[11,13,21,27,34],subdirectori:[6,20],subject:[6,14,42],submit:29,subscrib:8,subscript:8,subsequ:[6,13,23,34,35],subset:[19,45],substitut:27,subsystem:42,subvert:34,succed:39,succesfulli:39,success:[0,45],sudden:6,sudo:[23,27],suffici:[6,36],suggest:[12,36],suit:[6,42],suitabl:[13,14],summari:[4,6,39],sun:42,sunx509:6,supersed:10,superus:42,superuser:[9,19,42],suppli:13,support:[0,6,10,11,12,13,14,15,16],suppos:13,sure:[6,8,23,24,27,34],surplu:23,surpris:0,surround:[17,45],suscept:14,suspect:5,swamp:23,swap:6,symmetri:17,symptom:23,sync:[6,23,39],synchron:6,synonym:19,syntact:[11,19],syntax:[10,12,13,14,19,21,34,35],sysctl:23,sysintern:6,system:[6,11,14,19,23,24,28,34,36,39,42,45],system_auth:[6,42],tabl:[0,4,6,10],table1:19,table:[9,10],table_nam:[11,13,16,19,20,34],table_opt:[11,18],tables:[19,45],tag:21,take:[6,10,11,13,14,21,23,31,34,35,36,44],taken:[6,33,34,39],tar:27,tarbal:[24,26],target:[11,19,34],task:[39,45],tcp:[6,23],tcp_keepalive_intvl:23,tcp_keepalive_prob:23,tcp_keepalive_tim:23,tcp_nodelai:6,tcp_wmem:6,teach:[6,43],team:23,technetwork:6,technic:[11,15],technot:6,tee:27,tell:[6,13,23,24,39],temporari:42,tenanc:6,tend:[6,23,36],tendenc:6,terabyt:35,term:6,termin:[12,45],test:[6,8,28,36,45],test_keyspac:42,text:[4,9,11,12,13,14,17,21,33,35,42],than:[0,6,11,12,13,14,15,18,21],thei:[6,9,10,11,12,13,14,15,18,19,21],them:[6,10,11,13,14,21,23,28,31,34,39,42],themselv:[13,19],theoret:11,therefor:42,thi:[0,2,4,5,6,7,10,11,12,13,14,15,17,18,19,21,23,24,26,27,29,31,33,34,35,36,39,42,43,44,45,46,47],thing:[6,21,23,26,34],third:39,thobb:45,those:[11,12,13,14,16,17,18,19,21,23,33,34,42,45],though:[6,10,12,21],thousand:45,thousandssep:45,thread:[6,36,39,42],threadpool:38,threadpoolnam:39,three:[0,6,31,34,35,42,45],threshold:[4,6,33,36,43],thrift:[6,11,15,23,39],throttl:6,throttle_limit:6,through:[0,5,10,11,12,13,23,28,33,34,45],throughout:42,throughput:[0,6,34,35,36,39],thrown:21,thu:[6,10,11,12,13,18,21,23,39,43,44],thumb:6,thusli:21,ticket:[5,33],tie:23,tighter:6,tightli:6,tild:45,time:[0,6,8,9,10,11,12,13],timelin:11,timeout:[6,21,23,39,45],timer:[6,39],timestamp:[4,9,10,11,13,14,15,17],timeunit:34,timeuuid:[9,10,11],timewindowcompactionstrategi:11,timezon:[17,45],tini:[6,34],tinyint:[9,10,11,14,17,21],tls:[6,38],tls_dhe_rsa_with_aes_128_cbc_sha:6,tls_dhe_rsa_with_aes_256_cbc_sha:6,tls_ecdhe_rsa_with_aes_128_cbc_sha:6,tls_ecdhe_rsa_with_aes_256_cbc_sha:6,tls_rsa_with_aes_128_cbc_sha:6,tls_rsa_with_aes_256_cbc_sha:6,toc:4,todai:12,todat:14,togeth:[11,13,14,34],toggl:42,tojson:15,toler:31,tom:13,tombston:[4,6,11,17,23],tombstone_compaction_interv:34,tombstone_threshold:34,tombstonescannedhistogram:39,too:[6,11,12,14,21,34],tool:[6,12,23,29,34,39,42,44],top:[13,21],topic:45,topolog:[6,43],total:[6,13,33,34,39],totalblockedtask:39,totalcommitlogs:39,totalcompactionscomplet:39,totaldiskspaceus:39,totalhint:39,totalhintsinprogress:39,totallat:39,totimestamp:14,touch:[8,23,34],tounixtimestamp:14,toward:11,trace:[6,39,45],track:[6,34,39],tradeoff:0,tradit:[34,35],traffic:[6,43],transact:[13,20,39],transfer:[6,23,42],transform:13,transit:[10,19],translat:6,transpar:[6,23],transport:[6,39],treat:[0,6,23,43],tree:39,tri:34,trigger:[4,6,9,12,15],trigger_nam:20,trigger_stat:12,trip:13,trivial:42,troubleshoot:29,truesnapshotss:39,truli:9,truncat:[6,11],truncate:[9,10],truncate_stat:12,trust:42,trustor:6,truststor:[6,42],truststore_password:6,truststorepassword:42,tserverfactori:6,ttl:[4,6,9,10,11],tty:45,tune:[23,31,36],tupl:[6,10,12,13,14,15,17],tuple:[9,21],tuple_liter:[12,13],tuple_typ:21,tuplevalu:[10,14],turn:[0,6,23,42],twcs:[11,34],twice:[6,21],two:[0,6,11,12,13,14,17],txt:[4,14],type:[0,6],type_hint:12,typeasblob:14,typecodec:14,types:45,typic:[0,13,23,31,34,36,39,42,45],udf:[6,14],udf_stat:12,udfcontext:[10,14],udt:[14,17],udt_liter:12,udt_nam:21,udt_stat:12,udtarg:14,udtnam:14,udtvalu:[10,14],ulimit:23,unabl:6,unaffect:21,unavail:[6,11,39,42,44],unblock:39,unbound:21,unchecked_tombstone_compact:34,uncom:[6,39,42],uncomment:6,uncompress:[6,35,39],undelet:34,under:[6,21,39,42],underli:[6,18,34,42],understand:[6,23],unencrypt:[6,42],unexpectedli:21,unfinishedcommit:39,unflush:33,uniqu:[11,14,21],unit:34,unixtimestampof:[10,14],unless:[6,11,13,16,18,19,21,33,42,43],unlik:[6,10,13],unlike:[13,21],unlimit:[6,23,45],unlogged:9,unnecessari:44,unnecessarili:33,unpredict:13,unprepar:39,unquot:12,unquoted_identifi:12,unquoted_nam:11,unsecur:42,unset:[6,10,13,17],unsign:21,unspecifi:6,unsubscrib:8,untar:27,until:[0,6,21,31,33,34,35,42,43],unuse:6,updat:[6,10,11,12,13,14,18,19,21],update:[9,10],update_paramet:13,update_stat:[12,13],upgrad:[6,34],upgradesst:[31,34,35],upon:[6,21,31,35],upper:[12,17,34,42],usag:[4,6,11,21],usage:[33,45],use:[6,9],use_stat:12,usecas:34,useecassandra:42,user1:13,user2:13,user3:13,user4:13,user:[5,6,8,9,10,11,12,13],user_count:13,user_defined_typ:21,user_funct:19,user_nam:13,user_occup:13,user_opt:19,useraction:13,userid:[11,13,14],userindex:16,usernam:[6,13,14,42,45],users:9,using:[9,11,13,16,20,21,23,34,42],usr:45,usual:[6,13,21,31,42],utc:[17,45],utd:11,utf8:[21,45],utf:45,util:[14,34,45],uuid:[9,10,11,12],val0:11,val1:11,val:14,valid:[6,10,11,12,13,14,17,21,23,34,35,39,42,45],validationexecutor:39,valu:[6,10,11,12,13,14,16,17,21,23,31,34,39,42,43,45],value1:13,value2:13,valueof:14,values:[9,11,13,14,16,17,21],varchar:[9,11,14,17,21],vari:[6,35],variabl:[6,10,12,17,21],variant:12,varieti:33,varint:[9,11,14,17,21],variou:[36,42],veri:[6,11,13,23,31,34,35,36],verifi:[23,25,27,35],version:[5,6],vertic:45,via:[6,8,10,19,23,24,34,35,36,39,42,43],view:[6,10,11,12,15],view_nam:18,viewlockacquiretim:39,viewmutationstag:39,viewpendingmut:39,viewreadtim:39,viewreplicasattempt:39,viewreplicassuccess:39,viewwrit:39,viewwritelat:39,virtual:[0,6,23,34,44],visibl:[11,19,31],vnode:[6,35],volum:[6,33,35],vulner:[6,42],wai:[4,6,11,12,15,17,18,21,23,34,35],wait:[0,6,11,23,39],waitingoncommit:39,waitingonfreememtablespac:39,waitingonsegmentalloc:39,want:[6,11,13,23,42,44],warn:[6,11],washington:21,wasn:10,wast:6,weaker:0,websit:27,weight:[6,39],welcom:8,well:[6,11,13,14,17,21,33,35,36,42,43],went:39,were:[6,9,10,19,34,39],what:[11,13,21],whatev:[10,13,23],whedon:13,when:[4,6,9,10,11,12,13,14,15,16,17,19,21],where:[0,4,6,9,10,11,12],where_claus:13,wherea:42,whether:[0,6,9,11,13,34,43,45],which:[0,4,5,6,10,11,12,13,14,15,16,18,19,20,21,23,24,27,28,31,33,34,35,36,39,42,43,44],whichev:[0,6],whitelist:42,who:[19,23],whole:[6,11,13,14,21,34],whose:[11,21],wide:[4,33],width:12,wiki:[5,6],wildcard:[13,19],window:[0,6],winner:23,wipe:[23,44],wire:23,wise:11,wish:[6,34,39],within:[0,4,6,11,12,13,16,23,34,36,39,42],without:[6,11,12,13,14,19,21,23,33],wmem_max:6,won:[6,13],wont:34,word:[10,11,12,18,19,21,23],work:[6,10,11,14,15,17],worker:45,workload:[6,31,34,36],worri:23,wors:[6,43],worst:6,worthwhil:6,would:[5,6,12,13,14,17,19,29,34,35,36,42,43],wrap:43,write:[0,4,6,10,11,13,21,23,33,34,35,36,39,42,43,44,45],write_request_timeout:23,writelat:39,writer:6,writetim:14,writetime:9,writetimeoutexcept:6,written:[4,6,20,23,31,34,35,39],wrong:6,wrte:39,www:[6,11,27],xlarg:36,xml:24,xmx:36,xvf:27,yaml:[6,14,24,27],year:13,yet:[11,39],yield:[13,44],you:[5,6,8,10,11,12,13,14,16,17,18,20,21,23,24,25,26,27,28,29,34,39,42,43,44,45],younger:14,your:[0,5,6,8,10,11,12,23,24,27,29,34,36,42,43,45],yyyi:21,yyyy:17,z_0:[11,16,18],zero:[6,10,23,39,43],zip:21,zipcod:21,zone:[6,21,43]},titles:["Dynamo","Guarantees","Architecture","Overview","Storage Engine","Reporting bugs and contributing","Cassandra Configuration File","Configuring Cassandra","Contact us","Appendices","Changes","Data Definition","Definitions","Data Manipulation","Functions","The Cassandra Query Language (CQL)","Secondary Indexes","JSON Support","Materialized Views","Security","Triggers","Data Types","Data Modeling","Frequently Asked Questions","Configuring Cassandra","Client drivers","Getting Started","Installing Cassandra","Inserting and querying","Welcome to Apache Cassandra&#8217;s documentation!","Backups","Bloom Filters","Bulk Loading","Change Data Capture","Compaction","Compression","Hardware Choices","Hints","Operating Cassandra","Monitoring","Read repair","Repair","Security","Snitch","Adding, replacing, moving and removing nodes","cqlsh: the CQL shell","Cassandra Tools","Nodetool","Troubleshooting"],titleterms:{"class":43,"delete":13,"function":[13,14,17],"new":23,"static":11,"switch":34,access:42,add:23,adding:44,address:23,advanc:35,after:44,aggreg:14,aggregat:14,aggregate:14,alias:13,all:[19,23],alloc:44,allocate_tokens_for_keyspac:6,allow:13,alter:[11,18,19],altere:21,ani:23,apach:29,appendic:9,appendix:9,architectur:2,asked:23,assign:44,auth:42,authent:[6,19,42],author:[6,42],auto_snapshot:6,automat:19,avg:14,backup:30,batch:[13,23],batch_size_fail_threshold_in_kb:6,batch_size_warn_threshold_in_kb:6,batchlog_replay_throttle_in_kb:6,benefit:35,binari:27,blob:[14,23],bloom:31,bootstrap:[23,34,44],broadcast_address:6,broadcast_rpc_address:6,buffer_pool_use_heap_if_exhaust:6,bufferpool:39,bug:5,bulk:[23,32],cach:[11,39,42],call:23,can:23,captur:33,capture:45,cas_contention_timeout_in_m:6,cassandra:[6,7,15,17,23,24,27,29,33,38,42,46],cast:14,cdc:33,cdc_enabl:6,cdc_free_space_check_interval_m:6,cdc_raw_directori:6,cdc_total_space_in_mb:6,chang:[10,23,24,31,33,34],characterist:21,choic:36,claus:13,cleanup:44,clear:45,client:[25,28,39,42],client_encryption_opt:6,clojur:25,cloud:36,cluster:[11,23],cluster_nam:6,collect:[21,34],column:11,column_index_cache_size_in_kb:6,column_index_size_in_kb:6,command:[34,45],comment:12,commit_failure_polici:6,commitlog:[4,39],commitlog_compress:6,commitlog_directori:6,commitlog_segment_size_in_mb:6,commitlog_sync:6,commitlog_sync_batch_window_in_m:6,commitlog_sync_period_in_m:6,commitlog_total_space_in_mb:6,commitlogseg:33,common:[11,34,36],compact:[11,34,39],compaction_large_partition_warning_threshold_mb:6,compaction_throughput_mb_per_sec:6,compactionstrategi:34,compat:[11,45],compress:[11,35],concern:34,concurrent_compactor:6,concurrent_counter_writ:6,concurrent_materialized_view_writ:6,concurrent_read:6,concurrent_writ:6,condition:19,configur:[6,7,24,33,35],connect:23,consider:11,consist:0,consistency:45,constant:12,contact:8,contribut:5,control:19,convent:12,convers:14,copy:45,count:14,counter:[13,21],counter_cache_keys_to_sav:6,counter_cache_save_period:6,counter_cache_size_in_mb:6,counter_write_request_timeout_in_m:6,cpu:36,cql:[9,11,15,39,45],cqlsh:[28,45],cqlshrc:45,creat:[19,21],create:[11,14,16,18,19,20],credenti:19,credentials_update_interval_in_m:6,credentials_validity_in_m:6,cross_node_timeout:6,custom:21,cython:45,data:[11,13,17,19,21,22,23,33,34,44],data_file_directori:6,databas:19,date:21,dead:44,debian:27,defin:[14,21],definit:[11,12],defragment:34,delet:[23,34],depend:45,describe:45,detail:34,detect:0,directori:[24,34],disabl:33,disk:[23,36],disk_failure_polici:6,disk_optimization_strategi:6,document:29,doe:23,driver:[25,28],drop:[11,14,16,18,19,20,21,23],droppedmessag:39,dynam:43,dynamic_snitch_badness_threshold:6,dynamic_snitch_reset_interval_in_m:6,dynamic_snitch_update_interval_in_m:6,dynamo:0,each:23,email:23,enabl:[33,42],enable_scripted_user_defined_funct:6,enable_user_defined_funct:6,encode:17,encryption:42,endpoint_snitch:6,engine:4,entri:23,environ:24,erlang:25,error:23,even:23,exist:23,exit:45,expand:45,expir:34,factor:23,fail:[23,44],failur:[0,23],file:[6,27],file_cache_size_in_mb:6,filter:[13,31],frequent:23,from:[23,27,45],fromjson:17,fulli:34,further:33,garbag:34,gc_grace_second:34,gc_log_threshold_in_m:6,gc_warn_threshold_in_m:6,get:26,give:23,gossip:0,grace:34,grant:19,guarante:1,hang:44,happen:23,hardwar:36,haskel:25,heap:23,help:45,hint:37,hinted_handoff_disabled_datacent:6,hinted_handoff_en:6,hinted_handoff_throttle_in_kb:6,hintedhandoff:39,hints_compress:6,hints_directori:6,hints_flush_period_in_m:6,host:[23,45],how:23,identifi:12,impact:35,incremental_backup:6,index:[16,39],index_summary_capacity_in_mb:6,index_summary_resize_interval_in_minut:6,initial_token:6,insert:[13,17,28],install:27,installat:27,integrat:42,inter:42,inter_dc_stream_throughput_outbound_megabits_per_sec:6,inter_dc_tcp_nodelai:6,intern:19,internal:42,internode_authent:6,internode_compress:6,internode_recv_buff_size_in_byt:6,internode_send_buff_size_in_byt:6,irc:8,java:[23,25],jconsol:23,jmx:[23,34,39,42],join:23,json:17,kei:[11,16,18],key_cache_keys_to_sav:6,key_cache_save_period:6,key_cache_size_in_mb:6,keyspac:[23,39],keyspace:11,keyword:[9,12],lang:23,languag:15,larg:23,lcs:34,level:[0,34],limit:13,line:45,list:[8,19,21,23],listen:23,listen_address:[6,23],listen_interfac:6,listen_interface_prefer_ipv6:6,listen_on_broadcast_address:6,liter:21,live:23,load:[23,32],locat:24,log:[23,24,34],login:45,lot:23,made:23,mail:8,main:24,major:34,manipul:13,manual:44,map:[16,21,23],materi:18,materialized:18,max:[14,23],max_hint_window_in_m:6,max_hints_delivery_thread:6,max_hints_file_size_in_mb:6,max_value_size_in_mb:6,maxtimeuuid:14,mean:23,memori:[23,36],memtabl:4,memtable_allocation_typ:6,memtable_cleanup_threshold:6,memtable_flush_writ:6,memtable_heap_space_in_mb:6,memtable_offheap_space_in_mb:6,merg:34,messag:23,method:23,metric:39,min:14,minor:34,mintimeuuid:14,model:22,monitor:[39,44],more:[23,34],move:44,movement:44,nativ:[14,21],native_transport_max_concurrent_connect:6,native_transport_max_concurrent_connections_per_ip:6,native_transport_max_frame_size_in_mb:6,native_transport_max_thread:6,native_transport_port:6,native_transport_port_ssl:6,net:25,networktopologystrategi:0,node:[23,42,44],nodej:25,nodetool:[23,34,47],noteworthi:21,now:14,num_token:6,onli:23,oper:23,operat:[34,35,38],option:[11,18,34,45],optional:45,order:11,ordere:13,other:[11,23],outofmemoryerror:23,overview:[3,33],packag:27,paging:45,paramet:[13,33,34],partit:11,partition:6,password:42,permiss:19,permission:19,permissions:19,permissions_update_interval_in_m:6,permissions_validity_in_m:6,phi_convict_threshold:6,php:25,pick:0,point:23,port:23,prepar:12,prepared_statements_cache_size_mb:6,prerequisit:27,primari:[11,18],progress:44,properti:24,python:25,pytz:45,queri:[15,28],question:23,rang:[0,44],range_request_timeout_in_m:6,read:[33,40],read_request_timeout_in_m:6,refus:23,remot:23,remov:[34,44],repair:[34,40,41],replac:44,replic:[0,23],report:[5,23,39],request:39,request_schedul:6,request_scheduler_id:6,request_scheduler_opt:6,request_timeout_in_m:6,reserv:9,result:13,resum:44,revers:11,revoke:19,rhel:23,ring:[0,23],role:[19,42],role_manag:6,roles:19,roles_update_interval_in_m:6,roles_validity_in_m:6,row_cache_class_nam:6,row_cache_keys_to_sav:6,row_cache_save_period:6,row_cache_size_in_mb:6,rpc_address:6,rpc_interfac:6,rpc_interface_prefer_ipv6:6,rpc_keepal:6,rpc_max_thread:6,rpc_min_thread:6,rpc_port:6,rpc_recv_buff_size_in_byt:6,rpc_send_buff_size_in_byt:6,rpc_server_typ:6,rubi:25,runtim:24,rust:25,safety:6,sai:23,same:23,saved_caches_directori:6,scala:25,scalar:14,secondari:16,secur:[19,42],see:23,seed:23,seed_provid:6,select:[13,17,18],selector:13,serial:45,server_encryption_opt:6,session:45,set:[19,21,23],share:45,shell:45,show:[23,45],signatur:14,simplestrategi:0,singl:[23,34],size:34,snapshot_before_compact:6,snitch:43,source:45,special:45,speed:23,ssl:42,ssl_storage_port:6,sstabl:[4,34,39],sstable_preemptive_open_interval_in_mb:6,stai:23,standard:42,start:26,start_native_transport:6,start_rpc:6,starv:34,statement:[12,18],stcs:34,storag:[4,39],storage_port:6,store:23,strategi:34,stream:[23,39,44],stream_throughput_outbound_megabits_per_sec:6,streaming_socket_timeout_in_m:6,sum:14,support:17,tabl:[11,33,39],table:11,tarbal:27,term:12,than:23,thei:23,though:23,threadpool:39,thresholds:6,thrift_framed_transport_size_in_mb:6,thrift_prepared_statements_cache_size_mb:6,tier:34,time:[14,21,34],timestamp:[21,23],timeuuid:14,timewindowcompactionstrategi:34,tls:42,todo:[0,1,3,4,11,22,30,32,37,40,41,47],tojson:17,token:[0,14,44],tombston:34,tombstone_failure_threshold:6,tombstone_warn_threshold:6,tool:46,top:23,tracetype_query_ttl:6,tracetype_repair_ttl:6,tracing:45,transparent_data_encryption_opt:6,trickle_fsync:6,trickle_fsync_interval_in_kb:6,trigger:[20,34],troubleshoot:48,truncate:11,truncate_request_timeout_in_m:6,ttl:[13,34],tunabl:0,tupl:21,two:23,type:[9,11,17,21,34,39],udt:21,unabl:23,unlogged:13,unlogged_batch_across_partitions_warn_threshold:6,unrepair:34,unsubscrib:23,updat:23,update:13,usag:23,use:[11,35],user:[14,19,21],users:19,uuid:14,variabl:24,version:[10,45],view:18,warn:33,welcom:29,what:23,when:[23,34],where:13,why:[23,34],window:34,windows_timer_interv:6,without:34,work:21,write_request_timeout_in_m:6,writetime:13,yaml:33}})
\ No newline at end of file
+Search.setIndex({envversion:50,filenames:["architecture/dynamo","architecture/guarantees","architecture/index","architecture/overview","architecture/storage_engine","bugs","configuration/cassandra_config_file","configuration/index","contactus","cql/appendices","cql/changes","cql/ddl","cql/definitions","cql/dml","cql/functions","cql/index","cql/indexes","cql/json","cql/mvs","cql/security","cql/triggers","cql/types","data_modeling/index","development/code_style","development/how_to_commit","development/how_to_review","development/ide","development/index","development/patches","development/testing","faq/index","getting_started/configuring","getting_started/drivers","getting_started/index","getting_started/installing","getting_started/querying","index","operating/backups","operating/bloom_filters","operating/bulk_loading","operating/cdc","operating/compaction","operating/compression","operating/hardware","operating/hints","operating/index","operating/metrics","operating/read_repair","operating/repair","operating/security","operating/snitch","operating/topo_changes","tools/cqlsh","tools/index","tools/nodetool","troubleshooting/index"],objects:{},objnames:{},objtypes:{},terms:{"03t04":21,"0x0000000000000003":14,"0x00000004":13,"100mb":6,"10mb":6,"10x":[6,41],"11e6":52,"128th":4,"12gb":43,"15m":46,"160mb":41,"16mb":[30,41],"180kb":6,"1st":21,"250m":6,"256mb":6,"256th":6,"2e10":10,"2gb":43,"2nd":[6,11,50],"2xlarg":43,"327e":52,"32gb":43,"32mb":[6,30],"36x":34,"3ff3e5109f22":13,"3gb":42,"3rd":[6,46,50],"40f3":13,"4ae3":13,"4xlarg":43,"50kb":6,"50mb":[6,41],"512mb":6,"5573e5b09f14":13,"5kb":6,"5mb":41,"64k":6,"64kb":[11,42],"6tb":43,"7374e9b5ab08c1f1e612bf72293ea14c959b0c3c":24,"749d6eec0353b12c":34,"75th":46,"86400000m":6,"8gb":43,"8th":[6,40],"90th":46,"95ac6470":52,"95th":46,"98th":46,"99th":46,"9th":46,"\u00eatre":9,"_cache_max_entri":49,"_if_":6,"_must_":6,"_trace":46,"_udt":14,"_update_interval_in_m":49,"_use":14,"_validity_in_m":49,"abstract":[23,25],"boolean":[9,11,12,14,17,19,21,52],"break":[28,41],"byte":[6,9,13,21,46],"case":[6,10,11,12,13,14,16,17,18,21,24,25,28,29,30,38,43,49,51,52],"catch":23,"class":[6,11,14,21,23,26,29,41,42,45,49],"default":[4,6,10,11,13,14,17,19,21,26,30,31,34,38,40,41,42,46,49,51,52],"delete":[9,10],"double":[9,21],"enum":9,"export":[26,34,46,52],"false":12,"final":[14,19,23,26,41,43,49],"float":[9,10,11,12,14,17,21,38,42],"function":[6,9,10,11,12],"import":[11,14,21],"int":[9,10,11,13,14,17,18,19,21,29,40,42],"long":[6,13,21,24,25],"new":[0,4,6,10,11,14,16,17,18,19,20,21,23,25,26,28,29],"null":[9,10,12,13,14,17,18,21,23,52],"public":[6,14,23,29,30,34,49,50],"return":[6,11,13,14,16,17,18,19,21,25],"short":[6,21],"static":[6,9,10],"super":49,"switch":[6,10,19,26,30],"throw":[6,14,23,29],"true":[6,11,12,17,19,21,26,30,40,41,49,51,52],"try":[11,23,26,28,30,41,54],"var":[6,23,34],"void":29,"while":[6,10,11,12,13,21,24,28,38,41,42,43,49,52],abil:[14,30,42],abilityid:16,abl:[6,14,26,29,30,41],about:[4,6,19,26,28,29,30,38,41,50,52],abov:[6,8,11,12,13,14,21,26,28,30,31,40,41,46],absenc:12,abstracttyp:21,accept:[0,6,10,11,12,13,17,28,29,38,51],access:[6,10,21,26,28,43,45,46],accord:[6,30],accordingli:[6,14,30],account:[6,21],accru:[41,46],accumul:[6,41,46],accur:[6,30,38],accuraci:38,acheiv:49,achiev:[41,46],achill:32,ack:6,acquir:[19,46],across:[6,11,19,28,46,49,50],action:[6,13],activ:[4,6,28,40,46,52],activetask:46,actual:[4,6,13,20,23,25,30,34,41,50],acycl:19,add:[0,6,9,10,11,21,24,25,28],addamsfamili:11,added:10,adding:[6,11,19,21,30,36,45,49],addit:[0,6,11,13,19,21,26,28,31,41,43,46,49,52],addition:[11,13,41],address:[6,8,17,21,26,28],adher:10,adjac:41,adjust:[6,38],advanc:6,advantag:43,advers:30,advic:[28,30],advis:[6,12,21,30],aes:6,af08:13,afd:21,affect:[6,25,28,30,41],afford:6,after:[5,6,11,12,13,14,16,17,18,26,28,30,40,41,43,45,46,49,50],afterward:[26,29],afunct:14,again:[6,28,41,51,52],against:[6,11,14,28,29,30,43,51,52],agentlib:26,aggreg:[6,10,13],aggregat:13,aggregate:9,aggregates:52,aid:12,akeyspac:14,algorithm:[6,11,51],alia:[10,13,32],alias:[6,10],alic:19,align:23,aliv:6,all:[0,6,9,11,12,13,14,17,18],allmemtableslivedatas:46,allmemtablesoffheaps:46,allmemtablesonheaps:46,alloc:[6,30,40,43,46],allow:[0,4,6,9,10,11,12],allowallauthent:[6,49],allowallauthor:[6,49],allowallinternodeauthent:6,almost:[6,14,21,41],alon:[6,23],along:[6,13],alongsid:[35,52],alphabet:23,alphanumer:[11,19],alreadi:[6,11,14,16,18,21,28,41,49],also:[0,4,6,10,11,12,13,14,17,18,19,21,26,28,29,30,31,41,43,46,49,51,52],alter:[9,10],alter_keyspace_stat:12,alter_role_stat:12,alter_table_instruct:11,alter_table_stat:12,alter_type_modif:21,alter_type_stat:[12,21],alter_user_stat:12,altere:[11,19],altern:[6,10,11,12,13,17,26,28,31,43,49],although:[6,28],alwai:[0,6,9,10,11,13,14,18,21,23,28,29,30,41,43],amend:24,amongst:11,amount:[6,11,13,21,26,28,29,30,41,42,43,46,51,52],amplif:43,anaggreg:14,analogu:13,analyt:38,analyz:29,ani:[0,6,10,11,12,13,14,17,18,19,20,21,24,25,26,28,29],annot:23,anonym:[12,21],anoth:[6,11,14,19,21,41,49,52],another:[11,29],anotherarg:14,ant:[26,28,29],anti:[6,21],anticip:11,anticompact:41,antientropystag:46,antipattern:43,any:[0,6,12,19,28,46,52],anymor:[24,41],anyon:23,anyth:41,anywai:6,anywher:13,apach:[2,5,6,7,14,20,23,24,25,26,28,29,30,33,34],api:[6,8,11,15,17,35,50],appear:[12,14,41,52],append:[21,24,43,46,52],apple:21,appli:[6,10,11,12,13,19,21,24,28,30,46,52],applic:[6,11,19,23,25,26,49],apply:[9,13,29],appreci:28,approach:[4,41,51],appropri:[6,11,19,21,25,28,49,50,51],appropriat:[6,50],approxim:[41,46],apt:34,arbitrari:[11,12,21],arbitrarili:11,archiv:[6,40],aren:13,arg:14,argnam:14,argnum:14,argument:[11,13,14,16,17,30,31,42,52],arguments_declar:14,arguments_signatur:14,armor:34,around:[6,19,41,43,50],arrai:[6,30],arriv:[28,30],artifact:26,artifici:11,asap:10,asc:[9,11,13],ascend:[11,13],ascii:[9,11,14,17,21],asf:26,ask:[5,28,29,49],aspect:11,assertionerror:23,assertrow:29,assign:[6,13,30],associ:[6,11],assum:[6,11,14,26,49,50],assumpt:49,astyanax:32,async:[6,49],asynchron:[6,16,30,43],asynchroni:46,atabl:14,atom:[11,13,20,24],atomiclong:46,attach:28,attemp:46,attempt:[0,6,11,16,18,19,21,30,41,46,49,52],attent:[23,28],attribut:41,auth:6,authenticatedus:6,authorizationproxi:49,authorize:[9,19],auto:[6,30],auto_bootstrap:51,autocompact:41,autogener:54,autom:[8,23],automat:[6,13,14,16],avail:[0,6,8,11,14,19,26,28,29,34,40,49,52],availabil:6,availabl:[6,28,50],ave:21,averag:[14,41,46],average_s:11,averagefin:14,averagest:14,avg_bucket_s:41,avoid:[6,11,12,23,25,28,38,41,43,49,50,52],awai:[26,51,52],awar:[0,11,28,38,42],aws:43,azure:43,b124:13,b70de1d0:13,back:[6,41,46,51],backend:6,background:[30,34,41,49],backpressur:6,backup:[6,36],backward:[6,10,11,15,19,21],bad:[6,14,30,50],balanc:51,banana:21,band:21,bar:[12,23],base:[0,4,6,10,11,13,14,18,19,21,24,28,29,30,41,43,46,49,51],bash:30,basi:[6,30,42],basic:[11,41,43],batch:[6,9],batch_remove:46,batch_stat:12,batch_store:46,batchlog:[13,46],be34:13,beatl:21,beca:52,becaus:[6,13,14,34,41,42,49],becom:[4,6,11,14,19,28,41,46,49,51],been:[0,4,6,10,13,14,15,19,21,25,28,41,43,49],befor:[0,6,10,11,13,14,16,20,21,26,27],begin:[9,12,13,29,49,52],beginn:28,begintoken:52,behavior:[0,10,14,17,21,23,25,38,41,51],behind:[6,23,29,30,41],belong:[11,13,14,46],below:[6,11,12,13,17,19,21,28,34,41,52],benchmark:43,benefici:41,benefit:[38,41],besid:6,best:[6,29,41,49,50],best_effort:6,better:[6,23,28,41,43],between:[0,6,9,10,13,15,28,30,38,41,46,49,51],beyond:[6,52],big:41,bigger:[11,41],biggest:14,bigint:[9,11,14,17,21],bigintasblob:14,bin:[26,34,35,52],binari:[14,33],bind:[6,10,12,14,30],bind_mark:[12,13,18,21],biolog:11,birth:13,birth_year:13,bit:[6,14,17,21,28,30,42,43],bite:30,bitrot:11,bitstr:9,black:6,blank:[6,23,30],blindli:30,blob:[9,10,11,12],blobasbigint:14,blobastyp:14,block:[4,6,11,24,31,41,43,46,49],blockedonalloc:6,blog:[6,11,13],blog_til:13,blog_titl:13,bloom:[4,11,36],bloom_filter_fp_ch:[11,38],bloomfilterdiskspaceus:46,bloomfilterfalseposit:46,bloomfilterfalseratio:46,bloomfilteroffheapmemoryus:46,blunt:49,bnf:12,bob:[13,19],bodi:[11,12],boolstyle:52,boot:30,bootstrap:[0,6],born:13,both:[0,6,11,13,14,18,21,24,25,28,30,31,38,41,42,43,46,49,51,52],bottleneck:6,bottom:30,bound:[6,11,12,21,43,49],box:[6,49,50],brace:23,bracket:12,braket:12,branch:[24,25,26],branchnam:28,breakpoint:26,breed:29,bring:6,brk:30,broadcast:6,broken:[41,46],browser:52,bucket:41,bucket_high:41,bucket_low:41,buffer:[4,6,46],bufferpool:45,build:8,built:[26,46],bump:10,bunch:23,burn:40,button:30,bytebuff:14,byteorderedpartition:[6,14],bytescompact:46,bytesflush:46,c73de1d3:13,cach:6,cachecleanupexecutor:46,cachenam:46,calcul:[6,38,40,41,46,50],call:[11,12,13,14,19,23],callback:46,called:[9,14],caller:23,can:[0,4,5,6,8,9,10,11,12,13,14,16,17,18,19,20,21,23,24,25,26,28,29],cancel:10,candid:41,cannot:[6,9,11,13,14,17,18,19,21,41,49],cap:12,capabl:[6,30,52],capac:[6,40,46,50],captur:[6,36],care:[6,41],carlo:19,carri:23,cas:6,cascommit:46,casprepar:46,caspropos:46,casread:46,cassablanca:21,cassafort:32,cassandra:[0,2,4,5],cassandra_home:[6,40,49],cassandraauthor:[6,49],cassandradaemon:[26,34],cassandralogin:49,cassandrarolemanag:[6,49],casser:32,cassi:32,cast:[10,13],caswrite:46,cat:21,categor:46,categori:[11,12,13,14],caught:[25,46],caus:[6,18,30,41,49],caution:6,caveat:49,cbc:6,ccm:[25,29],ccmlib:29,cdc:[6,11],cdc_free_space_in_mb:40,cdc_raw:[6,40],cdccompactor:6,cell:[6,21,46],center:[6,11,21,30,50,51],central:[26,49,52],centric:19,certain:[6,9,11,19,29,41,49],certainli:14,certif:49,chain:19,chanc:38,chang:6,changes:[24,28],channel:[5,8,28],charact:[11,12,13,17,19,21,23,52],chat:8,cheap:6,check:[0,6,11,13,23,25,26,28,29,30,38,40,41,46,49],checkout:[26,28],checksum:[11,42],cherri:24,chess:13,child:52,chmod:49,choic:[6,11,36,41],choos:[0,6,11,27],chosen:[0,6,11,14],chown:49,chrome:52,chunk:[4,6,30,42,52],chunk_length_in_kb:[11,42],chunk_length_kb:6,chunkcach:46,chunksize:52,churn:6,cipher:[6,49],cipher_suit:6,circular:19,citi:21,clash:12,class_nam:6,classpath:[6,14,21,46],claus:[10,11],clean:[6,23,46],cleanli:28,cleanup:[30,41,45,46],clear:[25,28],click:[13,26,28],client:[0,6,8,10,11,13,17,19,21,25,30,31],clientrequest:46,clock:6,clockr:6,clone:[26,30,52],close:[6,15,49],closer:38,cls:52,cluster:[0,4,6,10],clustering:[9,11,13],clustering_column:11,clustering_ord:11,cmsparallelremarken:26,code:[6,10,12,14,20],codestyl:23,col:14,cold:6,collat:6,collect:[6,10,11,12,13,14,15,17],collection_liter:12,collection_typ:21,color:[21,52],column:[6,10],column_definit:11,column_nam:[11,13,16],columnfamili:[6,23,41],columnfamily:9,columns:13,colupdatetimedeltahistogram:46,com:[6,11,14,23,24,49],combin:[4,6,10,40,41],come:[6,49],comingl:41,comma:[6,11,12,13,31,49,51,52],command:[0,6,24],comment:[6,11],commit:[6,8,11],commitlog:2,commitlog_archiv:6,commitlogread:40,commitlogreadhandl:40,commitlogreplay:40,commitlogseg:6,committ:[24,28,29],common:0,common_nam:11,commun:[6,8,25,26,28,30,31,35,49],commut:30,compact:[4,6,9],compaction_window_s:41,compaction_window_unit:41,compactionbyteswritten:46,compactionexecutor:46,compactionhistori:41,compactionparamet:41,compactionparametersjson:41,compactionstat:41,compar:[6,28,41,46],compat:[6,10],compatilibi:21,compet:6,compil:[23,26,52],complain:26,complet:[6,13,14,28,30,41,46,49,51,52],completedtask:46,complex:[6,9,14,21,28],complexarg:14,compliant:[6,14,49],complic:28,compon:[4,11,25,38,46,49],compos:[11,13,21],composit:11,compound:17,comprehens:25,compress:[4,6],compressioninfo:4,compressionmetadataoffheapmemoryus:46,compressionratio:46,compressor:[6,11],compris:[4,11,42],compromis:49,comput:[6,14],concaten:14,concept:[15,19,41],concern:[13,14],concret:[12,21],concurr:[6,43],concurrentmarksweep:43,condens:13,condit:[6,10,12,13,19,21,23,24,41,46,49,52],conditionnotmet:46,conf:[6,30,31,34,46,49,52],config:[46,49,52],configur:[0,4],confirm:[6,8,25,26],conflict:[13,21,24],conform:[18,25],confus:[10,12,30],conjunct:52,connect:[6,11,19,21,26],connectednativecli:46,connectedthriftcli:46,connector:[30,32,49],consecut:31,consequ:[11,13,21,43],conserv:6,consid:[0,6,13,21,28,31,38,41,43],consol:[26,31,52],constant:[10,11],constantli:[6,41],construct:12,constructor:[6,23],consum:[29,38,40,46],consumpt:40,contact:6,contain:[0,6,8,11,12,13,15,18,19,21,26,28,40,41,42,49,52],contains:[9,10,13,16],contend:[6,46],content:[4,6,11,12,13,36,41,52],contentionhistogram:46,context:[9,19,28,30,49],contigu:13,continu:[0,6,23,29,41,49,50],contrarili:12,contrast:[29,49],contributor:[24,28,29,34],control:[0,6,10,11,13,15],conveni:[9,12,14,17,29,51],convent:[6,11],convers:[10,11],convert:[10,11,13,14,41],coordin:[0,6,11,13,14,21,30,46],coordinatorreadlat:46,coordinatorscanlat:46,cop:23,copi:[0,30,41,52],core:[6,14,43],correct:[10,25,34,41,42],correctli:[6,11,30,41,49],correl:[6,10,50],correspond:[6,11,13,14,18,21,28,29,30,40,50],corrupt:[6,11,41,42,43],cost:[6,13,21,42],could:[12,21,25,28,41,52],couldn:34,count:[6,9,13],counter:[6,9],counter_mutation:46,countercach:46,countermutationstag:46,countri:[13,21],country_cod:21,coupl:[0,6],cours:[6,13],cover:[25,28,29,30,33,41,46],cpu:[6,11,40,42],cqerl:32,cql3:[11,14,25,29,52],cql:6,cql_type:[11,12,13,14,19,21],cqlc:32,cqldefinit:14,cqlsh:[30,33,34],cqltester:[25,29],crash:43,crc32:4,crc:4,crc_check_chanc:[11,42],creat:[6,10,11,13,14,16,17,18],create:[9,10],create_aggregate_stat:12,create_function_stat:12,create_index_stat:12,create_keyspace_stat:12,create_materialized_view_stat:12,create_role_stat:12,create_table_stat:12,create_trigger_stat:12,create_type_stat:[12,21],create_user_stat:12,createkeystor:6,createt:29,creation:[11,13,14,18,21],creator:19,credenti:6,critic:[25,28,49],cross:[6,30,50],crossnodedroppedlat:46,cryptographi:6,csv:52,cuddli:21,curl:24,current:[6,9,11,13,14,19,21,26,28,34,41,46,51,52],currentlyblockedtask:46,custom:[6,9,10,11,14,15,16,19],custom_option1:19,custom_option2:19,custom_typ:[14,21],cute:21,cvh:25,cycl:40,daemon:26,dai:[17,21,41],danger:6,dash:12,data:[0,4,6,10],data_read:19,data_writ:19,databas:[12,13,15],datacent:[0,6,50],datacenter1:6,dataset:6,datastax:[6,11,14,32],datatyp:14,date:[9,10,11,14,15,17],dateof:[10,14],datestamp:17,datetieredcompactionstrategi:[11,41],days:41,db_user:49,dba:49,dc1:[6,11,49],dc2:[6,11,49],dcassandra:[41,46,49,51],dclocal_read_repair_ch:[0,11,41],dcom:49,ddl:[11,52],ddl_statement:12,dead:[6,45],dead_node_ip:51,deb:34,debian:[30,33],decid:[9,41,50],decim:[11,14,17,21,52],decimal:[9,21],decimalsep:52,declar:[11,12,14,21],decod:17,decommiss:[6,51],decompress:42,decreas:41,decrement:[13,21],decrypt:6,dedic:6,deem:6,deeper:28,default_time_to_l:[10,11,13],default_weight:6,defend:30,defin:[0,6,9,10,11,12,13],deflat:6,deflatecompressor:[11,42],degrad:6,delet:[6,10,11,12,13,21,28],delete_stat:[12,13],delimit:6,deliv:[0,6],deliveri:6,delta:46,demand:49,deni:30,denorm:21,denot:12,dens:38,depend:[4,6,11,12,13,14,25,26,28,29,41],deploi:[30,31],deploy:[6,49,50],deprec:[6,10,11,15,30,41],deprecated:14,desc:[9,11,13,52],descend:[11,13],describ:[2,6,7,10,11,12,13,14,15,17,21,25,26,28,53],describe:[9,19,38,49],descript:[6,10,11,14,21,46,52],descriptor:46,design:[14,40,41,43],desir:[16,21,30],destin:[40,52],detail:[5,10,11,12,13,14,21,30],determin:[0,6,13,19,38,42,50],determinist:30,dev:[6,8,11,30],develop:[5,8,26],dfb660d92ad8:52,dht:6,dictat:[6,49],did:[25,46],die:6,diff:[15,23],differ:[0,6,11,12,13,14,15,19,21,24,26,28,29,30,31,34,41,42,43,46,51],difficult:[6,29],difficulti:21,digest:4,digit:[17,21,30],diminish:21,direct:[6,11,17,19,28,46],directli:[13,18,19,26,41],director:13,directori:[6,20,26,29,30],dirti:6,disabl:[6,11,14],disable_stcs_in_l0:41,disableautocompact:41,disallow:6,discard:[6,40],disconnect:41,discourag:[11,21,28],discov:30,discuss:[8,21,28],disk:[4,6,11],displai:[11,52],disrupt:[30,49],dist:34,distinct:[0,9,10,13],distinguish:[9,14],distribut:[6,29,30,41,46,49,51],divid:12,djava:[26,30,49],dml:20,dml_statement:12,dmx4jaddress:46,dmx4jport:46,dns:30,dobar:23,doc:[6,25,40,49],document:[5,12,14,15,17,25,28,35],doe:[6,11,13,14,16,17,18,19,21,24,25,28],doesn:[14,21,23,29,30],dofoo:23,dollar:[10,12],domain:49,don:[5,13,23,24,25,26,28,30,31,41,51],done:[6,11,13,21,28,29,31,35,41],doubl:[6,9,10,11,12,14,17,21,26,46,50],down:[6,19,41,46,50,51],download:[6,26,34,46],downward:19,drive:[6,41,43],driver:[6,12,14,29],drop:[6,9,10],drop_aggregate_stat:12,drop_function_stat:12,drop_index_stat:12,drop_keyspace_stat:12,drop_materialized_view_stat:12,drop_role_stat:12,drop_table_stat:12,drop_trigger_stat:12,drop_type_stat:[12,21],drop_user_stat:12,droppabl:41,droppedmessag:45,droppedmetr:46,droppedmut:46,dropwizard:46,dt_socket:26,dtest:[25,27],due:[11,13,30,34,46,51],dump:52,duplic:25,durable_writ:11,durat:[6,19,21,41,46],dure:[6,11,14,20,28,29,30,41,42,46,49,51,52],dynam:[6,45,49],dynamic_snitch:50,each:[0,4,6,10,11,12,13,14,17,18,19,21,24,28],each_quorum:0,earli:[6,12,28],earlier:15,easi:[9,28],easier:[0,28],easiest:30,ebs:43,ec2:[6,43,50],ec2multiregionsnitch:[6,50],ec2snitch:[6,50],ecc:43,echo:34,eclips:23,ecosystem:25,edg:25,edit:[31,46,49],edition:[26,34],edu:34,effect:[6,11,28,30,38,42,49],effectiv:46,effici:[6,11,41,50,51],effort:6,either:[6,8,12,13,14,16,21,23,24,26,28,30,34,35,40,41,46,49],elaps:[41,46],element:[21,52],elig:6,els:[11,13,23,28],email:[8,16,21],embed:29,emploi:38,empti:[6,10,11,12,52],enabl:[6,11,14,17,19,30],enableautocompact:41,encapsul:[23,46],enclos:[9,10,12,14,19],enclosur:12,encod:[17,21,25,52],encode:15,encoding:52,encount:[5,13,34,46],encourag:[6,11],encrypt:[6,49],encryption:45,encryption_opt:6,end:[21,28,30,41,49,52],endpoint:[46,50],endtoken:52,enforc:[17,49],engin:[11,28,46],engine:2,enhanc:43,enough:[0,6,21,30,31,41,50,52],enqueu:6,ensur:[11,13,18,20,30,42,49],entail:30,enter:[30,52],entir:[0,4,6,14,21,30,38,41,49,51,52],entri:[4,6,13,28],entries:[9,16],entropi:6,entry_titl:13,enumer:19,env:[30,31,46,49],environ:[0,5,6,26,30],ephemer:43,epoch:21,equal:[0,6,10,11,13,23,41],equival:[10,11,12,13,14,19,24,41],eras:11,erlcass:32,err:52,errfile:52,error:[6,11,12,14,16,18,19,21,23,25,26],escap:[12,17],especi:[28,30,41,52],essenti:[6,14,30,52],essential:0,establish:[6,19,50],estim:46,estimat:46,estimatedcolumncounthistogram:46,estimatedpartitioncount:46,estimatedpartitionsizehistogram:46,etc:[6,18,21,23,25,30,31,34,41,46,49],eth0:6,eth1:6,ev1:21,even:[0,6,10,12,13,14,17,21,28],evenli:6,event:[13,21,41,52],event_typ:13,eventu:13,eventual:4,ever:[23,29,30,43],everi:[4,6,11,13,14,18,19,20,21,35,38,41,43,52],everyth:[12,23,26,30],evict:46,evil:[6,14],exact:[11,12,14,42],exactli:[11,14,18,49],exampl:[0,6,11,13,14,17,19,29,34,35,41,49,50,52],exaust:6,excalibur:11,exce:[4,6,17,23],exceed:[6,43],excel:11,excelsior:11,except:[0,13,14,17,23,25,28,29,30,46],excess:38,exchang:[6,30],exclud:46,exclus:[21,29],execut:[6,11,12,13,14,19,26,29,35,41,46,52],execute:[9,19,49],exhaust:6,exhibit:13,exist:[6,11,12,13,14,16,17,18,19,20,21,25,26,29],exists:[9,10,11,13,14,16,18,19,20,21],expect:[6,10,12,21,23,25,28,41,49],expens:[6,38,50],experi:[6,41],experienc:6,expir:[10,11,13,21],expiri:41,explain:[23,25,28,34],explicit:10,explicitli:[6,10,13,17,21,23,41,50],explorer:26,expon:10,exponenti:46,expos:[6,49],express:[0,6,10,12,50],expung:30,extend:[21,28,29],extens:[11,49],extension:6,extern:[46,51],extra:[0,6,11,41],extract:[23,34],extrem:6,extreme:13,fact:[29,30],factor:[0,6,11],fail:[6,13,14,21],fairli:[6,40,49],fake:14,fall:6,fallback:[6,50],fals:[6,11,17,19,21,38,40,41,42,46,49,51,52],famili:[6,43],fast:[6,38,41],faster:[6,28,42,43],fastest:[6,24,50],fatal:6,fault:30,fav:[16,21],fax:21,fct:14,fct_using_udt:14,fear:30,feasibl:21,featur:[25,26,28,49],fed:6,feedback:28,feel:24,fetch:[6,11,52],few:[41,43],fewer:[6,28],fffffffff:[17,21],field:[10,13,14,17,21,23,38],field_definit:21,field_nam:13,fifteen:46,fifteenminutecachehitr:46,figur:41,file:4,filenam:[11,52],filesystem:49,fill:[40,41],fillion:13,filter:[4,11],filtering:[9,13,18],finalfunc:[9,14],find:[6,26,29,34,38,41,51],fine:[6,28,49],finer:6,finish:[26,28],fips:[6,49],fire:20,firefox:52,firewal:[6,30,31,50],first:[5,6,11,13,14,21,28,30,33,41,43,49,52],firstnam:13,fit:[6,41,46],five:46,fiveminutecachehitr:46,fix:[6,10,12,24],flag:[6,13,24,25,28,40,46,51],flexibl:49,flight:[6,49],flip:11,flow:[19,25],fluent:32,flush:[4,6,40,41,43,46],fname:14,focu:28,folder:26,follow:[0,5,6,8,9,10,11,12,13,14,17,18,19,21,23,24,25,26,28,29,30,31,34,36,40,41,42,46,49,50,52],font:12,foo:[11,12,40],forc:[4,6,11,13,52],foreground:[31,34],forev:41,forget:5,fork:28,form:[6,10,11,12,14,19],formal:12,format:[6,10,17,21],former:46,forward:[6,11],found:[5,12,14,15,28,29,31,35,49,52],four:13,fqcn:29,fraction:6,frame:6,framework:[25,29],franc:13,free:[6,11,21,24,26,46],freed:4,freenod:8,frequenc:[6,40],frequent:[6,29],fresh:51,friendli:[21,29],from:[0,4,6,9,11,12,13,14,15,17,18,19,21,24],fromjson:15,frozen:[9,10,11,13,14,21],fruit:[21,28],fsync:[6,46],full:[6,9,11,13,16,19,28,34,35,41,42,49,52],fulli:[6,11,12,14],function_cal:12,function_nam:[13,14,19],functions:[9,19,52],fundament:17,further:[5,6,11,18,21],furthermor:[10,13,49],futur:[6,9,10,11,21,28],g1gc:43,game:[14,21],garbag:11,gather:41,gaug:46,gaurante:0,gc_grace_second:11,gc_type:46,gce:[30,43],gcg:6,gener:[0,2,4,6,8,11,12,13,14,17,21],genuin:23,get:[6,8,24,26,28,30],getint:14,getlocalhost:[6,30],getlong:14,getpartition:23,getstr:14,gettempsstablepath:23,getter:[19,23],gist:23,git:[5,24,26,28],github:[23,24,28,29],give:[18,19,21,28],given:[0,6,11,12,13,14,16,21,28,38,41,49,51,52],global:[6,52],gmt:21,goal:[6,41],gocassa:32,gocql:32,gone:6,good:[6,23,28,29,30,52],googl:[23,52],gori:30,gossipingpropertyfilesnitch:[6,50],gossipstag:46,gp2:43,gpg:34,grai:21,grain:49,grammar:[11,12],grant:[6,9],grant_permission_stat:12,grant_role_stat:12,granular:6,graph:19,gravesit:11,great:[28,41],greater:[0,6,30,50],greatli:6,green:21,group:[6,10,11],group_by_claus:13,grow:21,guarante:0,guid:[6,26],guidelin:[10,25,43],had:[10,41],half:[6,24,30],hand:[6,13,43],handl:[6,14],handoff:[6,46,51],hang:28,happen:[6,13,23,24,28],happi:28,happili:43,hard:[6,14,41,43],hardwar:[6,36],hash:[4,6,41],hashcod:23,have:[0,5,6,9,10,11,12,13,14,15,18,19,21,23,24,25,26,28,29,30,31,34,38,41,42,43,46,49,50],haven:28,hayt:32,hdd:[6,43],head:28,header:[26,52],headroom:6,heap:[4,6,26],heap_buff:6,heavi:6,heavili:43,held:[6,43],help:[5,6,10,28,29,35],helper:29,henc:[5,6,11,21],here:[6,24,29,30,32,41,46,49],hex:[12,17],hexadecim:[10,12],hibern:51,hidden:51,hide:[23,25],hierarch:19,hierarchi:19,high:[0,30,41,43],higher:[0,19,28,38,41,46,51],highest:41,highli:[28,30,43,49],hint:[0,6,11,12,30,31,36],hintedhandoff:[6,45],hintedhandoffmanag:46,hints_creat:46,hints_not_stor:46,hintsdispatch:46,histogram:[41,46],histor:28,histori:23,hit:[6,41,46],hitrat:46,hoc:29,hold:[0,6,10,13,19,30,41,52],home:[21,52],hope:41,hopefulli:28,host:6,hostnam:[6,30],hot:[6,46],hotspot:11,hotspotdiagnost:49,hottest:6,hour:[6,21,28,41],hours:41,how:[0,5,6,7,8,11,12,21],howev:[6,9,10,11,12,13,15,17,18,21,28,29,30,31,34,38,42,43,49,52],hsha:6,html:6,http:[6,23,24,26,34,46],httpadaptor:46,hub:30,human:11,hypothet:24,iauthent:6,iauthor:6,icompressor:42,idea:[6,14],ideal:6,idealli:[29,41,49],idempot:[13,21],idemptot:21,ident:0,identifi:[6,9,10,11],idiomat:8,idl:6,ieee:[17,21],iendpointsnitch:[6,50],ignor:[0,6,10,14,21,23,52],ignore:6,iinternodeauthent:6,illeg:14,illustr:19,imag:21,imagin:41,immedi:[6,11,21,28,38,42],immut:[4,30,42,43],impact:[6,11,25,41],implement:[6,10,13,14,18,19,23,29,30,40,42,49,50],impli:[11,12,21],implic:[0,49],implicitli:14,import_:52,important:11,imposs:41,improv:[0,6,11,21,28,29,38,41,43,50,51,52],inact:30,includ:[4,6,10,11,12,13,18,19,21,23,28,40,41,43,46,49,52],include:[28,46],inclus:28,incom:6,incomingbyt:46,incompat:[6,10],incompatible:6,incomplet:25,inconsist:[0,30],incorrect:30,increas:[6,11,30,38,42,43,46,50,51],increment:[6,10,13,21,28,41],incur:[13,21,46],indent:23,independ:[11,41,43,49],index:[4,6,9,10,11,12,13,15],index_identifi:16,index_nam:16,indexclass:16,indexedentrys:46,indexinfocount:46,indexinfoget:46,indexsummaryoffheapmemoryus:46,indic:[5,6,12,13,23,28,30],indirectli:13,individu:[6,10,14,21,28,29,43,49],induc:13,inequ:[10,13],inet:[9,11,14,17,21],inetaddress:[6,30],inexpens:43,infiniti:[10,12],infinity:[9,12],influenc:11,info:[6,31,46],inform:[4,6,12,13,21,35,49,50,51,52],ingest:6,ingestrate:52,inher:[11,21],inherit:19,init:46,initcond:[9,14],initi:[6,14,23,25,40,46,49,52],input:[9,10,14,17,21,25,52],inputd:21,inreleas:34,insensit:[11,12],insert:[6,9,10,11,12],insert_stat:[12,13],inserted:6,insid:[11,13,21,23,52],inside:12,inspect:[6,52],inspection:26,instabl:6,instal:[6,20,30,34,52],install:33,installat:33,instanc:[6,10,11,12,13,14,16,18,19,20,21,26,29,30,40,41,43,46],instantan:46,instanti:10,instantli:6,instead:[10,11,13,18,21,23,30,41],instruct:[6,8,11,24,26,36],instrument:49,intasblob:13,integ:[0,10,11,12,13,17,21],integer:[12,46],integr:[29,49],intellij:23,intend:[25,49],intens:[6,29,30],intent:25,inter:6,interact:[29,35,52],interest:[0,41,49],interfac:[6,10,14,23,30,31,42,49],intern:[6,11,13,18],internaldroppedlat:46,internalresponsestag:46,internet:6,internod:[6,30],internode_encrypt:[6,49],interpret:[10,21,52],interrupt:30,interv:[6,9,46],intra:[6,46,50],intrins:21,introduc:[6,10,17,28,51],introduct:[10,19,29],intvalu:14,invalid:[6,13,19,25,49],invertedindex:20,investig:6,invoc:14,invok:[24,34,49],invoke:34,involv:[6,13,41,42,49],ioerror:23,ip1:6,ip2:6,ip3:6,ipv4:[6,17,21,30],ipv6:[6,17,21],irc:5,irolemanag:6,irrevers:[11,21],isn:[0,18,23,28,30],iso:21,isol:[11,13],issu:[0,19,24,28,29,30,38,41,42],item:[12,21,25,26],iter:0,itself:[6,11,16,30,34],iv_length:6,jaa:49,jacki:24,jamm:26,januari:21,jar:[14,23,26,46],java7:49,java:[6,14,20,21,23,26,28],javaag:26,javadoc:[23,25],javas:6,javascript:[6,14],javax:49,jbod:43,jce8:6,jce:6,jceks:6,jdk:6,jdwp:26,jenkin:29,jetbrain:26,jira:[5,25,28,29,40],jks:6,jkskeyprovid:6,jmc:[41,49],jmx:[6,19],jmx_password:49,jmx_user:49,jmxremot:49,job:28,john:[13,21],join:[6,8,13],joss:13,jpg:21,jsmith:21,json:[9,10,13,15],json_claus:13,jsr:[6,14],jsse:6,jsserefguid:6,judgement:23,junit:[23,26,29],jurisdict:6,just:[6,14,19,26,28,29,30,41,49],jvm:[6,20,26,30,31,45],jvm_extra_opts:26,jvm_opts:[31,49],jvmstabilityinspector:25,keep:[6,8,11,23,28,30,41,46],keepal:[6,30],kei:[4,6,10],kept:[6,41,46],kernel:[6,30],key:[9,10,11,13,14,16,18,21,29,40,42],key_alia:6,key_password:6,key_provid:6,keycach:46,keycachehitr:46,keys:[9,16],keyserv:34,keyspac:[0,6,10,11,12,14,16,19,21],keyspace1:[6,19],keyspace2:6,keyspace:[6,9,10],keyspace_nam:[11,14,19,21,41],keyspaces:[9,19,52],keystor:[6,49],keystore_password:6,keystorepassword:49,kill:[6,34],kilobyt:42,kind:[11,12,21,28,40,41],kitten:21,know:[6,13,21,23,41],known:[19,21,32,35,38,41],ks_owner:49,ks_user:49,kundera:32,label:[21,28],lag:46,land:42,landlin:21,languag:[6,9,10,12,14],language:[9,14],larg:[6,11,13,14,21,29],larger:[6,29,30,41,42,43],largest:[6,46],last:[6,12,13,14,15,28,41,46],lastknownloc:11,lastli:[13,21],lastnam:13,latenc:[0,6,30,46,50],later:[0,11,21,23,28,30],latest:[0,28,34,41,52],latter:12,layer:43,layout:11,lazi:11,lazili:11,lcs:11,lead:[6,10,21,41],learn:[6,29,30,52],least:[0,6,11,12,13,18,30,41,43],leav:[6,12,13,23,30,52],left:[6,17,41],legaci:[6,19],legal:10,length:[4,6,10,17,25,41],less:[6,21,28,30,38,43],let:[6,41],letter:17,leveledcompactionstrategi:[11,38,41],lexic:30,lib:[6,20,25,26,34],libqtcassandra:32,librari:[8,25,29,32,46,52],licenc:25,licens:[25,26,28],life:28,lifespan:43,like:[0,6,12,13,14,17,21,23,24,25,28,29,30,36,41,42,43,49],likewis:19,limit:[6,9,10,11],line:[12,23],linear:43,linearli:38,link:[6,8,11,12,28,29,34],linux:[6,30],list:[4,5,6],list_liter:[13,21],list_permissions_stat:12,list_roles_stat:12,list_users_stat:12,listarg:14,listen:6,liter:[10,12,14,17],littl:23,live:13,livediskspaceus:46,livescannedhistogram:46,livesstablecount:46,load:[0,6,11,20,21],local:[0,6,11,26,28,29,35,43,46,49,50,52],local_jmx:49,local_one:[0,49,52],local_quorum:[0,52],local_serial:52,localhost:[6,35,49],locat:6,lock:[6,30,46],log:[6,11,13,25,29],log_al:41,logback:31,logged:6,logger:[23,31],logic:[6,20],login:[6,9,19,49],lol:21,longer:[6,10,30,41,51],look:[6,12,24,28,29,41,43],loop:23,lose:[6,41,51],loss:[6,21],lost:[41,51],lot:6,low:[6,28],lower:[0,6,11,12,13,19,30,38,41,46,51],lowercas:12,lowest:[28,41],lz4:6,lz4compressor:[6,11,42],macaddr:9,machin:[6,11,29,30,46,49,50,51],made:[6,21],magnet:6,magnitud:13,mai:[0,4,6,9,10,11,13,14,16,17,19,21,25,26,28,29,30,34,38,41,49,50,51,52],mail:5,main:[0,14,18,26,30],main_actor:13,mainli:[6,11],maintain:[6,28],mainten:46,major:[0,10,28],make:[0,6,8,20,21,23,26,28,29,30,31,34,41,49,51,52],man:6,manag:[6,19,26,29,46,49,51],mandatori:[11,14],mani:[0,6,11,23,25,28,41,42,43,46,49,52],manipul:12,manual:[6,24,30],map:[6,9,10,11,13,14],map_liter:[11,16,19,21],mar:21,mark:[6,19,41,51],marker:[6,11,12,25,30],match:[6,12,13,14,17,19,46,50],materi:[6,10,11,12,15],materialized:15,materialized_view_stat:12,matter:[11,30],max:6,max_map_count:30,max_mutation_size_in_kb:[6,30],max_thread:6,max_threshold:41,maxattempts:52,maxbatchsize:52,maxfiledescriptorcount:46,maxim:43,maximum:[4,6,14,38,46,52],maxinserterrors:52,maxoutputsize:52,maxparseerrors:52,maxpartitions:46,maxpools:46,maxrequests:52,maxrows:52,maxtimeuuid:10,mayb:13,mbean:[6,19,41,46,49],mbeans:[19,49],mbeanserv:19,mbp:6,mct:6,mean:[6,9,11,12,13,14,17,18,21],meaning:13,meanpartitions:46,meant:[21,30,46],measur:[6,25,29,46,51,52],mechan:40,median:46,meet:[6,25],megabyt:6,member:23,membership:6,memlock:30,memori:[4,6,11],memory_pool:46,memtabl:2,memtable_allocation_typ:4,memtable_cleanup_threshold:4,memtablecolumnscount:46,memtableflushwrit:46,memtablelivedatas:46,memtableoffheaps:46,memtableonheaps:46,memtablepool:6,memtablepostflush:46,memtablereclaimmemori:46,memtableswitchcount:46,mention:[6,21,28,46,49],menu:26,mere:23,merg:[24,28,38],mergetool:24,merkl:46,mess:[28,29],messag:[6,21,25,28],met:13,meta:[13,46],metadata:[4,19,42,43,46],meter:46,method:[10,13,14,19,23,25,26,29],metric:[6,45],metricnam:46,metricsreporterconfigfil:46,microsecond:[11,13,46],midnight:21,might:[6,13,41,46],migrat:[6,46,50],migrationstag:46,millisecond:[6,10,21,46],min:6,min_sstable_s:41,min_threshold:41,minbatchsize:52,mind:6,minim:[6,41,43],minimum:[6,11,14,31,46],minor:[10,12],minpartitions:46,mintimeuuid:10,minut:[6,41,46],minutes:41,misbehav:41,miscelen:46,miscellan:6,miscstag:46,miss:[11,41,46,51],misslat:46,mit:34,mitig:[6,49],mix:[6,41],mmap:30,mnt:16,mock:29,mode:[6,49,52],model:[11,15,19],moder:43,modern:43,modif:[13,19],modifi:[6,10,11,14,19,21,28,38,41,42],modification_stat:13,modify:[9,19],modul:52,modular:25,moment:[6,28],monitor:[30,36,45],monkeyspeci:[11,18],monkeyspecies_by_popul:18,more:[0,4,6,10,11,12,13,21,23,28,29],moreov:13,most:[6,11,12,13,21,26,28,29,30,31,41,42,43,49,52],mostli:[6,11,21],motiv:[29,41],mount:6,move:[6,28,30,36,40,45,46],movement:45,movi:[13,21],mtime:11,much:[0,5,6,11,38,41,50],multi:[0,6,12,25],multipl:[4,6,10,11,12,13,14,21,23,25,26,28,30,31,41,43,50],murmur3partit:4,murmur3partition:[6,14,52],must:[0,6,10,11,13,14,17,18,19,23,28,29,30,31,41,46,49,51,52],mutant:16,mutat:[0,6,13,30,40,46],mutation:46,mutationstag:46,mv1:18,mx4j:46,mx4j_address:46,mx4j_port:46,mx4jtool:46,mxbean:19,myaggreg:14,mycolumn:17,mydir:52,myevent:13,myfunct:14,myid:12,mykei:17,mykeyspac:14,mytabl:[11,14,17,20],mytrigg:20,name:[6,9,10,11,12,13,14,16,17,18,19,20,21,25,26,28,29,30,31,46,49,52],names_valu:13,nan:[9,10,12],nanosecond:21,nathan:13,nativ:[6,10,12],native_transport_min_thread:6,native_typ:21,natur:[11,21,23,41,42],nearli:26,neccessari:6,necessari:[6,11,14,19,28,34,42,49],necessarili:[6,12,31],need:[0,6,10,11,12,13,19,21,23,25,26,28,30,31,34,35,38,41,42,43,49,50,52],neg:6,neglig:13,neighbour:41,neither:[18,21,49],neon:26,nerdmovi:[13,16],nest:[12,13,23],net:[6,26,30],netstat:51,network:[6,13,30,43,49,50],never:[6,10,11,12,13,14,21,23,30,41],nevertheless:13,new_rol:19,new_superus:49,newargtuplevalu:14,newargudtvalu:14,newest:[11,41],newli:[11,21,28,40],newreturntuplevalu:14,newreturnudtvalu:14,news:25,newtuplevalu:14,newudtvalu:14,next:[6,30,35,41,52],nfs:43,ngem3b:13,ngem3c:13,nifti:24,nio:[6,14,46],no_pubkey:34,node:[0,4,6,11,13,14,20,21,25,29],nologin:9,non:[6,9,10,11,12,13,14,19,21,30,38,42,46,49,52],none:[6,11,13,21,49],nonsens:19,nor:[11,18,21],norecursive:[9,19],norm:46,normal:[14,17,26,30,34,46,51,52],noschedul:6,nosuperuser:[9,19],notabl:[14,17],notat:[10,12,13,52],note:[0,5,6,10,11,12,13,14,15,17,19,21,24,28,30,41,49],noth:[6,11,14,24,29,30],notif:8,notion:[11,12],now:10,ntp:6,nullval:52,num_cor:52,number:[0,6,10,11,12,13,14,17,18,21,26,28,29,30,34,38,41,42,46,49,51,52],number_of_cor:6,number_of_dr:6,numer:[15,38],numprocesses:52,object:[6,11,12,25],objectnam:19,observ:23,obsolet:[6,43,46],obtain:[12,49],obviou:[14,24],obvious:11,occup:13,occupi:[6,46],occur:[10,12,13,20,21,30,41,43,46],occurr:21,octet:[6,50],odd:28,off:[4,6,30,42,46,49,52],offer:[15,29,42],offheap:[38,43],offheap_buff:6,offheap_object:6,offici:[36,52],offset:[4,46],often:[6,11,12,23,28,29,30,41,42,43,49,50,52],ohc:6,ohcprovid:6,okai:23,old:[4,6,41,51],older:[6,14,26,34,41,43,52],oldest:[6,11],omit:[6,10,11,13,17,21],onc:[6,12,14,21,24,26,28,30,40,41,43,49,52],once:[4,6,11,21,26,28,30,41,42,46,49,51],one:[0,6,29,30,41,46,52],oneminutecachehitr:46,ongo:[41,51],onli:[0,6,9,11,12,13,14,17,18,19,21,28,29],onlin:52,only:[0,6,19,23,50,52],only_purge_repaired_tombston:41,onto:[4,41],open:[5,6,26,49,50],openfiledescriptorcount:46,openjdk:34,oper:[0,6,10,11,13,16,18,19,21,23],operat:[6,19,36,38],operatingsystem:46,opertaion:6,opportun:38,opt:14,optim:[6,11,12,30,41,43,51],option1_valu:19,option:[4,6,10],optional:[34,49],options:[9,16,19],oracl:[6,34,49],order:[0,4,6,9,10],ordering_claus:13,orderpreservingpartition:6,org:[6,14,20,23,26,29,30,34,41,42,46,49],organ:[4,26,32],origin:[24,28],orign:13,other:[0,4,6,10],other_rol:19,otherwis:[0,9,12,13,16,21],our:[5,6,8,24,26,28,41],ourselv:24,out:[6,12,23,26,28,41,46,49,50,51],outbound:6,outgoingbyt:46,outlin:49,output:[14,19,25,26,38,41,52],outsid:[11,20,21],over:[0,6,11,21,30,41,46,49,50,51],overal:14,overflow:17,overhead:[6,30,42,46,51],overidden:49,overlap:[0,41],overload:[6,14,30],overrid:[6,23,49,51],overridden:[6,11],overview:2,overwhelm:6,overwrit:[42,43],overwritten:46,own:[0,6,11,12,14,21,28,30,34,41,42,46,49],owner:21,ownership:41,pacif:21,packag:[26,30,31,33],packet:6,page:[6,21,26,28,29,30,43,46,52],paged_slice:46,pages:52,pagesize:52,pagetimeout:52,pai:23,pair:[6,11,19,21,41,49],parallel:41,paramet:6,paranoid:6,parenthesi:[11,52],parnew:43,pars:[6,12,40,52],parser:[9,10,40],part:[0,5,6,11,13,14,18,21,25,26,28,29,30,50,51,52],parti:[25,46],partial:4,particip:[0,6,20],particular:[11,12,13,14,17,19,21,30,43,46,49],particularli:[12,21,49],partit:[4,6,10],partition:4,partition_kei:11,partition_key:13,partli:13,pass:[25,28,31,52],password:[6,9,13,19],password_a:19,password_b:19,passwordauthent:[6,49],past:46,patch:[10,13,23,24,25,27],path:[5,6,16,25,34,38,41,42,43,46,49,52],patter:19,pattern:[6,19,21],paus:[6,30],paxo:[13,46,52],peer:[6,46],peerip:46,penalti:[6,13],pend:[41,46],pendingcompact:46,pendingflush:46,pendingrangecalcul:46,pendingtask:46,pendingtasksbytablenam:46,pennsylvania:21,peopl:[28,30],per:[0,4,6,10,11,13,23,24,28,30,38,40,41,42,46,49,52],percent:46,percentag:[6,46,50],percentil:46,percentrepair:46,perdiskmemtableflushwriter_0:46,perfect:14,perform:[6,11,13,19,21,24,25,27],period:[6,43,46,49],perman:[11,30,41,43],permiss:[6,12],permission:9,permissions:9,permit:[6,19,40,49],persist:[4,30,38,43,49],perspect:30,pet:21,pfs:6,pgp:34,pgrep:34,phantom:32,phase:[51,52],phi:6,phone:[13,21],physic:[0,6,11,30,43,50],pid:[30,34],piec:[12,41,46],pin:[6,50],ping:28,pkcs5pad:6,pkill:34,place:[5,6,16,20,23,24,28,40,41,46,49,52],placehold:[14,52],plai:[14,21],plain:4,plan:[11,24,28],platform:19,platter:[6,43],player:[14,21],playorm:32,pleas:[5,6,11,13,14,15,21,23,26,29,30],plu:[14,41,46],plug:6,pluggabl:[19,49],plugin:46,poe:21,point:[6,10,17,21,23,26],pointer:14,polici:[6,28,49],pool:[6,46],popul:[11,18],popular:[26,43],port:[6,26],portion:[43,52],posit:[4,10,11,21,38,46,51],possbili:6,possess:19,possibl:[6,10,11,13,14,17,19,21,25,28,29,30,38,41,43,46,49,51],post:13,post_at:13,posted_at:13,posted_bi:11,posted_month:11,posted_tim:11,potenti:[0,6,9,11,12,14,25,41,43,49,51],power:6,pr3z1den7:21,practic:[11,12,13,49],pre:[6,17,21,43,49],preced:30,precis:[10,17,21,41],precondit:46,predefin:11,predict:13,prefer:[0,6,11,12,21,23,28,49,50],preferipv4stack:26,prefix:[11,12,21],prepar:6,preparedstatementscount:46,preparedstatementsevict:46,preparedstatementsexecut:46,preparedstatementsratio:46,prepend:21,prerequisit:33,present:[12,13,18,46],preserv:[6,17,19],press:34,pressur:46,pretti:52,prevent:[6,29,40],previou:[6,10,11,21,41,51],previous:6,primari:10,primarili:[6,11],primary:[9,11,13,14,18,21,29,40,42],primary_kei:[11,18],print:52,prior:[6,13,19,21],prioriti:28,privat:[6,23,49,50],privileg:[19,34,49],probabilist:[38,42],probabl:[6,11,29,38,41],problem:[5,6,14,24,25,30,49],problemat:21,proc:[6,30],proce:[25,42,51],procedur:[13,49],process:[0,6,14,24,25,26,28,29,30,34,40,42,43,46,49,51,52],prod_clust:52,produc:[13,14,41],product:[6,28,30,43,50],profil:13,program:[14,29],progress:[23,24,28,38,45],project:23,promin:11,prompt:52,propag:[6,11,14,23,25,50],proper:[11,21,30,49],properli:[6,25],properti:[6,11,19],propertyfilesnitch:[6,50],proport:[6,13],proportion:6,propos:[6,46],protect:[6,43],protocol:[6,25,30,35,46,49,52],provid:[0,5,6,11,12,13,14,15,17,21,26,28,35,40,41,42,43,46,49,50,51,53],proxim:[6,50],ps1:49,ps22dhd:13,pull:[29,41,46],purg:43,purpos:[11,12,13,21,43,49],push:[24,28,46],put:[15,28,31,41,51],python:[14,28,29],quak:[14,21],qualifi:[6,11,14,28],qualiti:49,queri:[6,10,11,12,13,14],question:[8,19],queu:[6,46],queue:[6,46],quickli:[30,41],quill:32,quit:[41,52],quorum:[0,49,52],quot:[9,10,11,12,14,17,19,52],quotat:19,quoted_identifi:12,quoted_nam:11,race:24,rack1:6,rack:[0,6,49,50],rackdc:[6,50],rackinferringsnitch:[6,50],raid0:43,raid1:43,raid5:43,rain:12,rais:[12,30],raison:9,ram:[38,42,43],random:[11,14,30,51],randomli:[0,6,51],randompartition:[6,13,14],range_slice:46,rangelat:46,rangemov:51,rangeslic:46,rapid:43,rare:[10,38],raspberri:43,rate:[6,11,46,49,52],ratefile:52,rather:[13,30,41,43],ratio:[6,42,43,46],raw:[6,14],reach:[6,28,30,40,41],read:[0,6,11,13,21,23,25,29,30,33,36,38],read_repair:46,read_repair_ch:[0,6,11,41,50],read_request_timeout:30,readabl:11,readi:[28,49],readlat:46,readrepair:46,readrepairstag:46,readstag:46,readwrit:49,real:[8,11,23,30],realiz:41,realli:[6,29,31],reason:[0,6,13,14,15,30,31,34,41,43,49,51],rebuild:[6,38,41,42,46],receiv:[6,14,28,30,41,43],recent:[6,28,29,43],reclaim:41,recogn:[13,26,28],recommend:[6,11,21,30,43,49,51],recompact:41,recompress:42,reconnect:49,record:[11,13,21,28,41],recov:[6,30,41],recreat:52,recv:34,recycl:[6,46],redistribut:6,redo:28,reduc:[6,30,42],reduct:6,redund:[0,23,25,28,43],refactor:40,refer:[6,11,12,13,14,15,21,23,29,30,34,35,52],referenc:6,reflect:41,refresh:[6,49,52],regard:[11,13],regardless:[0,6,19,28],regener:38,regexp:12,region:[6,50],regist:21,registri:49,regress:[25,29],regular:[12,26,29,30,46,52],regularstatementsexecut:46,reject:[6,13,30,40,49],rel:[6,21,52],relat:[8,10,12,13,26,28,41,46],releas:[6,10],relev:[13,19,21,28,42,49],reli:[6,14,21,30,51],reliabl:41,reload:6,remain:[6,13,14,21,24,41,46,51],remaind:[17,42],remedi:41,remot:[0,24,26],remov:[4,6,10,11,12,13,14,15,17,21,25,30,36,40],removenod:51,renam:21,rename:[9,21],reorder:6,repair:[0,4,6,11,30,36],repeat:[12,34,42,49],replac:[6,14,19,21,25,30,36,41,45],replace:[9,14],replace_address_first_boot:51,replai:[0,21,43,46],replica:[0,6,11,13,30,41,46,50,51],replication_factor:[0,11,49],repo:[24,26],report_writ:19,reportfrequency:52,repositori:[5,8,26,28,29,34],repres:[6,10,17,19,21,30,41,46,49,50,52],represent:[10,17],request:[0,6,13,19,20,29,30,38,41,43,45],request_response:46,requestresponsestag:46,requestschedul:6,requesttyp:46,requir:[0,6,11,13,14,19,23,24,25,26,28,30,38,42,43,49],require_client_auth:6,require_endpoint_verif:6,resampl:6,reserv:6,reset:[6,13],reset_bootstrap_progress:51,resid:[6,13,30,46],resolut:[6,13,30],resolv:[24,30],resourc:[19,49],resp:14,respect:[6,10,14,34,50],respond:[0,6,12],respons:[0,6,19,30,46,51],ressourc:21,rest:[6,11,12,21,25,51],restart:[30,41,49,51],restor:[41,51,52],restrict:[10,11,13,18,19,21],result:[0,6,8,10,11,12],resurrect:41,retain:[30,41],rethrow:23,retri:[0,6,21,46],retriev:[11,13,19],returns:[9,14],reus:25,review:[11,23],revok:[19,49],revoke:9,revoke_permission_stat:12,revoke_role_stat:12,rewrit:[38,41,42],rewritten:43,rfc:[14,21],rich:21,right:[6,26],risk:11,rmem_max:6,rmi:[30,49],robin:6,rogu:14,role:[6,9,10,12,15],role_a:19,role_admin:19,role_b:19,role_c:19,role_nam:19,role_opt:19,role_or_permission_stat:12,roles:9,roll:[30,49],root:[6,24,28,34],rotat:6,roughli:6,round:[6,13,41,46],roundrobin:6,roundrobinschedul:6,rout:[6,50],row:[0,4,6,10,11,13,14,15,17,18,29,35,38,42,43,46,52],rowcach:46,rowcachehit:46,rowcachehitoutofrang:46,rowcachemiss:46,rowindexentri:46,rows_per_partit:11,rpc:[6,46],rpc_min:6,rubi:14,rule:[6,12,14,28,30],run:[5,6,12,21,24,26,28],runtim:6,runtimeexcept:23,safe:[6,14,21,41,49],safeguard:43,safeti:[6,41,51],said:[11,28,30],same:[0,5,6,11,12,13,14,15,17,18,19,21,24,26,28],sampl:[4,6,12,14,46,52],sampler:46,san:43,sandbox:[6,14],satisfi:[0,23,43,46,51],satur:[6,46],save:[6,13,30,31,38,42,43,51],saved_cach:6,sbin:30,scala:14,scale:[6,29,42],scan:[6,13,38,46],scenario:24,scene:30,schedul:6,schema:[0,9,11,14,17,46,52],schema_own:19,scope:[19,46,49],score:[6,14,21,50],script:[6,14,26,29],scrub:[38,41,42,46],search:28,second:[6,11,12,13,21,30,40,43,49,52],secondari:[10,11,12,13,15],secondary_index_stat:12,secondaryindexmanag:46,section:[2,5,7,10,11,12,13,15,19,21,30,33,34,35,41,46,49,51,53],secur:[6,14,15],see:[0,4,6,10,11,12,13,14,17,19,21,26,28],seed:6,seedprovid:6,seek:[6,43,46],seen:[6,11],segment:[4,6,40,46,52],select:[6,9,10,11,12],select_claus:13,select_stat:[12,18],self:25,selinux:30,semant:[10,13,14],semi:30,send:[8,30],sens:[6,10,13,15,30],sensic:14,sensit:[11,12,14,17],sensor:21,sent:[0,6,21,30,46],separ:[4,6,11,13,23,28,31,41,43,49,51,52],seq:6,sequenc:12,sequenti:[6,43],seren:13,seri:[11,41,52],serial:6,serializingcacheprovid:6,serv:[13,43,49],server:[6,12,13,21,26,29,30,43,46,49],servic:[6,26,34,49,51],session:[6,19,49],set:[0,6,9,10,11,12,13,14,17,18],set_liter:21,setcompactionthreshold:41,setcompactionthroughput:41,setint:14,setlong:14,setstr:14,setter:[19,23],sever:[4,13,19,41,49],sfunc:[9,14],sha:24,shadow:41,share:[11,13,26],sharedpool:52,sharp:32,shed:30,shell:[35,36],shift:21,ship:[35,49,52],shortcut:18,shorter:49,shorthand:52,should:[0,5,6,10,11,12,13,14,17,19,21,25,26,28,29,30,31,32,33,35,38,41,42,43,46,49,50,51,52],shouldn:11,show:19,shown:[12,52],shrink:6,shut:6,shutdown:[6,43],side:[11,13,17,21,49],sign:[13,21,30],signific:[6,26,28,29,43],silent:14,similar:[6,13,14,42,43],similarli:[0,10,17,23,43],simpl:[11,26,29,49],simple_classnam:29,simple_select:13,simplequerytest:29,simplereplicationstrategi:49,simpleseedprovid:6,simplesnitch:[6,50],simpli:[0,6,11,13,14,17,21,26,29,41,43,46,51],simul:29,simultan:[6,43,52],sinc:[6,11,13,14,21,26,30,34,41,46,51],singl:[0,6,10,11,12,13,14,17,18,19,21,23,28],singleton:25,situat:[6,29,41],size:[4,6,11,21,23,30,31,38,40],sizetieredcompactionstrategi:[11,41],skip:[6,13,51,52],skipcols:52,skiprows:52,sla:25,slash:12,slf4j:23,slightli:6,slow:[6,50],slower:[6,11,38],slowli:[6,21],small:[6,11,13,21,30,41,43],smaller:[6,30,41,43,52],smallest:[0,11,14,46],smallint:[9,10,11,14,17,21],smith:21,smoother:10,smoothli:6,snappi:6,snappycompressor:[11,42],snapshot:[6,46],snitch:[6,36,45],socket:[6,49],sole:11,solid:[6,43],some:[0,6,9,11,12,13,14,21,26,28,29,30,31,40,41,42,46,49,51,52],some_funct:14,some_nam:12,someaggreg:14,somearg:14,somefunct:14,someon:[24,41],sometim:[6,12,13],someudt:14,somewher:34,soon:49,sort:[4,11,13,21,41,43],sourc:[5,6,8,14],source_elaps:52,space:[6,23,30,40,41,43,46],span:[6,13,41],sparingli:13,spark:32,spec:[25,35,46,52],speci:[11,18],special:[12,13,29,30,41,46],specif:[6,9,11,12,13,19,21,26,28,30,32,40,41,46,49,52],specifc:46,specifi:[0,6,10,11,12,13,14,16,18,19,21,26,30,35,40,41,42,46,49,51,52],specul:[0,46],speculativeretri:46,speed:6,spent:46,spike:30,spin:[6,43],spindl:6,spirit:[6,50],split:[23,30,41,46,52],spread:[6,50],sql:[13,15],squar:12,squash:28,ssd:[6,16,43],ssl:[6,30,45],sss:17,sstabl:2,sstable_s:41,sstable_size_in_mb:41,sstableexpiredblock:41,sstablesperreadhistogram:46,sstablewrit:23,stabil:28,stabl:[34,52],stack:6,stage:28,stale:[6,49],stall:[6,51],stand:[6,29],standalon:29,standard:[6,21,30,34,46],start:[0,6,13],starter:28,startup:[6,20,26,30,41,46,51],state:[6,14,38,41,43,46,51],statement:[6,10,11],static0:11,static1:11,statist:[4,41,46,52],statu:[19,25,28,30,34,52],stcs:11,stdin:52,stdout:52,step:[6,26,31,49],still:[0,6,10,13,14,17,21,23,49,51,52],stop:[6,34,52],stop_commit:6,stop_paranoid:6,storag:2,storage:[9,11],storageservic:[6,23],store:[0,4,6,10,11,12,13,21],store_typ:6,straight:51,straightforward:40,strategi:[0,6,11],stream:[4,6],street:21,strength:6,strict:[10,41],stricter:11,strictli:[8,11,14],string:[6,10,11,12,13,14,16,17,19,20,21,46,52],strong:0,strongli:[6,11,12,49],strongly:6,structur:[4,6,19,25,38,46],stub:49,style:6,stype:[9,14],sub:[11,13,21,34,41],subdirectori:[6,20],subject:[6,14,49],submiss:28,submit:[28,29,36],subscrib:8,subscript:8,subsequ:[6,13,30,41,42],subset:[19,41,52],substitut:34,subsystem:49,subvert:41,succed:46,succesfulli:46,success:[0,52],sudden:6,sudo:[30,34],suffici:[6,43],suggest:[12,28,43],suit:[6,28,29,49],suitabl:[13,14,25,28],summari:[4,6,46],sun:[23,49],sunx509:6,supersed:10,superus:49,superuser:[9,19,49],suppli:[13,24],support:[0,6,10,11,12,13,14,15,16],suppos:13,sure:[6,8,23,26,28,29,30,31,34,41],surplu:30,surpris:0,surround:[17,52],suscept:14,suspect:[5,28],suspend:26,swamp:30,swap:6,symmetri:17,symptom:30,sync:[6,30,46],synchron:6,synonym:19,syntact:[11,19],syntax:[10,12,13,14,19,21,41,42],sysctl:30,sysintern:6,system:[6,11,14,19,29,30,31,35,41,43,46,49,52],system_auth:[6,49],tab:23,tabl:[0,4,6,10],table1:19,table:[9,10],table_nam:[11,13,16,19,20,41],table_opt:[11,18],tables:[19,52],tag:[21,25,28],take:[6,10,11,13,14,21,25,26,28,30,38,41,42,43,51],taken:[6,40,41,46],tar:34,tarbal:[31,33],target:[11,19,26,29,41],task:[26,28,46,52],tcp:[6,30],tcp_keepalive_intvl:30,tcp_keepalive_prob:30,tcp_keepalive_tim:30,tcp_nodelai:6,tcp_wmem:6,teach:[6,50],team:30,technetwork:6,technic:[11,15],technot:6,tee:34,tell:[6,13,25,30,31,46],temporari:49,temporarili:6,tenanc:6,tend:[6,30,43],tendenc:6,terabyt:42,term:6,termin:[12,52],ternari:23,test:[6,8,23,25],test_keyspac:49,testabl:[25,28],testbatchandlist:29,testmethod1:29,testmethod2:29,testsom:29,teststaticcompactt:29,text:[4,9,11,12,13,14,17,21,40,42,49],than:[0,6,11,12,13,14,15,18,21,23,28],thei:[6,9,10,11,12,13,14,15,18,19,21,23,25,28,29],them:[6,10,11,13,14,21,23,28,29,30,35,38,41,46,49],themselv:[13,19],theoret:11,therefor:[28,29,49],thi:[0,2,4,5,6,7,10,11,12,13,14,15,17,18,19,21,23,24,25,26,28,29,30,31,33,34,36,38,40,41,42,43,46,49,50,51,52,53,54],thing:[6,21,24,28,30,33,41],third:[25,46],thobb:52,those:[11,12,13,14,16,17,18,19,21,28,30,40,41,49,52],though:[6,10,12,21],thousand:52,thousandssep:52,thread:[6,43,46,49],threadpool:45,threadpoolnam:46,threadprioritypolici:26,three:[0,6,38,41,42,49,52],threshold:[4,6,40,43,50],thrift:[6,11,15,30,46],throttl:6,throttle_limit:6,through:[0,5,10,11,12,13,26,28,30,35,40,41,52],throughout:49,throughput:[0,6,41,42,43,46],throwabl:[25,29],thrown:21,thu:[6,10,11,12,13,18,21,30,46,50,51],thumb:[6,28],thusli:21,ticket:[5,24,25,28,29,40],tie:30,tighter:6,tightli:6,tild:52,time:[0,6,8,9,10,11,12,13],timelin:11,timeout:[6,21,30,46,52],timer:[6,46],timestamp:[4,9,10,11,13,14,15,17],timeunit:41,timeuuid:[9,10,11],timewindowcompactionstrategi:11,timezon:[17,52],tini:[6,41],tinyint:[9,10,11,14,17,21],tjake:23,tls:[6,45],tls_dhe_rsa_with_aes_128_cbc_sha:6,tls_dhe_rsa_with_aes_256_cbc_sha:6,tls_ecdhe_rsa_with_aes_128_cbc_sha:6,tls_ecdhe_rsa_with_aes_256_cbc_sha:6,tls_rsa_with_aes_128_cbc_sha:6,tls_rsa_with_aes_256_cbc_sha:6,toc:4,todai:12,todat:14,togeth:[11,13,14,41],toggl:49,tojson:15,toler:38,tom:13,tombston:[4,6,11,17,30],tombstone_compaction_interv:41,tombstone_threshold:41,tombstonescannedhistogram:46,ton:29,too:[6,11,12,14,21,25,41],tool:[6,12,28],top:[13,21,28],topic:52,topolog:[6,50],total:[6,13,40,41,46],totalblockedtask:46,totalcommitlogs:46,totalcompactionscomplet:46,totaldiskspaceus:46,totalhint:46,totalhintsinprogress:46,totallat:46,totimestamp:14,touch:[8,30,41],tough:29,tounixtimestamp:14,toward:11,trace:[6,46,52],track:[6,41,46],tracker:28,tradeoff:[0,6],tradit:[41,42],traffic:[6,50],trail:23,transact:[13,20,46],transfer:[6,30,49],transform:13,transit:[10,19],translat:6,transpar:[6,30],transport:[6,26,46],treat:[0,6,10,30,50],tree:[26,46],tri:41,trigger:[4,6,9,12,15],trigger_nam:20,trigger_stat:12,trip:13,trivial:49,troubleshoot:[25,36],truesnapshotss:46,truli:9,truncat:[6,11],truncate:[9,10],truncate_stat:12,trunk:[24,25,26,28],trust:49,trustor:6,truststor:[6,49],truststore_password:6,truststorepassword:49,tserverfactori:6,ttl:[4,6,9,10,11],tty:52,tune:[30,38,43],tupl:[6,10,12,13,14,15,17],tuple:[9,21],tuple_liter:[12,13],tuple_typ:21,tuplevalu:[10,14],turn:[0,6,28,30,49],twcs:[11,41],twice:[6,21],two:[0,6,11,12,13,14,17,26],txt:[4,14,24,25,28],type:[0,6],type_hint:12,typeasblob:14,typecodec:14,types:52,typic:[0,6,13,30,38,41,43,46,49,52],ubuntu:26,udf:[6,14],udf_stat:12,udfcontext:[10,14],udt:[14,17],udt_liter:12,udt_nam:21,udt_stat:12,udtarg:14,udtnam:14,udtvalu:[10,14],ulimit:30,unabl:[6,25],unaffect:21,unavail:[6,11,46,49,51],unblock:46,unbound:21,unchecked_tombstone_compact:41,uncom:[6,46,49],uncomment:6,uncommon:28,uncompress:[6,42,46],undelet:41,under:[6,21,23,29,46,49],underli:[6,18,41,49],understand:[6,28,30],unencrypt:[6,49],unexpectedli:21,unfinishedcommit:46,unflush:40,unfortun:29,uniqu:[11,14,21],unit:25,unixtimestampof:[10,14],unless:[6,11,13,16,18,19,21,23,40,49,50],unlik:[6,10,13],unlike:[13,21],unlimit:[6,30,52],unlogged:9,unnecessari:[25,51],unnecessarili:40,unpredict:13,unprepar:46,unquot:12,unquoted_identifi:12,unquoted_nam:11,unrel:28,unreleas:28,unsecur:49,unset:[6,10,13,17],unsign:21,unspecifi:6,unsubscrib:8,untar:34,until:[0,6,21,38,40,41,42,49,50],unuse:6,unusu:25,updat:[6,10,11,12,13,14,18,19,21,25,29],update:[9,10],update_paramet:13,update_stat:[12,13],upgrad:[6,41],upgradesst:[38,41,42],upload:28,upon:[6,21,38,42],upper:[12,17,41,49],upstream:28,url:24,usag:[4,6,11,21],usage:[40,46,52],use:[6,9],use_stat:12,usecas:41,useconcmarksweepgc:26,usecondcardmark:26,used:46,useecassandra:49,useparnewgc:26,user1:13,user2:13,user3:13,user4:13,user:[5,6,8,9,10,11,12,13],user_count:13,user_defined_typ:21,user_funct:19,user_nam:13,user_occup:13,user_opt:19,useraction:13,userid:[11,13,14],userindex:16,usernam:[6,13,14,49,52],users:9,usethreadprior:26,using:[9,11,13,16,20,21],usr:52,usual:[6,13,21,24,29,38,49],utc:[17,52],utd:11,utf8:[21,52],utf:52,util:[14,25,41,52],uuid:[9,10,11,12],val0:11,val1:11,val:14,valid:[6,10,11,12,13,14,17,21,30,41,42,46,49,52],validationexecutor:46,valu:[6,10,11,12,13,14,16,17,21,25,26,30,38,41,46,49,50,52],value1:13,value2:13,valueof:14,values:[9,11,13,14,16,17,21],varchar:[9,11,14,17,21],vari:[6,42],variabl:[6,10,12,17,21,26],variant:12,varieti:40,varint:[9,11,14,17,21],variou:[26,29,43,49],veri:[6,11,13,28,29,30,38,41,42,43],verifi:[28,30,32,34,42],version:[5,6],vertic:52,via:[6,8,10,19,25,30,31,41,42,43,46,49,50],view:[6,10,11,12,15],view_nam:18,viewlockacquiretim:46,viewmutationstag:46,viewpendingmut:46,viewreadtim:46,viewreplicasattempt:46,viewreplicassuccess:46,viewwrit:46,viewwritelat:46,virtual:[0,6,30,41,46,51],visibl:[11,19,23,38],vnode:[6,42],volum:[6,40,42],vulner:[6,49],wai:[4,6,11,12,15,17,18,21,24,26,29,30,41,42],wait:[0,6,11,28,30,46],waitingoncommit:46,waitingonfreememtablespac:46,waitingonsegmentalloc:46,want:[6,11,13,26,28,29,30,49,51],warn:[6,11,23],washington:21,wasn:10,wast:6,weaker:0,websit:34,weight:[6,46],welcom:8,well:[6,11,13,14,17,21,25,26,40,42,43,49,50],went:46,were:[6,9,10,19,25,26,41,46],what:[11,13,21,27],whatev:[10,13,30],whedon:13,when:[4,6,9,10,11,12,13,14,15,16,17,19,21,23,25,28,29],where:[0,4,6,9,10,11,12],where_claus:13,wherea:49,whether:[0,6,9,11,13,26,41,50,52],which:[0,4,5,6,10,11,12,13,14,15,16,18,19,20,21,28,29,30,31,34,35,38,40,41,42,43,46,49,50,51],whichev:[0,6],whitelist:49,who:[19,28,30],whole:[6,11,13,14,21,41],whose:[11,21],why:[25,28],wide:[4,40],width:12,wiki:[6,26],wildcard:[13,19],window:[0,6],winner:30,wip:[26,28],wipe:[30,51],wire:30,wise:11,wish:[6,41,46],within:[0,4,6,11,12,13,16,28,30,41,43,46,49],without:[6,11,12,13,14,19,21,24,26,28,29,30,40],wmem_max:6,won:[6,13,24],wont:41,word:[10,11,12,18,19,21,30],work:[6,10,11,14,15,17],worker:52,workload:[6,25,38,41,43],workspac:26,worktre:26,worri:[28,30],wors:[6,50],worst:[6,28],worthwhil:6,would:[6,12,13,14,17,19,26,28,29,36,41,42,43,49,50],wrap:50,write:[0,4,6,10,11,13,21,23,25,29,30,40,41,42,43,46,49,50,51,52],write_request_timeout:30,writelat:46,writer:[6,23],writetim:14,writetime:9,writetimeoutexcept:6,written:[4,6,20,30,38,41,42,46],wrong:6,wrte:46,www:[6,11,34],xlarg:43,xml:31,xmn220m:26,xms1024m:26,xmx1024m:26,xmx:43,xss256k:26,xvf:34,yaml:[6,14,31,34],year:13,yet:[11,46],yield:[13,51],you:[5,6,8,10,11,12,13,14,16,17,18,20,21,23,24,26,27],younger:14,your:[0,5,6,8,10,11,12,23,26,28,29,30,31,34,36,41,43,49,50,52],yourself:[24,29],yyyi:21,yyyy:17,z_0:[11,16,18],zero:[6,10,30,46,50],zip:21,zipcod:21,zone:[6,21,50],zzzzz:28},titles:["Dynamo","Guarantees","Architecture","Overview","Storage Engine","Reporting Bugs and Contributing","Cassandra Configuration File","Configuring Cassandra","Contact us","Appendices","Changes","Data Definition","Definitions","Data Manipulation","Functions","The Cassandra Query Language (CQL)","Secondary Indexes","JSON Support","Materialized Views","Security","Triggers","Data Types","Data Modeling","Code Style","How-to Commit","Review Checklist","Building and IDE Integration","Cassandra Development","Contributing Code Changes","Testing","Frequently Asked Questions","Configuring Cassandra","Client drivers","Getting Started","Installing Cassandra","Inserting and querying","Welcome to Apache Cassandra&#8217;s documentation!","Backups","Bloom Filters","Bulk Loading","Change Data Capture","Compaction","Compression","Hardware Choices","Hints","Operating Cassandra","Monitoring","Read repair","Repair","Security","Snitch","Adding, replacing, moving and removing nodes","cqlsh: the CQL shell","Cassandra Tools","Nodetool","Troubleshooting"],titleterms:{"class":50,"delete":13,"function":[13,14,17],"import":23,"long":29,"new":30,"static":11,"switch":41,access:49,add:30,adding:51,address:30,advanc:42,after:51,aggreg:14,aggregat:14,aggregate:14,alias:13,all:[19,30],alloc:51,allocate_tokens_for_keyspac:6,allow:13,alter:[11,18,19],altere:21,ani:30,apach:36,appendic:9,appendix:9,architectur:2,asked:30,assign:51,auth:49,authent:[6,19,49],author:[6,49],auto_snapshot:6,automat:19,avg:14,backup:37,batch:[13,30],batch_size_fail_threshold_in_kb:6,batch_size_warn_threshold_in_kb:6,batchlog_replay_throttle_in_kb:6,befor:28,benefit:42,binari:34,blob:[14,30],bloom:38,boilerpl:23,bootstrap:[30,41,51],branch:28,broadcast_address:6,broadcast_rpc_address:6,buffer_pool_use_heap_if_exhaust:6,bufferpool:46,bug:[5,28],build:26,bulk:[30,39],cach:[11,46,49],call:30,can:30,captur:40,capture:52,cas_contention_timeout_in_m:6,cassandra:[6,7,15,17,26,27,29,30,31,34,36,40,45,49,53],cast:14,cdc:40,cdc_enabl:6,cdc_free_space_check_interval_m:6,cdc_raw_directori:6,cdc_total_space_in_mb:6,chang:[10,28,30,31,38,40,41],characterist:21,checklist:25,choic:43,choos:28,claus:13,cleanup:51,clear:52,client:[32,35,46,49],client_encryption_opt:6,clojur:32,cloud:43,cluster:[11,30],cluster_nam:6,code:[23,28],collect:[21,41],column:11,column_index_cache_size_in_kb:6,column_index_size_in_kb:6,command:[26,41,52],comment:12,commit:24,commit_failure_polici:6,commitlog:[4,46],commitlog_compress:6,commitlog_directori:6,commitlog_segment_size_in_mb:6,commitlog_sync:6,commitlog_sync_batch_window_in_m:6,commitlog_sync_period_in_m:6,commitlog_total_space_in_mb:6,commitlogseg:40,common:[11,41,43],compact:[11,41,46],compaction_large_partition_warning_threshold_mb:6,compaction_throughput_mb_per_sec:6,compactionstrategi:41,compat:[11,52],compress:[11,42],concern:41,concurrent_compactor:6,concurrent_counter_writ:6,concurrent_materialized_view_writ:6,concurrent_read:6,concurrent_writ:6,condition:19,configur:[6,7,31,40,42],connect:30,consider:11,consist:0,consistency:52,constant:12,contact:8,contribut:[5,28],control:19,convent:[12,23],convers:14,copy:52,count:14,counter:[13,21],counter_cache_keys_to_sav:6,counter_cache_save_period:6,counter_cache_size_in_mb:6,counter_write_request_timeout_in_m:6,cpu:43,cql:[9,11,15,46,52],cqlsh:[35,52],cqlshrc:52,creat:[19,21,28],create:[11,14,16,18,19,20],credenti:19,credentials_update_interval_in_m:6,credentials_validity_in_m:6,cross_node_timeout:6,cstar_perf:29,custom:21,cython:52,data:[11,13,17,19,21,22,30,40,41,51],data_file_directori:6,databas:19,date:21,dead:51,debian:34,debug:26,defin:[14,21],definit:[11,12],defragment:41,delet:[30,41],depend:52,describe:52,detail:41,detect:0,develop:27,directori:[31,41],disabl:40,disk:[30,43],disk_failure_polici:6,disk_optimization_strategi:6,document:36,doe:30,driver:[32,35],drop:[11,14,16,18,19,20,21,30],droppedmessag:46,dtest:29,dynam:50,dynamic_snitch_badness_threshold:6,dynamic_snitch_reset_interval_in_m:6,dynamic_snitch_update_interval_in_m:6,dynamo:0,each:30,eclips:26,email:30,enabl:[40,49],enable_scripted_user_defined_funct:6,enable_user_defined_funct:6,encode:17,encryption:49,endpoint_snitch:6,engine:4,entri:30,environ:31,erlang:32,error:30,even:30,exception:23,exist:30,exit:52,expand:52,expir:41,factor:30,fail:[30,51],failur:[0,30],file:[6,23,34],file_cache_size_in_mb:6,filedescriptorratio:46,filter:[13,38],fix:28,format:23,frequent:30,from:[26,30,34,52],fromjson:17,fulli:41,further:40,garbag:41,garbagecollector:46,gc_grace_second:41,gc_log_threshold_in_m:6,gc_warn_threshold_in_m:6,gener:23,get:33,give:30,gossip:0,grace:41,grant:19,group:13,guarante:1,handl:23,hang:51,happen:30,hardwar:43,haskel:32,heap:30,help:52,hint:44,hinted_handoff_disabled_datacent:6,hinted_handoff_en:6,hinted_handoff_throttle_in_kb:6,hintedhandoff:46,hints_compress:6,hints_directori:6,hints_flush_period_in_m:6,host:[30,52],how:[24,30],ide:[23,26],idea:26,identifi:12,impact:42,incremental_backup:6,index:[16,46],index_summary_capacity_in_mb:6,index_summary_resize_interval_in_minut:6,initial_token:6,insert:[13,17,35],install:34,installat:34,integrat:[26,49],intellij:26,inter:49,inter_dc_stream_throughput_outbound_megabits_per_sec:6,inter_dc_tcp_nodelai:6,intern:19,internal:49,internode_authent:6,internode_compress:6,internode_recv_buff_size_in_byt:6,internode_send_buff_size_in_byt:6,irc:8,java:[30,32],jconsol:30,jmx:[30,41,46,49],join:30,json:17,jvm:46,kei:[11,16,18],key_cache_keys_to_sav:6,key_cache_save_period:6,key_cache_size_in_mb:6,keyspac:[30,46],keyspace:11,keyword:[9,12],lang:30,languag:15,larg:30,lcs:41,level:[0,41],limit:13,line:[26,52],list:[8,19,21,30],listen:30,listen_address:[6,30],listen_interfac:6,listen_interface_prefer_ipv6:6,listen_on_broadcast_address:6,liter:21,live:30,load:[30,39],locat:31,log:[30,31,41],login:52,lot:30,made:30,mail:8,main:31,major:41,manipul:13,manual:51,map:[16,21,30],materi:18,materialized:18,max:[14,30],max_hint_window_in_m:6,max_hints_delivery_thread:6,max_hints_file_size_in_mb:6,max_value_size_in_mb:6,maxtimeuuid:14,mean:30,memori:[30,43,46],memorypool:46,memtabl:4,memtable_allocation_typ:6,memtable_cleanup_threshold:6,memtable_flush_writ:6,memtable_heap_space_in_mb:6,memtable_offheap_space_in_mb:6,merg:41,messag:30,method:30,metric:46,min:14,minor:41,mintimeuuid:14,model:22,monitor:[46,51],more:[30,41],move:51,movement:51,multilin:23,nativ:[14,21],native_transport_max_concurrent_connect:6,native_transport_max_concurrent_connections_per_ip:6,native_transport_max_frame_size_in_mb:6,native_transport_max_thread:6,native_transport_port:6,native_transport_port_ssl:6,net:32,networktopologystrategi:0,newer:26,node:[30,49,51],nodej:32,nodetool:[30,41,54],noteworthi:21,now:14,num_token:6,onli:30,oper:30,operat:[41,42,45],option:[11,18,41,52],optional:52,order:11,ordere:13,other:[11,30],outofmemoryerror:30,overview:[3,40],packag:34,paging:52,paramet:[13,40,41],partit:11,partition:6,password:49,patch:28,perform:29,permiss:19,permission:19,permissions:19,permissions_update_interval_in_m:6,permissions_validity_in_m:6,phi_convict_threshold:6,php:32,pick:0,point:30,port:30,prepar:12,prepared_statements_cache_size_mb:6,prerequisit:34,primari:[11,18],progress:51,project:26,properti:31,python:32,pytz:52,queri:[15,35],question:30,rang:[0,51],range_request_timeout_in_m:6,read:[40,47],read_request_timeout_in_m:6,refus:30,releas:28,remot:30,remov:[41,51],repair:[41,47,48],replac:51,replic:[0,30],report:[5,30,46],request:46,request_schedul:6,request_scheduler_id:6,request_scheduler_opt:6,request_timeout_in_m:6,reserv:9,result:13,resum:51,revers:11,review:25,revoke:19,rhel:30,right:28,ring:[0,30],role:[19,49],role_manag:6,roles:19,roles_update_interval_in_m:6,roles_validity_in_m:6,row_cache_class_nam:6,row_cache_keys_to_sav:6,row_cache_save_period:6,row_cache_size_in_mb:6,rpc_address:6,rpc_interfac:6,rpc_interface_prefer_ipv6:6,rpc_keepal:6,rpc_max_thread:6,rpc_min_thread:6,rpc_port:6,rpc_recv_buff_size_in_byt:6,rpc_send_buff_size_in_byt:6,rpc_server_typ:6,rubi:32,run:29,runtim:31,rust:32,safety:6,sai:30,same:30,saved_caches_directori:6,scala:32,scalar:14,secondari:16,secur:[19,49],see:30,seed:30,seed_provid:6,select:[13,17,18],selector:13,serial:52,server_encryption_opt:6,session:52,set:[19,21,26,30],setup:26,share:52,shell:52,show:[30,52],signatur:14,simplestrategi:0,singl:[30,41],size:41,slow_query_log_timeout_in_m:6,snapshot_before_compact:6,snitch:50,sourc:26,source:52,special:52,speed:30,ssl:49,ssl_storage_port:6,sstabl:[4,41,46],sstable_preemptive_open_interval_in_mb:6,stai:30,standard:49,start:[26,28,33],start_native_transport:6,start_rpc:6,starv:41,statement:[12,18,23],stcs:41,storag:[4,46],storage_port:6,store:30,strategi:41,stream:[30,46,51],stream_throughput_outbound_megabits_per_sec:6,streaming_socket_timeout_in_m:6,stress:29,style:23,sum:14,support:17,tabl:[11,40,46],table:11,tarbal:34,term:12,test:[26,29],than:30,thei:30,though:30,threadpool:46,thresholds:6,thrift_framed_transport_size_in_mb:6,thrift_prepared_statements_cache_size_mb:6,tick:28,tier:41,time:[14,21,41],timestamp:[21,30],timeuuid:14,timewindowcompactionstrategi:41,tls:49,tock:28,todo:[0,1,3,4,11,22,37,39,44,47,48,54],tojson:17,token:[0,14,51],tombston:41,tombstone_failure_threshold:6,tombstone_warn_threshold:6,tool:[29,53],top:30,tracetype_query_ttl:6,tracetype_repair_ttl:6,tracing:52,transparent_data_encryption_opt:6,trickle_fsync:6,trickle_fsync_interval_in_kb:6,trigger:[20,41],troubleshoot:55,truncate:11,truncate_request_timeout_in_m:6,ttl:[13,41],tunabl:0,tupl:21,two:30,type:[9,11,17,21,41,46],udt:21,unabl:30,unit:[26,29],unlogged:13,unlogged_batch_across_partitions_warn_threshold:6,unrepair:41,unsubscrib:30,updat:30,update:13,usag:30,use:[11,42],user:[14,19,21],users:19,using:26,uuid:14,variabl:31,version:[10,52],view:18,warn:40,welcom:36,what:[28,30],when:[30,41],where:13,whitespac:23,why:[30,41],window:41,windows_timer_interv:6,without:41,work:[21,28],write_request_timeout_in_m:6,writetime:13,yaml:40,you:28}})
\ No newline at end of file
diff --git a/src/doc/3.7/tools/cqlsh.html b/src/doc/3.7/tools/cqlsh.html
index a7f6721..e554e8c 100644
--- a/src/doc/3.7/tools/cqlsh.html
+++ b/src/doc/3.7/tools/cqlsh.html
@@ -75,8 +75,9 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/tools/index.html b/src/doc/3.7/tools/index.html
index 3f58694..734456c 100644
--- a/src/doc/3.7/tools/index.html
+++ b/src/doc/3.7/tools/index.html
@@ -65,8 +65,9 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/tools/nodetool.html b/src/doc/3.7/tools/nodetool.html
index d462c38..23738b0 100644
--- a/src/doc/3.7/tools/nodetool.html
+++ b/src/doc/3.7/tools/nodetool.html
@@ -68,8 +68,9 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
diff --git a/src/doc/3.7/troubleshooting/index.html b/src/doc/3.7/troubleshooting/index.html
index 52c3096..611bfd9 100644
--- a/src/doc/3.7/troubleshooting/index.html
+++ b/src/doc/3.7/troubleshooting/index.html
@@ -9,7 +9,7 @@
 doc-title: "Troubleshooting"
 doc-header-links: '
   <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/>
-      <link rel="next" title="Frequently Asked Questions" href="../faq/index.html"/>
+      <link rel="next" title="Cassandra Development" href="../development/index.html"/>
       <link rel="prev" title="Nodetool" href="../tools/nodetool.html"/>
 '
 doc-search-path: "../search.html"
@@ -61,8 +61,9 @@
 <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
-<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting bugs and contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
 </ul>
 
@@ -85,7 +86,7 @@
           
           <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
             
-            <a href="../faq/index.html" class="btn btn-default pull-right " role="button" title="Frequently Asked Questions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            <a href="../development/index.html" class="btn btn-default pull-right " role="button" title="Cassandra Development" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
             
             
             <a href="../tools/nodetool.html" class="btn btn-default" role="button" title="Nodetool" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
diff --git a/src/doc/latest b/src/doc/latest
index 7c7a975..548d713 120000
--- a/src/doc/latest
+++ b/src/doc/latest
@@ -1 +1 @@
-3.10
\ No newline at end of file
+3.7
\ No newline at end of file