You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2023/01/05 19:48:24 UTC

svn commit: r1906412 [13/35] - in /helix/site-content: ./ 0.9.9-docs/ 0.9.9-docs/css/ 0.9.9-docs/images/ 0.9.9-docs/js/ 0.9.9-docs/recipes/ 0.9.9-docs/releasenotes/ 1.0.2-docs/ 1.0.2-docs/css/ 1.0.2-docs/images/ 1.0.2-docs/js/ 1.0.2-docs/recipes/ 1.0.2...

Modified: helix/site-content/1.0.2-docs/design_crushed.html
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/design_crushed.html?rev=1906412&r1=1906411&r2=1906412&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/design_crushed.html (original)
+++ helix/site-content/1.0.2-docs/design_crushed.html Thu Jan  5 19:48:20 2023
@@ -1,13 +1,8 @@
 
 <!DOCTYPE html>
-
-
-
-
-
-
 <!--
- Generated by Apache Maven Doxia at 2022-10-19  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-15
+ Rendered using Maven Reflow Skin 1.0.0 (http://andriusvelykis.github.com/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -18,84 +13,61 @@
 		<meta name="description" content="" />
 		<meta http-equiv="content-language" content="en" />
 
-		<link href="./css/bootstrap.min.css" rel="stylesheet" />
-		<link href="./css/bootstrap-responsive.min.css" rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css" rel="stylesheet" />
 		<link href="./css/docs.css" rel="stylesheet" />
 		<link href="./css/reflow-skin.css" rel="stylesheet" />
-
-
+		
+		
 		<link href="./css/lightbox.css" rel="stylesheet" />
-
+		
 		<link href="./css/site.css" rel="stylesheet" />
 		<link href="./css/print.css" rel="stylesheet" media="print" />
-
+		
 		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
 		<!--[if lt IE 9]>
-			<script src="./js/html5.js"></script>
+			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
 		<![endif]-->
+		
+	</head>
 
+	<body class="page-$config.fileId project-$config.projectId" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
-
-
-
-    
-<!-- Matomo -->
-<script>
-    var _paq = window._paq = window._paq || [];
-                        _paq.push(['disableCookies']);
-                                    _paq.push(['trackPageView']);
-                                    _paq.push(['enableLinkTracking']);
-                    
-    (function() {
-        var u="https://analytics.apache.org";
-        _paq.push(['setTrackerUrl', u+'/matomo.php']);
-        _paq.push(['setSiteId', '15']);
-        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-    })();
-</script>
-<!-- End Matomo Code -->
-    	</head>
-
-	<body class="page-design_crushed project-102-docs" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
-
-    
 		<div class="navbar navbar-fixed-top">
 			<div class="navbar-inner">
 				<div class="container">
-					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 					</a>
-					<a class="brand" href="..">Apache Helix</a>
-					<div class="nav-collapse collapse" id="top-nav-collapse">
+					<div class="nav-collapse">
 						<ul class="nav pull-right">
-							<li ><a href="index.html" title="Helix 1.0.2">Helix 1.0.2</a></li>
-							<li class="dropdown">
+							<li class="active"><a href="" title="Helix 1.0.2">Helix 1.0.2 </a></li>
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Helix <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="download.html" title="Download">Download</a></li>
-									<li ><a href="Building.html" title="Building">Building</a></li>
-									<li ><a href="releasenotes/release-1.0.2.html" title="Release Notes">Release Notes</a></li>
+									<li class="active"><a href="" title="Download">Download </a></li>
+									<li class="active"><a href="" title="Building">Building </a></li>
+									<li class="active"><a href="" title="Release Notes">Release Notes </a></li>
 								</ul>
 							</li>
-							<li class="dropdown">
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hands-On <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="Quickstart.html" title="Quick Start">Quick Start</a></li>
-									<li ><a href="Tutorial.html" title="Tutorial">Tutorial</a></li>
-									<li ><a href="../javadocs/1.0.2" title="Javadocs">Javadocs</a></li>
+									<li class="active"><a href="" title="Quick Start">Quick Start </a></li>
+									<li class="active"><a href="" title="Tutorial">Tutorial </a></li>
+									<li class="active"><a href="" title="Javadocs">Javadocs </a></li>
 								</ul>
 							</li>
-							<li class="dropdown">
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Recipes <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a></li>
-									<li ><a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a></li>
-									<li ><a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a></li>
-									<li ><a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a></li>
-									<li ><a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a></li>
+									<li class="active"><a href="" title="Distributed lock manager">Distributed lock manager </a></li>
+									<li class="active"><a href="" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a></li>
+									<li class="active"><a href="" title="Rsync replicated file store">Rsync replicated file store </a></li>
+									<li class="active"><a href="" title="Service discovery">Service discovery </a></li>
+									<li class="active"><a href="" title="Distributed task DAG execution">Distributed task DAG execution </a></li>
 								</ul>
 							</li>
 						</ul>
@@ -103,36 +75,30 @@
 				</div>
 			</div>
 		</div>
-
+		
 	<div class="container">
-
+	
 	<!-- Masthead
 	================================================== -->
-
-	<header>
-	<div class="jumbotron subhead">
+	<header class="jumbotron subhead">
 		<div class="row" id="banner">
 			<div class="span12">
 				<div class="pull-left">
-					<a href="../" id="bannerLeft"><img src="../images/helix-logo.jpg" alt='"''"' /></a>
-					<p class="lead">A cluster management framework for partitioned and replicated distributed resources</p>
+					<a href="" id="bannerLeft"><img src="" alt='"''"' /></a>
 				</div>
 				<div class="pull-right">
-					<a href="https://www.apache.org/" id="bannerRight"><img src="../images/feather_small.gif" alt='"''"' /></a>
+					<a href="http://www.apache.org/" id="bannerRight"><img src="" alt='"''"' /></a>
 				</div>
 			</div>
 		</div>
-	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="http://helix.apache.org/" title="Apache Helix" class="externalLink">Apache Helix</a></li>
-				<li class="divider">/</li>
-				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
+				<li><a href="" title="Apache Helix">Apache Helix </a></li>
 				<li class="divider">/</li>
-				<li><a href="./" title="Release 1.0.2">Release 1.0.2</a></li>
+				<li><a href="" title="Release 1.0.2">Release 1.0.2 </a></li>
 				<li class="divider">/</li>
 				<li>CrushED (Crush-based rebalancer with Even Distribution)</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-10-19</li>
+				<li class="publishDate version-date pull-right">Last Published: 2022-04-15</li>
 			</ul>
 		</div>
 	</header>
@@ -141,230 +107,94 @@
 	<div class="row">
 		<div class="span12">
 			<div class="body-content">
-<div class="page-header">
- <h1>CrushED (Crush-based rebalancer with Even Distribution)</h1>
-</div> 
-<section> 
- <h2 id="Overview">Overview</h2> 
- <p>Helix provides AutoRebalanceStrategy which is based on card dealing strategy. This strategy takes the current mapping as an input, and computes new mappings only for the partitions that need to be moved. This provides minimum partition movement, but the mapping is not deterministic, and moreover, fault-zone aware mapping (i.e. rack-aware partitioning) is not possible.</p> 
- <p>CRUSH-based partitioning scheme was implemented to provide fault-zone aware mapping and deterministic partition assignment. CrushRebalanceStrategy (and MultiRoundCrushRebalanceStrategy)&nbsp;algorithm uses pseudo-random partition placement to ensure consistent partition distribution. As the number of placed items (i.e partitions) approaches infinity, the distribution will be perfectly uniform. However, with a small number of placed items, especially for resources (i.e. databases) with a small number of partitions, the placement algorithm may result in fairly uneven partition distribution.</p> 
- <p>We want to provide a new rebalance strategy that provides a deterministic and fault-zone aware mapping while providing even partition distribution in all cases. In this document, we propose a hybrid algorithm that uses CRUSH, card dealing strategy, and consistent hashing to ensure both&nbsp;even distribution and minimal partition movement (while cluster topology remains the same). We call it CrushED (Crush w/ Even Distribution). Compared to CRUSH, CrushED results in a much more uniform distribution and minimal partition movements as long as topology remains the same, at the cost of additional run time computation.</p> 
-</section> 
-<section> 
- <h2 id="Design">Design</h2> 
- <p>In addition to what we already achieved in CrushRebalanceStrategy, we have 2 high level goals :</p> 
- <ol style="list-style-type: decimal"> 
-  <li>Even distribution.</li> 
-  <li>Minimize partition movements when instances go up/down.</li> 
- </ol> 
- <p>CrushRebalanceStrategy has very small movement count, but the distribution is not optimal. MultiRoundCrushRebalanceStrategy was designed to solve this problem by running CRUSH multiple times on partition assignments that contribute to uneven mapping. However, due to potentially high number of rounds, computation cost is high, we observed significantly more partition movements when the cluster topology is changed.</p> 
- <p>Since we have a good base strategy, CrushRebalanceStrategy, we built CrushEDRebalanceStrategy on top of it. Sample mapping of both strategies are as following. Note that blue parts remain unchanged before and after.</p> 
- <p>Before (CRUSH)</p> 
- <p><img src="images/design/crushed/before-using-crush.png" alt="Before (CRUSH)"></p> 
- <p>After (new strategy)</p> 
- <p><img src="images/design/crushed/after-using-crushed.png" alt="After (new strategy)"></p> 
- <p>Since the problem is NP-hard. We are not expecting the best assignment. A greedy algorithm works good enough.<br> After we tried different designs, we found it's hard to achieve both goals (even distribution and fewer movements) using a single strategy. So we decided to apply a hybrid algorithm that finishes the work step by step.</p> 
- <p><b>Step 1, run CRUSH to get a base assignment.</b><br> The base assignment usually contains a certain number of uneven partitions(i.e. extra partitions above perfect distribution), so we need the following steps to re-distribute them.</p> 
- <p><b>Step 2, run a card dealing algorithm on the uneven parts.</b><br> Assign extra partitions to under-loaded nodes, using card dealing strategy. This algorithm is conceptually simple. The result ensures that all partitions are assigned to instances with minimum difference. When gauranteeing fault-zone safe assignment, our greedy algorithm may not be able to calculate possible results because of fault-zone conflict.</p> 
- <p>Example of assignments after step 2,</p> 
- <p><img src="images/design/crushed/example-cluster-partition-dist.png" alt="Example"></p> 
- <p><b>Step 3, Shuffle partitions' preference lists.</b><br> State assignments (i.e. Master, Slave, Online, Offline, etc) are made according to preflist, ordered node. When using randomly ordered lists, State assignment is also random, and it may result in uneven state distribution. To resolve this issue, CrushED assigns scores to nodes as it computes pref list, to give all nodes equal chances in appearing at the top of the pref list. This operation results in a much more even state distribution.</p> 
- <p>Example of master distribution before step 3,</p> 
- <p><img src="images/design/crushed/example-cluster-master-dist.png" alt="Example"></p> 
- <p>Example of master distribution after step 3,</p> 
- <p><img src="images/design/crushed/example-cluster-master-dist-after.png" alt="Example"></p> 
- <p><b>Step 4, re-calculate the assignment for the partitions on temporarily disabled nodes using a consistent hashing algorithm.</b><br> Consistent hashing ensures minimize partition movement.<br> Note that the first 3 steps are using full node list, regardless of disabled or offline nodes. So the assignment will be stable even the algorithm contains random factors such hashCode. Then step 4 ensures all the disabled nodes are handled correctly without causing huge partition movements.</p> 
- <p>Pseudocode of above algorithm is as follows :</p> 
- <p><b>Pseudo Code</b></p> 
- <div class="source"> 
-  <pre><code>// Round 1: Calculate mapping using the base strategy.
-// Note to use all nodes for minimizing the influence of live node changes.
-origPartitionMap = getBaseRebalanceStrategy().computePartitionAssignment(allNodes, clusterData);
-
-// Transform current assignment to instance-&gt;partitions map, and get total partitions
-nodeToPartitionMap = convertMap(origPartitionMap);
-
-// Round 2: Rebalance mapping using card dealing algorithm.
-Topology allNodeTopo = new Topology(allNodes, clusterData);
-cardDealer.computeMapping(allNodeTopo, nodeToPartitionMap);
-
-// Since states are assigned according to preference list order, shuffle preference list for even states distribution.
-shufflePreferenceList(nodeToPartitionMap);
-
-// Round 3: Re-mapping the partitions on non-live nodes using consistent hashing for reducing movement.
-// Consistent hashing ensures minimum movements when nodes are disabled unexpectedly.
-if (!liveNodes.containsAll(allNodes)) {
-  Topology liveNodeTopo = new Topology(liveNodes, clusterData);
-  hashPlacement.computeMapping(liveNodeTopo, nodeToPartitionMap);
-}
-
-if (!nodeToPartitionMap.isEmpty()) {
-  // Round 2 and 3 is done successfully
-  return convertMap(nodeToPartitionMap);
-} else {
-  return getBaseRebalanceStrategy().computePartitionAssignment(liveNodes, clusterData);
-}
-</code></pre> 
- </div> 
- <section> 
-  <h3 id="Maximum_uneven_partition_assignment_using_CrushED">Maximum uneven partition assignment using CrushED</h3> 
-  <p>Helix cluster typically manages 1 or more resources (i.e. databases). For each resource, CrushED makes the best effort to ensure the partition count difference is at most 1 across all the instances. Assuming such assignment is possible considering fault-zone configuration, the worst partition distribution happens when all one off partitions are located in one node. So N resources in a cluster can theoretically have their extra partitions in one node, so the node will have N additional partitions in total. Thus, the maximum difference between the most heavily loaded node and the least is <b>the number of resources</b> in a cluster.</p> 
- </section> 
-</section> 
-<section> 
- <h2 id="Experiment">Experiment</h2> 
- <p>We tested CrushED by simulating real production cluster topology data. And we tested multiple scenarios:</p> 
- <ul> 
-  <li>Distribution based on cluster topology.</li> 
-  <li>Disabling hosts to simulate hosts down.</li> 
-  <li>Adding hosts to simulate expansion.</li> 
-  <li>Rolling upgrade.</li> 
- </ul> 
- <p>All results show that CrushED generates more uniform global distribution compared with CRUSH.<br> Moreover, partition movements in most scenarios are minimized. When topology changes (i.e. cluster expansion), there can be significantly more partition movements, but we can control the impact by using State Transition Throttling feature.</p> 
- <section> 
-  <h3 id="Partition_Distribution">Partition Distribution</h3> 
-  <p>Following charts demonstrate the worst cases (min load vs. max load) and STDEVs of partition/master distributions from some sample clusters data.<br> If we measure the improvement by STDEV, CrushED improves the partition distribution evenness by 87% on average compared with CRUSH. And for state assignment (i.e. Mastership assignment) the evenness improvement is 68% on average.</p> 
-  <p><img src="images/design/crushed/cursh-partition-dist.png" alt="Example"><img src="images/design/crushed/crushed-partition-dist.png" alt="Example"></p> 
-  <p><img src="images/design/crushed/cursh-master-dist.png" alt="Example"><img src="images/design/crushed/crushed-master-dist.png" alt="Example"></p> 
- </section> 
- <section> 
-  <h3 id="Disabling_Nodes">Disabling Nodes</h3> 
-  <p>When nodes are offline or disabled, CrushED will re-assign the partitions to other live nodes. The algorithm move only the necessary partitions.<br> We simulated disabling nodes, and measured partition movement changes and mastership changes. We also used the expected movement (the partitions/masters count on the disabled nodes) as a baseline to measure extra movements.</p> 
-  <p>The results show that movement is highly correlated to the number of disabled nodes, and extra movements are minor (in most cases 0 movements).</p> 
-  <p>Note that <b>Rate</b> in this document is <b>the changed number / total partition or master count</b>.</p> 
-  <p><img src="images/design/crushed/node-down-partition-move.png" alt="Example"><img src="images/design/crushed/node-down-master-move.png" alt="Example"></p> 
- </section> 
- <section> 
-  <h3 id="Rolling_upgrade">Rolling upgrade</h3> 
-  <p>Rolling upgrade is different from disabling nodes. Since nodes are reset one by one, in this test we assume the difference could be 2 nodes in maximum (for example, upgrading Node A then upgrading Node B).<br> In this case, movements are still minimized. Even in the worst case scenario, extra partition movements and mastership changes are still close to 0%.</p> 
-  <p>Note that in real production clusters, we can completely avoid partition movements while doing rolling upgrade, by enabling Delayed Rebalancing.</p> 
- </section> 
- <section> 
-  <h3 id="Adding_Nodes">Adding Nodes</h3> 
-  <p>Adding nodes (i.e. cluster expansion) changes topology. CrushED uses card dealing strategy to provide even distribution, so when topology changes, there are a lot of additional partition movements than CRUSH.</p> 
-  <p>Note that the extra change rate is not correlated with the number of additional nodes. So our recommendation is finishing expansion in one operation so as to do only one partition shuffling.</p> 
- </section> 
- <section> 
-  <h3 id="Algorithm_Performance">Algorithm Performance</h3> 
-  <p>We compared CrushED with CRUSH algorithms using different instance numbers. The tests are executed multiple times and we recorded median computation time.<br> CrushED does not cost much additional computation time for regular rebalancing. In some of the worst cases, 30% more runtime was observed, compared with CRUSH, but it is quicker than MultiRoundCRUSH.</p> 
-  <p>However, when there are down nodes since CrushED needs to run an additional consistent hashing based re-distribution, the computation time will be much longer. In some cases, we saw more than 3 times compared to CRUSH.</p> 
-  <p>With some <b>performance improvements</b>, such as using cache to avoid duplicate calculation, we achieved to greatly reduce CrushED's running time. According to our experiment, it is now close to MultiRound CRUSH.</p> 
-  <p><img src="images/design/crushed/performance.png" alt="Example"></p> 
- </section> 
-</section> 
-<section> 
- <h2 id="Conclusion">Conclusion</h2> 
- <p>CrushED achieves more uniform distribution compared with CRUSH at the cost of higher rebalance computation and more partition movement when the cluster topology changes.</p> 
-</section> 
-<section> 
- <h2 id="Simple_User_Guide">Simple User Guide</h2> 
- <ol style="list-style-type: decimal"> 
-  <li>Ensure the resouce is using FULL_AUTO mode.</li> 
-  <li>Set rebalance strategy to be “org.apache.helix.controller.rebalancer.strategy.CrushEdRebalanceStrategy”.</li> 
-  <li>Expect more partition movement on topology changes when using the new strategy.</li> 
- </ol> 
- <p><b>IdeaState SimpleFields Example</b></p> 
- <div class="source"> 
-  <pre><code>HELIX_ENABLED : "true"
-IDEAL\_STATE\_MODE : "AUTO_REBALANCE"
-REBALANCE\_MODE : "FULL\_AUTO"
-REBALANCE_STRATEGY : "org.apache.helix.controller.rebalancer.strategy.CrushRebalanceStrategy"
-MIN\_ACTIVE\_REPLICAS : "0"
-NUM_PARTITIONS : "64"
-REBALANCER\_CLASS\_NAME : "org.apache.helix.controller.rebalancer.DelayedAutoRebalancer"
-REPLICAS : "1"
-STATE\_MODEL\_DEF_REF : "LeaderStandby"
-</code></pre> 
- </div> 
-</section>
+$bodyWithHeader
 			</div>
 		</div>
 	</div>
 	</div>
 
 	</div><!-- /container -->
-
+	
 	<!-- Footer
 	================================================== -->
 	<footer class="well">
 		<div class="container">
 			<div class="row">
-				<div class="span3 bottom-nav">
+				<div class="span9 bottom-nav">
 					<ul class="nav nav-list">
 						<li class="nav-header">Get Helix</li>
-						<li >
-							<a href="download.html" title="Download">Download</a>
+						<li class="active">
+							<a href="#" title="Download">Download </a>
 						</li>
-						<li >
-							<a href="Building.html" title="Building">Building</a>
+						<li class="active">
+							<a href="#" title="Building">Building </a>
 						</li>
-						<li >
-							<a href="releasenotes/release-1.0.2.html" title="Release Notes">Release Notes</a>
+						<li class="active">
+							<a href="#" title="Release Notes">Release Notes </a>
 						</li>
-					</ul>
-				</div>
-				<div class="span3 bottom-nav">
-					<ul class="nav nav-list">
 						<li class="nav-header">Hands-On</li>
-						<li >
-							<a href="Quickstart.html" title="Quick Start">Quick Start</a>
+						<li class="active">
+							<a href="#" title="Quick Start">Quick Start </a>
 						</li>
-						<li >
-							<a href="Tutorial.html" title="Tutorial">Tutorial</a>
+						<li class="active">
+							<a href="#" title="Tutorial">Tutorial </a>
 						</li>
-						<li >
-							<a href="../javadocs/1.0.2" title="Javadocs">Javadocs</a>
+						<li class="active">
+							<a href="#" title="Javadocs">Javadocs </a>
 						</li>
-					</ul>
-				</div>
-				<div class="span3 bottom-nav">
-					<ul class="nav nav-list">
 						<li class="nav-header">Recipes</li>
-						<li >
-							<a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a>
+						<li class="active">
+							<a href="#" title="Distributed lock manager">Distributed lock manager </a>
 						</li>
-						<li >
-							<a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a>
+						<li class="active">
+							<a href="#" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a>
 						</li>
-						<li >
-							<a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a>
+						<li class="active">
+							<a href="#" title="Rsync replicated file store">Rsync replicated file store </a>
 						</li>
-						<li >
-							<a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a>
+						<li class="active">
+							<a href="#" title="Service discovery">Service discovery </a>
 						</li>
-						<li >
-							<a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a>
+						<li class="active">
+							<a href="#" title="Distributed task DAG execution">Distributed task DAG execution </a>
 						</li>
 					</ul>
 				</div>
 			</div>
 		</div>
 	</footer>
-
+		
 	<div class="container subfooter">
 		<div class="row">
 			<div class="span12">
 				<p class="pull-right"><a href="#">Back to top</a></p>
 				<p class="copyright">Copyright &copy;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</p>
-				<p><a href="https://github.com/olamy/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy" target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
-		<div class="row span16"><div>Apache Helix, Apache, the Apache feather logo, and the Apache Helix project logos are trademarks of The Apache Software Foundation.
-        All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
-        <a href="https://helix.apache.org/1.0.2-docs/privacy-policy.html">Privacy Policy</a>
-      </div>
-			</div>
+				<p><a href="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+					</div>
 		</div>
 	</div>
 
 	<!-- Le javascript
 	================================================== -->
 	<!-- Placed at the end of the document so the pages load faster -->
-	<script src="./js/jquery.min.js"></script>
 
-	<script src="./js/bootstrap.min.js"></script>
-	<script src="./js/lightbox.min.js"></script>
-	<script src="./js/reflow-scroll.js"></script>
+	<!-- Fallback jQuery loading from Google CDN:
+	     http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go -->
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
+	<script type="text/javascript">
+		if (typeof jQuery == 'undefined')
+		{
+			document.write(unescape("%3Cscript src='./js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E"));
+		}
+	</script>
+	
+	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.js"></script>
+	<script src="./js/jquery.smooth-scroll.min.js"></script>
+	<!-- back button support for smooth scroll -->
+	<script src="./js/jquery.ba-bbq.min.js"></script>
 
 	<script src="./js/reflow-skin.js"></script>
-
+	
 	</body>
 </html>
\ No newline at end of file

Modified: helix/site-content/1.0.2-docs/distribution-management.html
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/distribution-management.html?rev=1906412&r1=1906411&r2=1906412&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/distribution-management.html (original)
+++ helix/site-content/1.0.2-docs/distribution-management.html Thu Jan  5 19:48:20 2023
@@ -7,7 +7,7 @@
 
 
 <!--
- Generated by Apache Maven Doxia at 2022-10-19  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-05-12  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -132,7 +132,7 @@
 				<li><a href="./" title="Release 1.0.2">Release 1.0.2</a></li>
 				<li class="divider">/</li>
 				<li>Project Distribution Management</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-10-19</li>
+				<li class="publishDate version-date pull-right">Last Published: 2022-05-12</li>
 			</ul>
 		</div>
 	</header>

Modified: helix/site-content/1.0.2-docs/download.html
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/download.html?rev=1906412&r1=1906411&r2=1906412&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/download.html (original)
+++ helix/site-content/1.0.2-docs/download.html Thu Jan  5 19:48:20 2023
@@ -1,13 +1,8 @@
 
 <!DOCTYPE html>
-
-
-
-
-
-
 <!--
- Generated by Apache Maven Doxia at 2022-10-19  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-15
+ Rendered using Maven Reflow Skin 1.0.0 (http://andriusvelykis.github.com/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -19,84 +14,61 @@
 		<meta name="author" content="Apache Helix Documentation Team" />
 		<meta http-equiv="content-language" content="en" />
 
-		<link href="./css/bootstrap.min.css" rel="stylesheet" />
-		<link href="./css/bootstrap-responsive.min.css" rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css" rel="stylesheet" />
 		<link href="./css/docs.css" rel="stylesheet" />
 		<link href="./css/reflow-skin.css" rel="stylesheet" />
-
-
+		
+		
 		<link href="./css/lightbox.css" rel="stylesheet" />
-
+		
 		<link href="./css/site.css" rel="stylesheet" />
 		<link href="./css/print.css" rel="stylesheet" media="print" />
-
+		
 		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
 		<!--[if lt IE 9]>
-			<script src="./js/html5.js"></script>
+			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
 		<![endif]-->
+		
+	</head>
 
+	<body class="page-$config.fileId project-$config.projectId" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
-
-
-
-    
-<!-- Matomo -->
-<script>
-    var _paq = window._paq = window._paq || [];
-                        _paq.push(['disableCookies']);
-                                    _paq.push(['trackPageView']);
-                                    _paq.push(['enableLinkTracking']);
-                    
-    (function() {
-        var u="https://analytics.apache.org";
-        _paq.push(['setTrackerUrl', u+'/matomo.php']);
-        _paq.push(['setSiteId', '15']);
-        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-    })();
-</script>
-<!-- End Matomo Code -->
-    	</head>
-
-	<body class="page-download project-102-docs" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
-
-    
 		<div class="navbar navbar-fixed-top">
 			<div class="navbar-inner">
 				<div class="container">
-					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 					</a>
-					<a class="brand" href="..">Apache Helix</a>
-					<div class="nav-collapse collapse" id="top-nav-collapse">
+					<div class="nav-collapse">
 						<ul class="nav pull-right">
-							<li ><a href="index.html" title="Helix 1.0.2">Helix 1.0.2</a></li>
+							<li class="active"><a href="" title="Helix 1.0.2">Helix 1.0.2 </a></li>
 							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Helix <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Download">Download</a></li>
-									<li ><a href="Building.html" title="Building">Building</a></li>
-									<li ><a href="releasenotes/release-1.0.2.html" title="Release Notes">Release Notes</a></li>
+									<li class="active"><a href="" title="Download">Download </a></li>
+									<li class="active"><a href="" title="Building">Building </a></li>
+									<li class="active"><a href="" title="Release Notes">Release Notes </a></li>
 								</ul>
 							</li>
-							<li class="dropdown">
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hands-On <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="Quickstart.html" title="Quick Start">Quick Start</a></li>
-									<li ><a href="Tutorial.html" title="Tutorial">Tutorial</a></li>
-									<li ><a href="../javadocs/1.0.2" title="Javadocs">Javadocs</a></li>
+									<li class="active"><a href="" title="Quick Start">Quick Start </a></li>
+									<li class="active"><a href="" title="Tutorial">Tutorial </a></li>
+									<li class="active"><a href="" title="Javadocs">Javadocs </a></li>
 								</ul>
 							</li>
-							<li class="dropdown">
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Recipes <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a></li>
-									<li ><a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a></li>
-									<li ><a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a></li>
-									<li ><a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a></li>
-									<li ><a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a></li>
+									<li class="active"><a href="" title="Distributed lock manager">Distributed lock manager </a></li>
+									<li class="active"><a href="" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a></li>
+									<li class="active"><a href="" title="Rsync replicated file store">Rsync replicated file store </a></li>
+									<li class="active"><a href="" title="Service discovery">Service discovery </a></li>
+									<li class="active"><a href="" title="Distributed task DAG execution">Distributed task DAG execution </a></li>
 								</ul>
 							</li>
 						</ul>
@@ -104,36 +76,30 @@
 				</div>
 			</div>
 		</div>
-
+		
 	<div class="container">
-
+	
 	<!-- Masthead
 	================================================== -->
-
-	<header>
-	<div class="jumbotron subhead">
+	<header class="jumbotron subhead">
 		<div class="row" id="banner">
 			<div class="span12">
 				<div class="pull-left">
-					<a href="../" id="bannerLeft"><img src="../images/helix-logo.jpg" alt='"''"' /></a>
-					<p class="lead">A cluster management framework for partitioned and replicated distributed resources</p>
+					<a href="" id="bannerLeft"><img src="" alt='"''"' /></a>
 				</div>
 				<div class="pull-right">
-					<a href="https://www.apache.org/" id="bannerRight"><img src="../images/feather_small.gif" alt='"''"' /></a>
+					<a href="http://www.apache.org/" id="bannerRight"><img src="" alt='"''"' /></a>
 				</div>
 			</div>
 		</div>
-	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="http://helix.apache.org/" title="Apache Helix" class="externalLink">Apache Helix</a></li>
+				<li><a href="" title="Apache Helix">Apache Helix </a></li>
 				<li class="divider">/</li>
-				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
-				<li class="divider">/</li>
-				<li><a href="./" title="Release 1.0.2">Release 1.0.2</a></li>
+				<li><a href="" title="Release 1.0.2">Release 1.0.2 </a></li>
 				<li class="divider">/</li>
 				<li>Apache Helix Downloads</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-10-19</li>
+				<li class="publishDate version-date pull-right">Last Published: 2022-04-15</li>
 			</ul>
 		</div>
 	</header>
@@ -142,205 +108,94 @@
 	<div class="row">
 		<div class="span12">
 			<div class="body-content">
-<div class="toc_container"> 
- <ul class="toc"> 
-  <li><a href="#Introduction">Introduction</a></li> 
-  <li><a href="#Release">Release</a> 
-   <ul> 
-    <li><a href="#Mirror">Mirror</a></li> 
-    <li><a href="#a1.0.2_Sources">1.0.2 Sources</a></li> 
-    <li><a href="#a1.0.2_Binaries">1.0.2 Binaries</a></li> 
-   </ul></li> 
-  <li><a href="#Verifying_Releases">Verifying Releases</a></li> 
- </ul> 
-</div> 
-<section> 
- <div class="page-header">
-  <h2 id="Introduction">Introduction</h2>
- </div> 
- <p>Apache Helix artifacts are distributed in source and binary form under the terms of the <a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. See the included <code>LICENSE</code> and <code>NOTICE</code> files included in each artifact for additional license information. </p> 
- <p>Use the links below to download a source distribution of Apache Helix. It is good practice to <a href="#Verifying_Releases">verify the integrity</a> of the distribution files.</p> 
-</section> 
-<section> 
- <h2 id="Release">Release</h2> 
- <p>Release date: 06/10/2019 </p> 
- <p><a href="releasenotes/release-1.0.2.html">1.0.2 Release notes</a></p> <a name="mirror"></a> 
- <section> 
-  <h3 id="Mirror">Mirror</h3> 
-  <p> [if-any logo] <a href="[link]"> <img src="[logo]" align="right" border="0" alt="logo"> </a> [end] The currently selected mirror is <b>[preferred]</b>. If you encounter a problem with this mirror, please select another mirror. If all mirrors are failing, there are <i>backup</i> mirrors (at the end of the mirrors list) that should be available. </p> 
-  <form action="[location]" method="get" id="SelectMirror" class="form-inline">
-    Other mirrors: <select name="Preferred" class="input-xlarge"> [if-any http] [for http] <option value="[http]">[http]</option> [end] [end] [if-any ftp] [for ftp] <option value="[ftp]">[ftp]</option> [end] [end] [if-any backup] [for backup] <option value="[backup]">[backup] (backup)</option> [end] [end] </select> 
-   <input type="submit" value="Change" class="btn"> 
-  </form> 
-  <p> You may also consult the <a class="externalLink" href="http://www.apache.org/mirrors/">complete list of mirrors.</a> </p> 
- </section> 
- <section> 
-  <h3 id="a1.0.2_Sources">1.0.2 Sources</h3> 
-  <table border="0" class="bodyTable table table-striped table-hover"> 
-   <thead> 
-    <tr class="a"> 
-     <th>Artifact</th> 
-     <th>Signatures</th> 
-     <th>Hashes</th> 
-    </tr> 
-   </thead> 
-   <tbody> 
-    <tr class="b"> 
-     <td align="left"> <a href="[preferred]helix/1.0.2/src/helix-1.0.2-src.zip">helix-1.0.2-src.zip</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/src/helix-1.0.2-src.zip.asc">asc</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/src/helix-1.0.2-src.zip.md5">md5</a> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/src/helix-1.0.2-src.zip.sha1">sha1</a> </td> 
-    </tr> 
-   </tbody> 
-  </table> 
- </section> 
- <section> 
-  <h3 id="a1.0.2_Binaries">1.0.2 Binaries</h3> 
-  <table border="0" class="bodyTable table table-striped table-hover"> 
-   <thead> 
-    <tr class="a"> 
-     <th>Artifact</th> 
-     <th>Signatures</th> 
-     <th>Hashes</th> 
-    </tr> 
-   </thead> 
-   <tbody> 
-    <tr class="b"> 
-     <td align="left"> <a href="[preferred]helix/1.0.2/binaries/helix-core-1.0.2-pkg.tar">helix-core-1.0.2-pkg.tar</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-core-1.0.2-pkg.tar.asc">asc</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-core-1.0.2-pkg.tar.md5">md5</a> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-core-1.0.2-pkg.tar.sha1">sha1</a> </td> 
-    </tr> 
-    <tr class="a"> 
-     <td align="left"> <a href="[preferred]helix/1.0.2/binaries/helix-admin-webapp-1.0.2-pkg.tar">helix-admin-webapp-1.0.2-pkg.tar</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-admin-webapp-1.0.2-pkg.tar.asc">asc</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-admin-webapp-1.0.2-pkg.tar.md5">md5</a> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-admin-webapp-1.0.2-pkg.tar.sha1">sha1</a> </td> 
-    </tr> 
-    <tr class="b"> 
-     <td align="left"> <a href="[preferred]helix/1.0.2/binaries/helix-agent-1.0.2-pkg.tar">helix-agent-1.0.2-pkg.tar</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-agent-1.0.2-pkg.tar.asc">asc</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-agent-1.0.2-pkg.tar.md5">md5</a> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-agent-1.0.2-pkg.tar.sha1">sha1</a> </td> 
-    </tr> 
-    <tr class="a"> 
-     <td align="left"> <a href="[preferred]helix/1.0.2/binaries/helix-rest-1.0.2-pkg.tar">helix-rest-1.0.2-pkg.tar</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-rest-1.0.2-pkg.tar.asc">asc</a> </td> 
-     <td> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-rest-1.0.2-pkg.tar.md5">md5</a> <a class="externalLink" href="http://www.apache.org/dist/helix/1.0.2/binaries/helix-rest-1.0.2-pkg.tar.sha1">sha1</a> </td> 
-    </tr> 
-   </tbody> 
-  </table> 
- </section> 
-</section> 
-<section> 
- <h2 id="Verifying_Releases">Verifying Releases</h2> 
- <p>It is essential that you verify the integrity of the downloaded file using the PGP signature (<code>.asc</code> file) or a hash (<code>.md5</code> or <code>.sha1</code> file). Please read <a class="externalLink" href="http://www.apache.org/info/verification.html">Verifying Apache Software Foundation Releases</a> for more information on why you should verify our releases.</p> 
- <p>The PGP signature can be verified using <a class="externalLink" href="http://www.pgpi.org/">PGP</a> or <a class="externalLink" href="http://www.gnupg.org/">GPG</a>. First download the <a class="externalLink" href="http://www.apache.org/dist/helix/KEYS">KEYS</a> as well as the <code>*.asc</code> signature files for the relevant distribution. Make sure you get these files from the main distribution site, rather than from a mirror. Then verify the signatures using one of the following sets of commands: </p> 
- <div class="source"> 
-  <pre>% pgpk -a KEYS
-% pgpv downloaded_file.asc</pre> 
- </div> or 
- <br> 
- <div class="source"> 
-  <pre>% pgp -ka KEYS
-% pgp downloaded_file.asc</pre> 
- </div> or 
- <br> 
- <div class="source"> 
-  <pre>% gpg --import KEYS
-% gpg --verify downloaded_file.asc</pre> 
- </div> 
- <p>Alternatively, you can verify the MD5 signature on the files. A Unix/Linux program called <code>md5</code> or <code>md5sum</code> is included in most distributions. It is also available as part of <a class="externalLink" href="http://www.gnu.org/software/textutils/textutils.html">GNU Textutils</a>. Windows users can get binary md5 programs from these (and likely other) places: </p> 
- <ul> 
-  <li> <a class="externalLink" href="http://www.md5summer.org/">http://www.md5summer.org/</a> </li> 
-  <li> <a class="externalLink" href="http://www.fourmilab.ch/md5/">http://www.fourmilab.ch/md5/</a> </li> 
-  <li> <a class="externalLink" href="http://www.pc-tools.net/win32/md5sums/">http://www.pc-tools.net/win32/md5sums/</a> </li> 
- </ul> 
-</section>
+$bodyWithHeader
 			</div>
 		</div>
 	</div>
 	</div>
 
 	</div><!-- /container -->
-
+	
 	<!-- Footer
 	================================================== -->
 	<footer class="well">
 		<div class="container">
 			<div class="row">
-				<div class="span3 bottom-nav">
+				<div class="span9 bottom-nav">
 					<ul class="nav nav-list">
 						<li class="nav-header">Get Helix</li>
 						<li class="active">
-							<a href="#" title="Download">Download</a>
+							<a href="#" title="Download">Download </a>
 						</li>
-						<li >
-							<a href="Building.html" title="Building">Building</a>
+						<li class="active">
+							<a href="#" title="Building">Building </a>
 						</li>
-						<li >
-							<a href="releasenotes/release-1.0.2.html" title="Release Notes">Release Notes</a>
+						<li class="active">
+							<a href="#" title="Release Notes">Release Notes </a>
 						</li>
-					</ul>
-				</div>
-				<div class="span3 bottom-nav">
-					<ul class="nav nav-list">
 						<li class="nav-header">Hands-On</li>
-						<li >
-							<a href="Quickstart.html" title="Quick Start">Quick Start</a>
+						<li class="active">
+							<a href="#" title="Quick Start">Quick Start </a>
 						</li>
-						<li >
-							<a href="Tutorial.html" title="Tutorial">Tutorial</a>
+						<li class="active">
+							<a href="#" title="Tutorial">Tutorial </a>
 						</li>
-						<li >
-							<a href="../javadocs/1.0.2" title="Javadocs">Javadocs</a>
+						<li class="active">
+							<a href="#" title="Javadocs">Javadocs </a>
 						</li>
-					</ul>
-				</div>
-				<div class="span3 bottom-nav">
-					<ul class="nav nav-list">
 						<li class="nav-header">Recipes</li>
-						<li >
-							<a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a>
+						<li class="active">
+							<a href="#" title="Distributed lock manager">Distributed lock manager </a>
 						</li>
-						<li >
-							<a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a>
+						<li class="active">
+							<a href="#" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a>
 						</li>
-						<li >
-							<a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a>
+						<li class="active">
+							<a href="#" title="Rsync replicated file store">Rsync replicated file store </a>
 						</li>
-						<li >
-							<a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a>
+						<li class="active">
+							<a href="#" title="Service discovery">Service discovery </a>
 						</li>
-						<li >
-							<a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a>
+						<li class="active">
+							<a href="#" title="Distributed task DAG execution">Distributed task DAG execution </a>
 						</li>
 					</ul>
 				</div>
 			</div>
 		</div>
 	</footer>
-
+		
 	<div class="container subfooter">
 		<div class="row">
 			<div class="span12">
 				<p class="pull-right"><a href="#">Back to top</a></p>
 				<p class="copyright">Copyright &copy;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</p>
-				<p><a href="https://github.com/olamy/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy" target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
-		<div class="row span16"><div>Apache Helix, Apache, the Apache feather logo, and the Apache Helix project logos are trademarks of The Apache Software Foundation.
-        All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
-        <a href="https://helix.apache.org/1.0.2-docs/privacy-policy.html">Privacy Policy</a>
-      </div>
-			</div>
+				<p><a href="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+					</div>
 		</div>
 	</div>
 
 	<!-- Le javascript
 	================================================== -->
 	<!-- Placed at the end of the document so the pages load faster -->
-	<script src="./js/jquery.min.js"></script>
 
-	<script src="./js/bootstrap.min.js"></script>
-	<script src="./js/lightbox.min.js"></script>
-	<script src="./js/reflow-scroll.js"></script>
+	<!-- Fallback jQuery loading from Google CDN:
+	     http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go -->
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
+	<script type="text/javascript">
+		if (typeof jQuery == 'undefined')
+		{
+			document.write(unescape("%3Cscript src='./js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E"));
+		}
+	</script>
+	
+	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.js"></script>
+	<script src="./js/jquery.smooth-scroll.min.js"></script>
+	<!-- back button support for smooth scroll -->
+	<script src="./js/jquery.ba-bbq.min.js"></script>
 
 	<script src="./js/reflow-skin.js"></script>
-
+	
 	</body>
 </html>
\ No newline at end of file

Added: helix/site-content/1.0.2-docs/images/close.png
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/images/close.png?rev=1906412&view=auto
==============================================================================
Binary file - no diff available.

Propchange: helix/site-content/1.0.2-docs/images/close.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: helix/site-content/1.0.2-docs/images/loading.gif
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/images/loading.gif?rev=1906412&view=auto
==============================================================================
Binary file - no diff available.

Propchange: helix/site-content/1.0.2-docs/images/loading.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: helix/site-content/1.0.2-docs/images/next.png
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/images/next.png?rev=1906412&view=auto
==============================================================================
Binary file - no diff available.

Propchange: helix/site-content/1.0.2-docs/images/next.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: helix/site-content/1.0.2-docs/images/prev.png
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/images/prev.png?rev=1906412&view=auto
==============================================================================
Binary file - no diff available.

Propchange: helix/site-content/1.0.2-docs/images/prev.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Modified: helix/site-content/1.0.2-docs/index.html
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/index.html?rev=1906412&r1=1906411&r2=1906412&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/index.html (original)
+++ helix/site-content/1.0.2-docs/index.html Thu Jan  5 19:48:20 2023
@@ -1,13 +1,8 @@
 
 <!DOCTYPE html>
-
-
-
-
-
-
 <!--
- Generated by Apache Maven Doxia at 2022-10-19  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-15
+ Rendered using Maven Reflow Skin 1.0.0 (http://andriusvelykis.github.com/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -18,84 +13,61 @@
 		<meta name="description" content="" />
 		<meta http-equiv="content-language" content="en" />
 
-		<link href="./css/bootstrap.min.css" rel="stylesheet" />
-		<link href="./css/bootstrap-responsive.min.css" rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css" rel="stylesheet" />
 		<link href="./css/docs.css" rel="stylesheet" />
 		<link href="./css/reflow-skin.css" rel="stylesheet" />
-
-
+		
+		
 		<link href="./css/lightbox.css" rel="stylesheet" />
-
+		
 		<link href="./css/site.css" rel="stylesheet" />
 		<link href="./css/print.css" rel="stylesheet" media="print" />
-
+		
 		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
 		<!--[if lt IE 9]>
-			<script src="./js/html5.js"></script>
+			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
 		<![endif]-->
+		
+	</head>
 
+	<body class="page-$config.fileId project-$config.projectId" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
-
-
-
-    
-<!-- Matomo -->
-<script>
-    var _paq = window._paq = window._paq || [];
-                        _paq.push(['disableCookies']);
-                                    _paq.push(['trackPageView']);
-                                    _paq.push(['enableLinkTracking']);
-                    
-    (function() {
-        var u="https://analytics.apache.org";
-        _paq.push(['setTrackerUrl', u+'/matomo.php']);
-        _paq.push(['setSiteId', '15']);
-        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-    })();
-</script>
-<!-- End Matomo Code -->
-    	</head>
-
-	<body class="page-index project-102-docs" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
-
-    
 		<div class="navbar navbar-fixed-top">
 			<div class="navbar-inner">
 				<div class="container">
-					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 					</a>
-					<a class="brand" href="..">Apache Helix</a>
-					<div class="nav-collapse collapse" id="top-nav-collapse">
+					<div class="nav-collapse">
 						<ul class="nav pull-right">
-							<li class="active"><a href="" title="Helix 1.0.2">Helix 1.0.2</a></li>
-							<li class="dropdown">
+							<li class="active"><a href="" title="Helix 1.0.2">Helix 1.0.2 </a></li>
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Helix <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="download.html" title="Download">Download</a></li>
-									<li ><a href="Building.html" title="Building">Building</a></li>
-									<li ><a href="releasenotes/release-1.0.2.html" title="Release Notes">Release Notes</a></li>
+									<li class="active"><a href="" title="Download">Download </a></li>
+									<li class="active"><a href="" title="Building">Building </a></li>
+									<li class="active"><a href="" title="Release Notes">Release Notes </a></li>
 								</ul>
 							</li>
-							<li class="dropdown">
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hands-On <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="Quickstart.html" title="Quick Start">Quick Start</a></li>
-									<li ><a href="Tutorial.html" title="Tutorial">Tutorial</a></li>
-									<li ><a href="../javadocs/1.0.2" title="Javadocs">Javadocs</a></li>
+									<li class="active"><a href="" title="Quick Start">Quick Start </a></li>
+									<li class="active"><a href="" title="Tutorial">Tutorial </a></li>
+									<li class="active"><a href="" title="Javadocs">Javadocs </a></li>
 								</ul>
 							</li>
-							<li class="dropdown">
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Recipes <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li ><a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a></li>
-									<li ><a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a></li>
-									<li ><a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a></li>
-									<li ><a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a></li>
-									<li ><a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a></li>
+									<li class="active"><a href="" title="Distributed lock manager">Distributed lock manager </a></li>
+									<li class="active"><a href="" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a></li>
+									<li class="active"><a href="" title="Rsync replicated file store">Rsync replicated file store </a></li>
+									<li class="active"><a href="" title="Service discovery">Service discovery </a></li>
+									<li class="active"><a href="" title="Distributed task DAG execution">Distributed task DAG execution </a></li>
 								</ul>
 							</li>
 						</ul>
@@ -103,166 +75,126 @@
 				</div>
 			</div>
 		</div>
-
+		
 	<div class="container">
-
+	
 	<!-- Masthead
 	================================================== -->
-
-	<header>
-	<div class="jumbotron subhead">
+	<header class="jumbotron subhead">
 		<div class="row" id="banner">
 			<div class="span12">
 				<div class="pull-left">
-					<a href="../" id="bannerLeft"><img src="../images/helix-logo.jpg" alt='"''"' /></a>
-					<p class="lead">A cluster management framework for partitioned and replicated distributed resources</p>
+					<a href="" id="bannerLeft"><img src="" alt='"''"' /></a>
 				</div>
 				<div class="pull-right">
-					<a href="https://www.apache.org/" id="bannerRight"><img src="../images/feather_small.gif" alt='"''"' /></a>
+					<a href="http://www.apache.org/" id="bannerRight"><img src="" alt='"''"' /></a>
 				</div>
 			</div>
 		</div>
-	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="http://helix.apache.org/" title="Apache Helix" class="externalLink">Apache Helix</a></li>
-				<li class="divider">/</li>
-				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
+				<li><a href="" title="Apache Helix">Apache Helix </a></li>
 				<li class="divider">/</li>
-				<li><a href="./" title="Release 1.0.2">Release 1.0.2</a></li>
+				<li><a href="" title="Release 1.0.2">Release 1.0.2 </a></li>
 				<li class="divider">/</li>
 				<li>Helix 1.0.2 Documentation</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-10-19</li>
+				<li class="publishDate version-date pull-right">Last Published: 2022-04-15</li>
 			</ul>
 		</div>
 	</header>
 
 	<div class="main-body">
-	<div class="row columns columns3">
-		<div class="span4">
-			<h3 id="Get_Helix">Get Helix</h3>
-<p><a href="./download.html">Download</a></p>
-<p><a href="./Building.html">Building</a></p>
-<p><a href="./releasenotes/release-1.0.2.html">Release Notes</a></p>
-<section>     
-</section>
-		</div>
-		<div class="span4">
-			<h3 id="Hands-On">Hands-On</h3>
-<p><a href="./Quickstart.html">Quickstart</a></p>
-<p><a href="./Tutorial.html">Tutorial</a></p>
-<p><a class="externalLink" href="http://helix.apache.org/javadocs/1.0.2/index.html">Javadocs</a></p>
-<section>       
-</section>
-		</div>
-		<div class="span4">
-			<h3 id="Recipes">Recipes</h3>
-<p><a href="./recipes/lock_manager.html">Distributed lock manager</a></p>
-<p><a href="./recipes/rabbitmq_consumer_group.html">Rabbit MQ consumer group</a></p>
-<p><a href="./recipes/rsync_replicated_file_store.html">Rsync replicated file store</a></p>
-<p><a href="./recipes/service_discovery.html">Service discovery</a></p>
-<p><a href="./recipes/task_dag_execution.html">Distributed task DAG execution</a></p>
-<section>   
-</section>
-		</div>
-	</div>
 	<div class="row">
-		<div class="span4">
-			<h3 id="Operation">Operation</h3>
-<p><a href="./Metrics.html">Monitoring Metrics</a></p>
-<section>   
-</section>
-		</div>
-		<div class="span4">
-			<h3 id="Design">Design</h3>
-<p><a href="./design_crushed.html">CRUSH-ed for even distribution</a></p>
+		<div class="span12">
+			<div class="body-content">
+$bodyWithHeader
+			</div>
 		</div>
 	</div>
 	</div>
 
 	</div><!-- /container -->
-
+	
 	<!-- Footer
 	================================================== -->
 	<footer class="well">
 		<div class="container">
 			<div class="row">
-				<div class="span3 bottom-nav">
+				<div class="span9 bottom-nav">
 					<ul class="nav nav-list">
 						<li class="nav-header">Get Helix</li>
-						<li >
-							<a href="download.html" title="Download">Download</a>
+						<li class="active">
+							<a href="#" title="Download">Download </a>
 						</li>
-						<li >
-							<a href="Building.html" title="Building">Building</a>
+						<li class="active">
+							<a href="#" title="Building">Building </a>
 						</li>
-						<li >
-							<a href="releasenotes/release-1.0.2.html" title="Release Notes">Release Notes</a>
+						<li class="active">
+							<a href="#" title="Release Notes">Release Notes </a>
 						</li>
-					</ul>
-				</div>
-				<div class="span3 bottom-nav">
-					<ul class="nav nav-list">
 						<li class="nav-header">Hands-On</li>
-						<li >
-							<a href="Quickstart.html" title="Quick Start">Quick Start</a>
+						<li class="active">
+							<a href="#" title="Quick Start">Quick Start </a>
 						</li>
-						<li >
-							<a href="Tutorial.html" title="Tutorial">Tutorial</a>
+						<li class="active">
+							<a href="#" title="Tutorial">Tutorial </a>
 						</li>
-						<li >
-							<a href="../javadocs/1.0.2" title="Javadocs">Javadocs</a>
+						<li class="active">
+							<a href="#" title="Javadocs">Javadocs </a>
 						</li>
-					</ul>
-				</div>
-				<div class="span3 bottom-nav">
-					<ul class="nav nav-list">
 						<li class="nav-header">Recipes</li>
-						<li >
-							<a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a>
+						<li class="active">
+							<a href="#" title="Distributed lock manager">Distributed lock manager </a>
 						</li>
-						<li >
-							<a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a>
+						<li class="active">
+							<a href="#" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a>
 						</li>
-						<li >
-							<a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a>
+						<li class="active">
+							<a href="#" title="Rsync replicated file store">Rsync replicated file store </a>
 						</li>
-						<li >
-							<a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a>
+						<li class="active">
+							<a href="#" title="Service discovery">Service discovery </a>
 						</li>
-						<li >
-							<a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a>
+						<li class="active">
+							<a href="#" title="Distributed task DAG execution">Distributed task DAG execution </a>
 						</li>
 					</ul>
 				</div>
 			</div>
 		</div>
 	</footer>
-
+		
 	<div class="container subfooter">
 		<div class="row">
 			<div class="span12">
 				<p class="pull-right"><a href="#">Back to top</a></p>
 				<p class="copyright">Copyright &copy;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</p>
-				<p><a href="https://github.com/olamy/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy" target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
-		<div class="row span16"><div>Apache Helix, Apache, the Apache feather logo, and the Apache Helix project logos are trademarks of The Apache Software Foundation.
-        All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
-        <a href="https://helix.apache.org/1.0.2-docs/privacy-policy.html">Privacy Policy</a>
-      </div>
-			</div>
+				<p><a href="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+					</div>
 		</div>
 	</div>
 
 	<!-- Le javascript
 	================================================== -->
 	<!-- Placed at the end of the document so the pages load faster -->
-	<script src="./js/jquery.min.js"></script>
 
-	<script src="./js/bootstrap.min.js"></script>
-	<script src="./js/lightbox.min.js"></script>
-	<script src="./js/reflow-scroll.js"></script>
+	<!-- Fallback jQuery loading from Google CDN:
+	     http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go -->
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
+	<script type="text/javascript">
+		if (typeof jQuery == 'undefined')
+		{
+			document.write(unescape("%3Cscript src='./js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E"));
+		}
+	</script>
+	
+	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.js"></script>
+	<script src="./js/jquery.smooth-scroll.min.js"></script>
+	<!-- back button support for smooth scroll -->
+	<script src="./js/jquery.ba-bbq.min.js"></script>
 
 	<script src="./js/reflow-skin.js"></script>
-
+	
 	</body>
 </html>
\ No newline at end of file

Modified: helix/site-content/1.0.2-docs/integration.html
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/integration.html?rev=1906412&r1=1906411&r2=1906412&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/integration.html (original)
+++ helix/site-content/1.0.2-docs/integration.html Thu Jan  5 19:48:20 2023
@@ -7,7 +7,7 @@
 
 
 <!--
- Generated by Apache Maven Doxia at 2022-10-19  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-05-12  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -132,7 +132,7 @@
 				<li><a href="./" title="Release 1.0.2">Release 1.0.2</a></li>
 				<li class="divider">/</li>
 				<li>CI Management</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-10-19</li>
+				<li class="publishDate version-date pull-right">Last Published: 2022-05-12</li>
 			</ul>
 		</div>
 	</header>

Modified: helix/site-content/1.0.2-docs/issue-tracking.html
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/issue-tracking.html?rev=1906412&r1=1906411&r2=1906412&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/issue-tracking.html (original)
+++ helix/site-content/1.0.2-docs/issue-tracking.html Thu Jan  5 19:48:20 2023
@@ -7,7 +7,7 @@
 
 
 <!--
- Generated by Apache Maven Doxia at 2022-10-19  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-05-12  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -132,7 +132,7 @@
 				<li><a href="./" title="Release 1.0.2">Release 1.0.2</a></li>
 				<li class="divider">/</li>
 				<li>Issue Management</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-10-19</li>
+				<li class="publishDate version-date pull-right">Last Published: 2022-05-12</li>
 			</ul>
 		</div>
 	</header>

Added: helix/site-content/1.0.2-docs/js/jquery-1.8.3.min.js
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/js/jquery-1.8.3.min.js?rev=1906412&view=auto
==============================================================================
--- helix/site-content/1.0.2-docs/js/jquery-1.8.3.min.js (added)
+++ helix/site-content/1.0.2-docs/js/jquery-1.8.3.min.js Thu Jan  5 19:48:20 2023
@@ -0,0 +1,2 @@
+/*! jQuery v1.8.3 jquery.com | jquery.org/license */

[... 3 lines stripped ...]
Added: helix/site-content/1.0.2-docs/js/jquery.ba-bbq.min.js
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/js/jquery.ba-bbq.min.js?rev=1906412&view=auto
==============================================================================
--- helix/site-content/1.0.2-docs/js/jquery.ba-bbq.min.js (added)
+++ helix/site-content/1.0.2-docs/js/jquery.ba-bbq.min.js Thu Jan  5 19:48:20 2023
@@ -0,0 +1,18 @@
+/*
+ * jQuery BBQ: Back Button & Query Library - v1.3pre - 8/26/2010
+ * http://benalman.com/projects/jquery-bbq-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,r){var h,n=Array.prototype.slice,t=decodeURIComponent,a=$.param,j,c,m,y,b=$.bbq=$.bbq||{},s,x,k,e=$.event.special,d="hashchange",B="querystring",F="fragment",z="elemUrlAttr",l="href",w="src",p=/^.*\?|#.*$/g,u,H,g,i,C,E={};function G(I){return typeof I==="string"}function D(J){var I=n.call(arguments,1);return function(){return J.apply(this,I.concat(n.call(arguments)))}}function o(I){return I.replace(H,"$2")}function q(I){return I.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(K,P,I,L,J){var R,O,N,Q,M;if(L!==h){N=I.match(K?H:/^([^#?]*)\??([^#]*)(#?.*)/);M=N[3]||"";if(J===2&&G(L)){O=L.replace(K?u:p,"")}else{Q=m(N[2]);L=G(L)?m[K?F:B](L):L;O=J===2?L:J===1?$.extend({},L,Q):$.extend({},Q,L);O=j(O);if(K){O=O.replace(g,t)}}R=N[1]+(K?C:O||!N[1]?"?":"")+O+M}else{R=P(I!==h?I:location.href)}return R}a[B]=D(f,0,q);a[F]=c=D(f,1,o);a.sorted=j=function(J,K){var I=[],L={};$.each(a(J,K).split("&"),function(P,M){var O=M.replace(/(?:%5B|=).*$/,""),N=L[O];if(!N){N=L[O]=[];I.push(O)}N.p
 ush(M)});return $.map(I.sort(),function(M){return L[M]}).join("&")};c.noEscape=function(J){J=J||"";var I=$.map(J.split(""),encodeURIComponent);g=new RegExp(I.join("|"),"g")};c.noEscape(",/");c.ajaxCrawlable=function(I){if(I!==h){if(I){u=/^.*(?:#!|#)/;H=/^([^#]*)(?:#!|#)?(.*)$/;C="#!"}else{u=/^.*#/;H=/^([^#]*)#?(.*)$/;C="#"}i=!!I}return i};c.ajaxCrawlable(0);$.deparam=m=function(L,I){var K={},J={"true":!0,"false":!1,"null":null};$.each(L.replace(/\+/g," ").split("&"),function(O,T){var N=T.split("="),S=t(N[0]),M,R=K,P=0,U=S.split("]["),Q=U.length-1;if(/\[/.test(U[0])&&/\]$/.test(U[Q])){U[Q]=U[Q].replace(/\]$/,"");U=U.shift().split("[").concat(U);Q=U.length-1}else{Q=0}if(N.length===2){M=t(N[1]);if(I){M=M&&!isNaN(M)?+M:M==="undefined"?h:J[M]!==h?J[M]:M}if(Q){for(;P<=Q;P++){S=U[P]===""?R.length:U[P];R=R[S]=P<Q?R[S]||(U[P+1]&&isNaN(U[P+1])?{}:[]):M}}else{if($.isArray(K[S])){K[S].push(M)}else{if(K[S]!==h){K[S]=[K[S],M]}else{K[S]=M}}}}else{if(S){K[S]=I?h:""}}});return K};function A(K,I,J){i
 f(I===h||typeof I==="boolean"){J=I;I=a[K?F:B]()}else{I=G(I)?I.replace(K?u:p,""):I}return m(I,J)}m[B]=D(A,0);m[F]=y=D(A,1);$[z]||($[z]=function(I){return $.extend(E,I)})({a:l,base:l,iframe:w,img:w,input:w,form:"action",link:l,script:w});k=$[z];function v(L,J,K,I){if(!G(K)&&typeof K!=="object"){I=K;K=J;J=h}return this.each(function(){var O=$(this),M=J||k()[(this.nodeName||"").toLowerCase()]||"",N=M&&O.attr(M)||"";O.attr(M,a[L](N,K,I))})}$.fn[B]=D(v,B);$.fn[F]=D(v,F);b.pushState=s=function(L,I){if(G(L)&&/^#/.test(L)&&I===h){I=2}var K=L!==h,J=c(location.href,K?L:{},K?I:2);location.href=J};b.getState=x=function(I,J){return I===h||typeof I==="boolean"?y(I):y(J)[I]};b.removeState=function(I){var J={};if(I!==h){J=x();$.each($.isArray(I)?I:arguments,function(L,K){delete J[K]})}s(J,2)};e[d]=$.extend(e[d],{add:function(I){var K;function J(M){var L=M[F]=c();M.getState=function(N,O){return N===h||typeof N==="boolean"?m(L,N):m(L,O)[N]};K.apply(this,arguments)}if($.isFunction(I)){K=I;return J}else
 {K=I.handler;I.handler=J}}})})(jQuery,this);
+/*
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.docu
 ment.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
\ No newline at end of file

Added: helix/site-content/1.0.2-docs/js/jquery.smooth-scroll.min.js
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/js/jquery.smooth-scroll.min.js?rev=1906412&view=auto
==============================================================================
--- helix/site-content/1.0.2-docs/js/jquery.smooth-scroll.min.js (added)
+++ helix/site-content/1.0.2-docs/js/jquery.smooth-scroll.min.js Thu Jan  5 19:48:20 2023
@@ -0,0 +1,3 @@
+/*! Smooth Scroll - v1.4.6 - 2012-08-23
+* Copyright (c) 2012 Karl Swedberg; Licensed MIT, GPL */
+(function(a){function f(a){return a.replace(/(:|\.)/g,"\\$1")}var b="1.4.6",c={exclude:[],excludeWithin:[],offset:0,direction:"top",scrollElement:null,scrollTarget:null,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficent:2},d=function(b){var c=[],d=!1,e=b.dir&&b.dir=="left"?"scrollLeft":"scrollTop";return this.each(function(){if(this==document||this==window)return;var b=a(this);b[e]()>0?c.push(this):(b[e](1),d=b[e]()>0,d&&c.push(this),b[e](0))}),c.length||this.each(function(a){this.nodeName==="BODY"&&(c=[this])}),b.el==="first"&&c.length>1&&(c=[c[0]]),c},e="ontouchend"in document;a.fn.extend({scrollable:function(a){var b=d.call(this,{dir:a});return this.pushStack(b)},firstScrollable:function(a){var b=d.call(this,{el:"first",dir:a});return this.pushStack(b)},smoothScroll:function(b){b=b||{};var c=a.extend({},a.fn.smoothScroll.defaults,b),d=a.smoothScroll.filterPath(location.pathname);return this.unbind("click.smoothscroll").bind("click.smoothscr
 oll",function(b){var e=this,g=a(this),h=c.exclude,i=c.excludeWithin,j=0,k=0,l=!0,m={},n=location.hostname===e.hostname||!e.hostname,o=c.scrollTarget||(a.smoothScroll.filterPath(e.pathname)||d)===d,p=f(e.hash);if(!c.scrollTarget&&(!n||!o||!p))l=!1;else{while(l&&j<h.length)g.is(f(h[j++]))&&(l=!1);while(l&&k<i.length)g.closest(i[k++]).length&&(l=!1)}l&&(b.preventDefault(),a.extend(m,c,{scrollTarget:c.scrollTarget||p,link:e}),a.smoothScroll(m))}),this}}),a.smoothScroll=function(b,c){var d,e,f,g,h=0,i="offset",j="scrollTop",k={},l={},m=[];typeof b=="number"?(d=a.fn.smoothScroll.defaults,f=b):(d=a.extend({},a.fn.smoothScroll.defaults,b||{}),d.scrollElement&&(i="position",d.scrollElement.css("position")=="static"&&d.scrollElement.css("position","relative")),f=c||a(d.scrollTarget)[i]()&&a(d.scrollTarget)[i]()[d.direction]||0),d=a.extend({link:null},d),j=d.direction=="left"?"scrollLeft":j,d.scrollElement?(e=d.scrollElement,h=e[j]()):e=a("html, body").firstScrollable(),k[j]=f+h+d.offset,d.bef
 oreScroll.call(e,d),g=d.speed,g==="auto"&&(g=k[j]||e.scrollTop(),g=g/d.autoCoefficent),l={duration:g,easing:d.easing,complete:function(){d.afterScroll.call(d.link,d)}},d.step&&(l.step=d.step),e.length?e.stop().animate(k,l):d.afterScroll.call(d.link,d)},a.smoothScroll.version=b,a.smoothScroll.filterPath=function(a){return a.replace(/^\//,"").replace(/(index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},a.fn.smoothScroll.defaults=c})(jQuery);
\ No newline at end of file

Added: helix/site-content/1.0.2-docs/js/lightbox.js
URL: http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/js/lightbox.js?rev=1906412&view=auto
==============================================================================
--- helix/site-content/1.0.2-docs/js/lightbox.js (added)
+++ helix/site-content/1.0.2-docs/js/lightbox.js Thu Jan  5 19:48:20 2023
@@ -0,0 +1,351 @@
+
+/*
+Lightbox v2.51
+by Lokesh Dhakar - http://www.lokeshdhakar.com
+
+For more information, visit:
+http://lokeshdhakar.com/projects/lightbox2/
+
+Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
+- free for use in both personal and commercial projects
+- attribution requires leaving author name, author link, and the license info intact
+	
+Thanks
+- Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), and Thomas Fuchs(mir.aculo.us) for ideas, libs, and snippets.
+- Artemy Tregubenko (arty.name) for cleanup and help in updating to latest proto-aculous in v2.05.
+
+
+Table of Contents
+=================
+LightboxOptions
+
+Lightbox
+- constructor
+- init
+- enable
+- build
+- start
+- changeImage
+- sizeContainer
+- showImage
+- updateNav
+- updateDetails
+- preloadNeigbhoringImages
+- enableKeyboardNav
+- disableKeyboardNav
+- keyboardAction
+- end
+
+options = new LightboxOptions
+lightbox = new Lightbox options
+*/
+
+(function() {
+  var $, Lightbox, LightboxOptions;
+
+  $ = jQuery;
+
+  LightboxOptions = (function() {
+
+    function LightboxOptions() {
+      this.fileLoadingImage = 'images/loading.gif';
+      this.fileCloseImage = 'images/close.png';
+      this.resizeDuration = 700;
+      this.fadeDuration = 500;
+      this.labelImage = "Image";
+      this.labelOf = "of";
+    }
+
+    return LightboxOptions;
+
+  })();
+
+  Lightbox = (function() {
+
+    function Lightbox(options) {
+      this.options = options;
+      this.album = [];
+      this.currentImageIndex = void 0;
+      this.init();
+    }
+
+    Lightbox.prototype.init = function() {
+      this.enable();
+      return this.build();
+    };
+
+    Lightbox.prototype.enable = function() {
+      var _this = this;
+      return $('body').on('click', 'a[rel^=lightbox], area[rel^=lightbox]', function(e) {
+        _this.start($(e.currentTarget));
+        return false;
+      });
+    };
+
+    Lightbox.prototype.build = function() {
+      var $lightbox,
+        _this = this;
+      $("<div>", {
+        id: 'lightboxOverlay'
+      }).after($('<div/>', {
+        id: 'lightbox'
+      }).append($('<div/>', {
+        "class": 'lb-outerContainer'
+      }).append($('<div/>', {
+        "class": 'lb-container'
+      }).append($('<img/>', {
+        "class": 'lb-image'
+      }), $('<div/>', {
+        "class": 'lb-nav'
+      }).append($('<a/>', {
+        "class": 'lb-prev'
+      }), $('<a/>', {
+        "class": 'lb-next'
+      })), $('<div/>', {
+        "class": 'lb-loader'
+      }).append($('<a/>', {
+        "class": 'lb-cancel'
+      }).append($('<img/>', {
+        src: this.options.fileLoadingImage
+      }))))), $('<div/>', {
+        "class": 'lb-dataContainer'
+      }).append($('<div/>', {
+        "class": 'lb-data'
+      }).append($('<div/>', {
+        "class": 'lb-details'
+      }).append($('<span/>', {
+        "class": 'lb-caption'
+      }), $('<span/>', {
+        "class": 'lb-number'
+      })), $('<div/>', {
+        "class": 'lb-closeContainer'
+      }).append($('<a/>', {
+        "class": 'lb-close'
+      }).append($('<img/>', {
+        src: this.options.fileCloseImage
+      }))))))).appendTo($('body'));
+      $('#lightboxOverlay').hide().on('click', function(e) {
+        _this.end();
+        return false;
+      });
+      $lightbox = $('#lightbox');
+      $lightbox.hide().on('click', function(e) {
+        if ($(e.target).attr('id') === 'lightbox') _this.end();
+        return false;
+      });
+      $lightbox.find('.lb-outerContainer').on('click', function(e) {
+        if ($(e.target).attr('id') === 'lightbox') _this.end();
+        return false;
+      });
+      $lightbox.find('.lb-prev').on('click', function(e) {
+        _this.changeImage(_this.currentImageIndex - 1);
+        return false;
+      });
+      $lightbox.find('.lb-next').on('click', function(e) {
+        _this.changeImage(_this.currentImageIndex + 1);
+        return false;
+      });
+      $lightbox.find('.lb-loader, .lb-close').on('click', function(e) {
+        _this.end();
+        return false;
+      });
+    };
+
+    Lightbox.prototype.start = function($link) {
+      var $lightbox, $window, a, i, imageNumber, left, top, _len, _ref;
+      $(window).on("resize", this.sizeOverlay);
+      $('select, object, embed').css({
+        visibility: "hidden"
+      });
+      $('#lightboxOverlay').width($(document).width()).height($(document).height()).fadeIn(this.options.fadeDuration);
+      this.album = [];
+      imageNumber = 0;
+      if ($link.attr('rel') === 'lightbox') {
+        this.album.push({
+          link: $link.attr('href'),
+          title: $link.attr('title')
+        });
+      } else {
+        _ref = $($link.prop("tagName") + '[rel="' + $link.attr('rel') + '"]');
+        for (i = 0, _len = _ref.length; i < _len; i++) {
+          a = _ref[i];
+          this.album.push({
+            link: $(a).attr('href'),
+            title: $(a).attr('title')
+          });
+          if ($(a).attr('href') === $link.attr('href')) imageNumber = i;
+        }
+      }
+      $window = $(window);
+      top = $window.scrollTop() + $window.height() / 10;
+      left = $window.scrollLeft();
+      $lightbox = $('#lightbox');
+      $lightbox.css({
+        top: top + 'px',
+        left: left + 'px'
+      }).fadeIn(this.options.fadeDuration);
+      this.changeImage(imageNumber);
+    };
+
+    Lightbox.prototype.changeImage = function(imageNumber) {
+      var $image, $lightbox, preloader,
+        _this = this;
+      this.disableKeyboardNav();
+      $lightbox = $('#lightbox');
+      $image = $lightbox.find('.lb-image');
+      this.sizeOverlay();
+      $('#lightboxOverlay').fadeIn(this.options.fadeDuration);
+      $('.loader').fadeIn('slow');
+      $lightbox.find('.lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption').hide();
+      $lightbox.find('.lb-outerContainer').addClass('animating');
+      preloader = new Image;
+      preloader.onload = function() {
+        $image.attr('src', _this.album[imageNumber].link);
+        $image.width = preloader.width;
+        $image.height = preloader.height;
+        return _this.sizeContainer(preloader.width, preloader.height);
+      };
+      preloader.src = this.album[imageNumber].link;
+      this.currentImageIndex = imageNumber;
+    };
+
+    Lightbox.prototype.sizeOverlay = function() {
+      return $('#lightboxOverlay').width($(document).width()).height($(document).height());
+    };
+
+    Lightbox.prototype.sizeContainer = function(imageWidth, imageHeight) {
+      var $container, $lightbox, $outerContainer, containerBottomPadding, containerLeftPadding, containerRightPadding, containerTopPadding, newHeight, newWidth, oldHeight, oldWidth,
+        _this = this;
+      $lightbox = $('#lightbox');
+      $outerContainer = $lightbox.find('.lb-outerContainer');
+      oldWidth = $outerContainer.outerWidth();
+      oldHeight = $outerContainer.outerHeight();
+      $container = $lightbox.find('.lb-container');
+      containerTopPadding = parseInt($container.css('padding-top'), 10);
+      containerRightPadding = parseInt($container.css('padding-right'), 10);
+      containerBottomPadding = parseInt($container.css('padding-bottom'), 10);
+      containerLeftPadding = parseInt($container.css('padding-left'), 10);
+      newWidth = imageWidth + containerLeftPadding + containerRightPadding;
+      newHeight = imageHeight + containerTopPadding + containerBottomPadding;
+      if (newWidth !== oldWidth && newHeight !== oldHeight) {
+        $outerContainer.animate({
+          width: newWidth,
+          height: newHeight
+        }, this.options.resizeDuration, 'swing');
+      } else if (newWidth !== oldWidth) {
+        $outerContainer.animate({
+          width: newWidth
+        }, this.options.resizeDuration, 'swing');
+      } else if (newHeight !== oldHeight) {
+        $outerContainer.animate({
+          height: newHeight
+        }, this.options.resizeDuration, 'swing');
+      }
+      setTimeout(function() {
+        $lightbox.find('.lb-dataContainer').width(newWidth);
+        $lightbox.find('.lb-prevLink').height(newHeight);
+        $lightbox.find('.lb-nextLink').height(newHeight);
+        _this.showImage();
+      }, this.options.resizeDuration);
+    };
+
+    Lightbox.prototype.showImage = function() {
+      var $lightbox;
+      $lightbox = $('#lightbox');
+      $lightbox.find('.lb-loader').hide();
+      $lightbox.find('.lb-image').fadeIn('slow');
+      this.updateNav();
+      this.updateDetails();
+      this.preloadNeighboringImages();
+      this.enableKeyboardNav();
+    };
+
+    Lightbox.prototype.updateNav = function() {
+      var $lightbox;
+      $lightbox = $('#lightbox');
+      $lightbox.find('.lb-nav').show();
+      if (this.currentImageIndex > 0) $lightbox.find('.lb-prev').show();
+      if (this.currentImageIndex < this.album.length - 1) {
+        $lightbox.find('.lb-next').show();
+      }
+    };
+
+    Lightbox.prototype.updateDetails = function() {
+      var $lightbox,
+        _this = this;
+      $lightbox = $('#lightbox');
+      if (typeof this.album[this.currentImageIndex].title !== 'undefined' && this.album[this.currentImageIndex].title !== "") {
+        $lightbox.find('.lb-caption').html(this.album[this.currentImageIndex].title).fadeIn('fast');
+      }
+      if (this.album.length > 1) {
+        $lightbox.find('.lb-number').html(this.options.labelImage + ' ' + (this.currentImageIndex + 1) + ' ' + this.options.labelOf + '  ' + this.album.length).fadeIn('fast');
+      } else {
+        $lightbox.find('.lb-number').hide();
+      }
+      $lightbox.find('.lb-outerContainer').removeClass('animating');
+      $lightbox.find('.lb-dataContainer').fadeIn(this.resizeDuration, function() {
+        return _this.sizeOverlay();
+      });
+    };
+
+    Lightbox.prototype.preloadNeighboringImages = function() {
+      var preloadNext, preloadPrev;
+      if (this.album.length > this.currentImageIndex + 1) {
+        preloadNext = new Image;
+        preloadNext.src = this.album[this.currentImageIndex + 1].link;
+      }
+      if (this.currentImageIndex > 0) {
+        preloadPrev = new Image;
+        preloadPrev.src = this.album[this.currentImageIndex - 1].link;
+      }
+    };
+
+    Lightbox.prototype.enableKeyboardNav = function() {
+      $(document).on('keyup.keyboard', $.proxy(this.keyboardAction, this));
+    };
+
+    Lightbox.prototype.disableKeyboardNav = function() {
+      $(document).off('.keyboard');
+    };
+
+    Lightbox.prototype.keyboardAction = function(event) {
+      var KEYCODE_ESC, KEYCODE_LEFTARROW, KEYCODE_RIGHTARROW, key, keycode;
+      KEYCODE_ESC = 27;
+      KEYCODE_LEFTARROW = 37;
+      KEYCODE_RIGHTARROW = 39;
+      keycode = event.keyCode;
+      key = String.fromCharCode(keycode).toLowerCase();
+      if (keycode === KEYCODE_ESC || key.match(/x|o|c/)) {
+        this.end();
+      } else if (key === 'p' || keycode === KEYCODE_LEFTARROW) {
+        if (this.currentImageIndex !== 0) {
+          this.changeImage(this.currentImageIndex - 1);
+        }
+      } else if (key === 'n' || keycode === KEYCODE_RIGHTARROW) {
+        if (this.currentImageIndex !== this.album.length - 1) {
+          this.changeImage(this.currentImageIndex + 1);
+        }
+      }
+    };
+
+    Lightbox.prototype.end = function() {
+      this.disableKeyboardNav();
+      $(window).off("resize", this.sizeOverlay);
+      $('#lightbox').fadeOut(this.options.fadeDuration);
+      $('#lightboxOverlay').fadeOut(this.options.fadeDuration);
+      return $('select, object, embed').css({
+        visibility: "visible"
+      });
+    };
+
+    return Lightbox;
+
+  })();
+
+  $(function() {
+    var lightbox, options;
+    options = new LightboxOptions;
+    return lightbox = new Lightbox(options);
+  });
+
+}).call(this);
\ No newline at end of file