Added: release/metron/0.4.0/site-book/js/apache-maven-fluido-1.3.0.min.js
==============================================================================
--- release/metron/0.4.0/site-book/js/apache-maven-fluido-1.3.0.min.js (added)
+++ release/metron/0.4.0/site-book/js/apache-maven-fluido-1.3.0.min.js Wed Jul  
5 06:56:42 2017
@@ -0,0 +1,21 @@
+/*!
+ * jQuery JavaScript Library v1.8.0
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: Thu Aug 09 2012 16:24:48 GMT-0400 (Eastern Daylight Time)
+ */
+(function(a2,aB){var 
x,af,o=a2.document,aI=a2.location,d=a2.navigator,bg=a2.jQuery,I=a2.$,am=Array.prototype.push,a4=Array.prototype.slice,aK=Array.prototype.indexOf,A=Object.prototype.toString,V=Object.prototype.hasOwnProperty,aN=String.prototype.trim,bG=function(e,bZ){return
 new 
bG.fn.init(e,bZ,x)},bx=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,aa=/\S/,aV=/\s+/,D=aa.test("\xA0")?(/^[\s\xA0]+|[\s\xA0]+$/g):/^\s+|\s+$/g,bo=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,a=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,bf=/^[\],:{}\s]*$/,bi=/(?:^|:|,)(?:\s*\[)+/g,bD=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,a0=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,bP=/^-ms-/,aU=/-([\da-z])/gi,N=function(e,bZ){return(bZ+"").toUpperCase()},aF=function(){if(o.addEventListener){o.removeEventListener("DOMContentLoaded",aF,false);bG.ready()}else{if(o.readyState==="complete"){o.detachEvent("onreadystatechange",aF);bG.ready()}}},Z={};bG.fn=bG.prototype={constructor:bG,init:function(e,b2,b1){var
 b0,b3,b
 Z,b4;if(!e){return 
this}if(e.nodeType){this.context=this[0]=e;this.length=1;return this}if(typeof 
e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){b0=[null,e,null]}else{b0=bo.exec(e)}if(b0&&(b0[1]||!b2)){if(b0[1]){b2=b2
 instanceof 
bG?b2[0]:b2;b4=(b2&&b2.nodeType?b2.ownerDocument||b2:o);e=bG.parseHTML(b0[1],b4,true);if(a.test(b0[1])&&bG.isPlainObject(b2)){this.attr.call(e,b2,true)}return
 
bG.merge(this,e)}else{b3=o.getElementById(b0[2]);if(b3&&b3.parentNode){if(b3.id!==b0[2]){return
 b1.find(e)}this.length=1;this[0]=b3}this.context=o;this.selector=e;return 
this}}else{if(!b2||b2.jquery){return(b2||b1).find(e)}else{return 
this.constructor(b2).find(e)}}}else{if(bG.isFunction(e)){return 
b1.ready(e)}}if(e.selector!==aB){this.selector=e.selector;this.context=e.context}return
 
bG.makeArray(e,this)},selector:"",jquery:"1.8.0",length:0,size:function(){return
 this.length},toArray:function(){return a4.call(this)},get:function(e){return 
e==null?this.toArray():(e<0?this[t
 his.length+e]:this[e])},pushStack:function(bZ,b1,e){var 
b0=bG.merge(this.constructor(),bZ);b0.prevObject=this;b0.context=this.context;if(b1==="find"){b0.selector=this.selector+(this.selector?"
 ":"")+e}else{if(b1){b0.selector=this.selector+"."+b1+"("+e+")"}}return 
b0},each:function(bZ,e){return 
bG.each(this,bZ,e)},ready:function(e){bG.ready.promise().done(e);return 
this},eq:function(e){e=+e;return 
e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return 
this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return 
this.pushStack(a4.apply(this,arguments),"slice",a4.call(arguments).join(","))},map:function(e){return
 this.pushStack(bG.map(this,function(b0,bZ){return 
e.call(b0,bZ,b0)}))},end:function(){return 
this.prevObject||this.constructor(null)},push:am,sort:[].sort,splice:[].splice};bG.fn.init.prototype=bG.fn;bG.extend=bG.fn.extend=function(){var
 
b7,b0,e,bZ,b4,b5,b3=arguments[0]||{},b2=1,b1=arguments.length,b6=false;if(typeof
 b3==="boolean"){b6=b3;b3=arguments[1]||{
 };b2=2}if(typeof 
b3!=="object"&&!bG.isFunction(b3)){b3={}}if(b1===b2){b3=this;--b2}for(;b2<b1;b2++){if((b7=arguments[b2])!=null){for(b0
 in 
b7){e=b3[b0];bZ=b7[b0];if(b3===bZ){continue}if(b6&&bZ&&(bG.isPlainObject(bZ)||(b4=bG.isArray(bZ)))){if(b4){b4=false;b5=e&&bG.isArray(e)?e:[]}else{b5=e&&bG.isPlainObject(e)?e:{}}b3[b0]=bG.extend(b6,b5,bZ)}else{if(bZ!==aB){b3[b0]=bZ}}}}}return
 
b3};bG.extend({noConflict:function(e){if(a2.$===bG){a2.$=I}if(e&&a2.jQuery===bG){a2.jQuery=bg}return
 
bG},isReady:false,readyWait:1,holdReady:function(e){if(e){bG.readyWait++}else{bG.ready(true)}},ready:function(e){if(e===true?--bG.readyWait:bG.isReady){return}if(!o.body){return
 
setTimeout(bG.ready,1)}bG.isReady=true;if(e!==true&&--bG.readyWait>0){return}af.resolveWith(o,[bG]);if(bG.fn.trigger){bG(o).trigger("ready").off("ready")}},isFunction:function(e){return
 bG.type(e)==="function"},isArray:Array.isArray||function(e){return 
bG.type(e)==="array"},isWindow:function(e){return 
e!=null&&e==e.window},isNumeric:fu
 nction(e){return !isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return 
e==null?String(e):Z[A.call(e)]||"object"},isPlainObject:function(b1){if(!b1||bG.type(b1)!=="object"||b1.nodeType||bG.isWindow(b1)){return
 
false}try{if(b1.constructor&&!V.call(b1,"constructor")&&!V.call(b1.constructor.prototype,"isPrototypeOf")){return
 false}}catch(b0){return false}var bZ;for(bZ in b1){}return 
bZ===aB||V.call(b1,bZ)},isEmptyObject:function(bZ){var e;for(e in bZ){return 
false}return true},error:function(e){throw new 
Error(e)},parseHTML:function(b1,b0,e){var bZ;if(!b1||typeof 
b1!=="string"){return null}if(typeof 
b0==="boolean"){e=b0;b0=0}b0=b0||o;if((bZ=a.exec(b1))){return[b0.createElement(bZ[1])]}bZ=bG.buildFragment([b1],b0,e?null:[]);return
 
bG.merge([],(bZ.cacheable?bG.clone(bZ.fragment):bZ.fragment).childNodes)},parseJSON:function(e){if(!e||typeof
 e!=="string"){return null}e=bG.trim(e);if(a2.JSON&&a2.JSON.parse){return 
a2.JSON.parse(e)}if(bf.test(e.replace(bD,"@").replace(a0,"]").replace(bi
 ,""))){return(new Function("return "+e))()}bG.error("Invalid JSON: 
"+e)},parseXML:function(b1){var bZ,b0;if(!b1||typeof b1!=="string"){return 
null}try{if(a2.DOMParser){b0=new 
DOMParser();bZ=b0.parseFromString(b1,"text/xml")}else{bZ=new 
ActiveXObject("Microsoft.XMLDOM");bZ.async="false";bZ.loadXML(b1)}}catch(b2){bZ=aB}if(!bZ||!bZ.documentElement||bZ.getElementsByTagName("parsererror").length){bG.error("Invalid
 XML: "+b1)}return 
bZ},noop:function(){},globalEval:function(e){if(e&&aa.test(e)){(a2.execScript||function(bZ){a2["eval"].call(a2,bZ)})(e)}},camelCase:function(e){return
 e.replace(bP,"ms-").replace(aU,N)},nodeName:function(bZ,e){return 
bZ.nodeName&&bZ.nodeName.toUpperCase()===e.toUpperCase()},each:function(b3,b4,b0){var
 bZ,b1=0,b2=b3.length,e=b2===aB||bG.isFunction(b3);if(b0){if(e){for(bZ in 
b3){if(b4.apply(b3[bZ],b0)===false){break}}}else{for(;b1<b2;){if(b4.apply(b3[b1++],b0)===false){break}}}}else{if(e){for(bZ
 in b3){if(b4.call(b3[bZ],bZ,b3[bZ])===false){break}}}else{for(;b1<b
 2;){if(b4.call(b3[b1],b1,b3[b1++])===false){break}}}}return 
b3},trim:aN?function(e){return e==null?"":aN.call(e)}:function(e){return 
e==null?"":e.toString().replace(D,"")},makeArray:function(e,b0){var 
b1,bZ=b0||[];if(e!=null){b1=bG.type(e);if(e.length==null||b1==="string"||b1==="function"||b1==="regexp"||bG.isWindow(e)){am.call(bZ,e)}else{bG.merge(bZ,e)}}return
 bZ},inArray:function(b1,bZ,b0){var e;if(bZ){if(aK){return 
aK.call(bZ,b1,b0)}e=bZ.length;b0=b0?b0<0?Math.max(0,e+b0):b0:0;for(;b0<e;b0++){if(b0
 in bZ&&bZ[b0]===b1){return b0}}}return -1},merge:function(b2,b0){var 
e=b0.length,b1=b2.length,bZ=0;if(typeof 
e==="number"){for(;bZ<e;bZ++){b2[b1++]=b0[bZ]}}else{while(b0[bZ]!==aB){b2[b1++]=b0[bZ++]}}b2.length=b1;return
 b2},grep:function(bZ,b4,e){var 
b3,b0=[],b1=0,b2=bZ.length;e=!!e;for(;b1<b2;b1++){b3=!!b4(bZ[b1],b1);if(e!==b3){b0.push(bZ[b1])}}return
 b0},map:function(e,b5,b6){var b3,b4,b2=[],b0=0,bZ=e.length,b1=e instanceof 
bG||bZ!==aB&&typeof bZ==="number"&&((bZ>0&&e[0]&&e[bZ-1])||bZ
 
===0||bG.isArray(e));if(b1){for(;b0<bZ;b0++){b3=b5(e[b0],b0,b6);if(b3!=null){b2[b2.length]=b3}}}else{for(b4
 in e){b3=b5(e[b4],b4,b6);if(b3!=null){b2[b2.length]=b3}}}return 
b2.concat.apply([],b2)},guid:1,proxy:function(b2,b1){var b0,e,bZ;if(typeof 
b1==="string"){b0=b2[b1];b1=b2;b2=b0}if(!bG.isFunction(b2)){return 
aB}e=a4.call(arguments,2);bZ=function(){return 
b2.apply(b1,e.concat(a4.call(arguments)))};bZ.guid=b2.guid=b2.guid||bZ.guid||bG.guid++;return
 bZ},access:function(e,b4,b7,b5,b2,b8,b6){var 
b0,b3=b7==null,b1=0,bZ=e.length;if(b7&&typeof b7==="object"){for(b1 in 
b7){bG.access(e,b4,b1,b7[b1],1,b8,b5)}b2=1}else{if(b5!==aB){b0=b6===aB&&bG.isFunction(b5);if(b3){if(b0){b0=b4;b4=function(ca,b9,cb){return
 
b0.call(bG(ca),cb)}}else{b4.call(e,b5);b4=null}}if(b4){for(;b1<bZ;b1++){b4(e[b1],b7,b0?b5.call(e[b1],b1,b4(e[b1],b7)):b5,b6)}}b2=1}}return
 b2?e:b3?b4.call(e):bZ?b4(e[0],b7):b8},now:function(){return(new 
Date()).getTime()}});bG.ready.promise=function(b2){if(!af){af=bG.Deferred();if(o.rea
 
dyState==="complete"||(o.readyState!=="loading"&&o.addEventListener)){setTimeout(bG.ready,1)}else{if(o.addEventListener){o.addEventListener("DOMContentLoaded",aF,false);a2.addEventListener("load",bG.ready,false)}else{o.attachEvent("onreadystatechange",aF);a2.attachEvent("onload",bG.ready);var
 
b1=false;try{b1=a2.frameElement==null&&o.documentElement}catch(b0){}if(b1&&b1.doScroll){(function
 bZ(){if(!bG.isReady){try{b1.doScroll("left")}catch(b3){return 
setTimeout(bZ,50)}bG.ready()}})()}}}}return af.promise(b2)};bG.each("Boolean 
Number String Function Array Date RegExp Object".split(" 
"),function(bZ,e){Z["[object "+e+"]"]=e.toLowerCase()});x=bG(o);var 
bU={};function ac(bZ){var 
e=bU[bZ]={};bG.each(bZ.split(aV),function(b1,b0){e[b0]=true});return 
e}bG.Callbacks=function(b8){b8=typeof 
b8==="string"?(bU[b8]||ac(b8)):bG.extend({},b8);var 
b1,e,b2,b0,b3,b4,b5=[],b6=!b8.once&&[],bZ=function(b9){b1=b8.memory&&b9;e=true;b4=b0||0;b0=0;b3=b5.length;b2=true;for(;b5&&b4<b3;b4++){if(b5[b4].apply(b9[0]
 
,b9[1])===false&&b8.stopOnFalse){b1=false;break}}b2=false;if(b5){if(b6){if(b6.length){bZ(b6.shift())}}else{if(b1){b5=[]}else{b7.disable()}}}},b7={add:function(){if(b5){var
 ca=b5.length;(function 
b9(cb){bG.each(cb,function(cd,cc){if(bG.isFunction(cc)&&(!b8.unique||!b7.has(cc))){b5.push(cc)}else{if(cc&&cc.length){b9(cc)}}})})(arguments);if(b2){b3=b5.length}else{if(b1){b0=ca;bZ(b1)}}}return
 this},remove:function(){if(b5){bG.each(arguments,function(cb,b9){var 
ca;while((ca=bG.inArray(b9,b5,ca))>-1){b5.splice(ca,1);if(b2){if(ca<=b3){b3--}if(ca<=b4){b4--}}}})}return
 this},has:function(b9){return 
bG.inArray(b9,b5)>-1},empty:function(){b5=[];return 
this},disable:function(){b5=b6=b1=aB;return this},disabled:function(){return 
!b5},lock:function(){b6=aB;if(!b1){b7.disable()}return 
this},locked:function(){return 
!b6},fireWith:function(ca,b9){b9=b9||[];b9=[ca,b9.slice?b9.slice():b9];if(b5&&(!e||b6)){if(b2){b6.push(b9)}else{bZ(b9)}}return
 this},fire:function(){b7.fireWith(this,arguments);return th
 is},fired:function(){return !!e}};return 
b7};bG.extend({Deferred:function(b0){var 
bZ=[["resolve","done",bG.Callbacks("once 
memory"),"resolved"],["reject","fail",bG.Callbacks("once 
memory"),"rejected"],["notify","progress",bG.Callbacks("memory")]],b1="pending",b2={state:function(){return
 b1},always:function(){e.done(arguments).fail(arguments);return 
this},then:function(){var b3=arguments;return 
bG.Deferred(function(b4){bG.each(bZ,function(b6,b5){var 
b8=b5[0],b7=b3[b6];e[b5[1]](bG.isFunction(b7)?function(){var 
b9=b7.apply(this,arguments);if(b9&&bG.isFunction(b9.promise)){b9.promise().done(b4.resolve).fail(b4.reject).progress(b4.notify)}else{b4[b8+"With"](this===e?b4:this,[b9])}}:b4[b8])});b3=null}).promise()},promise:function(b3){return
 typeof 
b3==="object"?bG.extend(b3,b2):b2}},e={};b2.pipe=b2.then;bG.each(bZ,function(b4,b3){var
 
b6=b3[2],b5=b3[3];b2[b3[1]]=b6.add;if(b5){b6.add(function(){b1=b5},bZ[b4^1][2].disable,bZ[2][2].lock)}e[b3[0]]=b6.fire;e[b3[0]+"With"]=b6.fireWith});b2.promi
 se(e);if(b0){b0.call(e,e)}return e},when:function(b2){var 
b0=0,b4=a4.call(arguments),e=b4.length,bZ=e!==1||(b2&&bG.isFunction(b2.promise))?e:0,b7=bZ===1?b2:bG.Deferred(),b1=function(b9,ca,b8){return
 
function(cb){ca[b9]=this;b8[b9]=arguments.length>1?a4.call(arguments):cb;if(b8===b6){b7.notifyWith(ca,b8)}else{if(!(--bZ)){b7.resolveWith(ca,b8)}}}},b6,b3,b5;if(e>1){b6=new
 Array(e);b3=new Array(e);b5=new 
Array(e);for(;b0<e;b0++){if(b4[b0]&&bG.isFunction(b4[b0].promise)){b4[b0].promise().done(b1(b0,b5,b4)).fail(b7.reject).progress(b1(b0,b3,b6))}else{--bZ}}}if(!bZ){b7.resolveWith(b5,b4)}return
 b7.promise()}});bG.support=(function(){var 
cb,ca,b8,b9,b2,b7,b6,b4,b3,b1,bZ,b0=o.createElement("div");b0.setAttribute("className","t");b0.innerHTML="
  <link/><table></table><a href='/a'>a</a><input 
type='checkbox'/>";ca=b0.getElementsByTagName("*");b8=b0.getElementsByTagName("a")[0];b8.style.cssText="top:1px;float:left;opacity:.5";if(!ca||!ca.length||!b8){return{}}b9=o.createElement("select");b2=b9.
 
appendChild(o.createElement("option"));b7=b0.getElementsByTagName("input")[0];cb={leadingWhitespace:(b0.firstChild.nodeType===3),tbody:!b0.getElementsByTagName("tbody").length,htmlSerialize:!!b0.getElementsByTagName("link").length,style:/top/.test(b8.getAttribute("style")),hrefNormalized:(b8.getAttribute("href")==="/a"),opacity:/^0.5/.test(b8.style.opacity),cssFloat:!!b8.style.cssFloat,checkOn:(b7.value==="on"),optSelected:b2.selected,getSetAttribute:b0.className!=="t",enctype:!!o.createElement("form").enctype,html5Clone:o.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",boxModel:(o.compatMode==="CSS1Compat"),submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};b7.checked=true;cb.noCloneChecked=b7.cloneNode(true).checked;b9.disabled=true;cb.optDisabled=!b2.disabled;try{delete
 b0.test}catch(b5){cb.deleteExp
 
ando=false}if(!b0.addEventListener&&b0.attachEvent&&b0.fireEvent){b0.attachEvent("onclick",bZ=function(){cb.noCloneEvent=false});b0.cloneNode(true).fireEvent("onclick");b0.detachEvent("onclick",bZ)}b7=o.createElement("input");b7.value="t";b7.setAttribute("type","radio");cb.radioValue=b7.value==="t";b7.setAttribute("checked","checked");b7.setAttribute("name","t");b0.appendChild(b7);b6=o.createDocumentFragment();b6.appendChild(b0.lastChild);cb.checkClone=b6.cloneNode(true).cloneNode(true).lastChild.checked;cb.appendChecked=b7.checked;b6.removeChild(b7);b6.appendChild(b0);if(b0.attachEvent){for(b3
 in {submit:true,change:true,focusin:true}){b4="on"+b3;b1=(b4 in 
b0);if(!b1){b0.setAttribute(b4,"return;");b1=(typeof 
b0[b4]==="function")}cb[b3+"Bubbles"]=b1}}bG(function(){var 
cc,cg,ce,cf,cd="padding:0;margin:0;border:0;display:block;overflow:hidden;",e=o.getElementsByTagName("body")[0];if(!e){return}cc=o.createElement("div");cc.style.cssText="visibility:hidden;border:0;width:0;height:0;posi
 
tion:static;top:0;margin-top:1px";e.insertBefore(cc,e.firstChild);cg=o.createElement("div");cc.appendChild(cg);cg.innerHTML="<table><tr><td></td><td>t</td></tr></table>";ce=cg.getElementsByTagName("td");ce[0].style.cssText="padding:0;margin:0;border:0;display:none";b1=(ce[0].offsetHeight===0);ce[0].style.display="";ce[1].style.display="none";cb.reliableHiddenOffsets=b1&&(ce[0].offsetHeight===0);cg.innerHTML="";cg.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";cb.boxSizing=(cg.offsetWidth===4);cb.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==1);if(a2.getComputedStyle){cb.pixelPosition=(a2.getComputedStyle(cg,null)||{}).top!=="1%";cb.boxSizingReliable=(a2.getComputedStyle(cg,null)||{width:"4px"}).width==="4px";cf=o.createElement("div");cf.style.cssText=cg.style.cssText=cd;cf.style.marginRight=cf.style.width="0";cg.style.width="1px";cg.appendChild(cf)
 
;cb.reliableMarginRight=!parseFloat((a2.getComputedStyle(cf,null)||{}).marginRight)}if(typeof
 
cg.style.zoom!=="undefined"){cg.innerHTML="";cg.style.cssText=cd+"width:1px;padding:1px;display:inline;zoom:1";cb.inlineBlockNeedsLayout=(cg.offsetWidth===3);cg.style.display="block";cg.style.overflow="visible";cg.innerHTML="<div></div>";cg.firstChild.style.width="5px";cb.shrinkWrapBlocks=(cg.offsetWidth!==3);cc.style.zoom=1}e.removeChild(cc);cc=cg=ce=cf=null});b6.removeChild(b0);ca=b8=b9=b2=b7=b6=b0=null;return
 cb})();var 
bt=/^(?:\{.*\}|\[.*\])$/,aL=/([A-Z])/g;bG.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(bG.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?bG.cache[e[bG.expando]]:e[bG.expando];return
 !!e&&!O(e)},data:function(b1,bZ,b3,b2){if(!bG.acceptData(b1)){return}var 
b4,b6,b7=bG.expando,b5=typeof 
bZ==="string",b8=b1.nodeType,e=b8?bG.cache:b1,b0=b8?b1[b7]:b1[b7]&&
 
b7;if((!b0||!e[b0]||(!b2&&!e[b0].data))&&b5&&b3===aB){return}if(!b0){if(b8){b1[b7]=b0=bG.deletedIds.pop()||++bG.uuid}else{b0=b7}}if(!e[b0]){e[b0]={};if(!b8){e[b0].toJSON=bG.noop}}if(typeof
 bZ==="object"||typeof 
bZ==="function"){if(b2){e[b0]=bG.extend(e[b0],bZ)}else{e[b0].data=bG.extend(e[b0].data,bZ)}}b4=e[b0];if(!b2){if(!b4.data){b4.data={}}b4=b4.data}if(b3!==aB){b4[bG.camelCase(bZ)]=b3}if(b5){b6=b4[bZ];if(b6==null){b6=b4[bG.camelCase(bZ)]}}else{b6=b4}return
 b6},removeData:function(b1,bZ,b2){if(!bG.acceptData(b1)){return}var 
b5,b4,b3,b6=b1.nodeType,e=b6?bG.cache:b1,b0=b6?b1[bG.expando]:bG.expando;if(!e[b0]){return}if(bZ){b5=b2?e[b0]:e[b0].data;if(b5){if(!bG.isArray(bZ)){if(bZ
 in b5){bZ=[bZ]}else{bZ=bG.camelCase(bZ);if(bZ in 
b5){bZ=[bZ]}else{bZ=bZ.split(" ")}}}for(b4=0,b3=bZ.length;b4<b3;b4++){delete 
b5[bZ[b4]]}if(!(b2?O:bG.isEmptyObject)(b5)){return}}}if(!b2){delete 
e[b0].data;if(!O(e[b0])){return}}if(b6){bG.cleanData([b1],true)}else{if(bG.support.deleteExpando||e!=e.window){delete
  e[b0]}else{e[b0]=null}}},_data:function(bZ,e,b0){return 
bG.data(bZ,e,b0,true)},acceptData:function(bZ){var 
e=bZ.nodeName&&bG.noData[bZ.nodeName.toLowerCase()];return 
!e||e!==true&&bZ.getAttribute("classid")===e}});bG.fn.extend({data:function(b7,b6){var
 
b2,bZ,b5,e,b1,b0=this[0],b4=0,b3=null;if(b7===aB){if(this.length){b3=bG.data(b0);if(b0.nodeType===1&&!bG._data(b0,"parsedAttrs")){b5=b0.attributes;for(b1=b5.length;b4<b1;b4++){e=b5[b4].name;if(e.indexOf("data-")===0){e=bG.camelCase(e.substring(5));bv(b0,e,b3[e])}}bG._data(b0,"parsedAttrs",true)}}return
 b3}if(typeof b7==="object"){return 
this.each(function(){bG.data(this,b7)})}b2=b7.split(".",2);b2[1]=b2[1]?"."+b2[1]:"";bZ=b2[1]+"!";return
 
bG.access(this,function(b8){if(b8===aB){b3=this.triggerHandler("getData"+bZ,[b2[0]]);if(b3===aB&&b0){b3=bG.data(b0,b7);b3=bv(b0,b7,b3)}return
 b3===aB&&b2[1]?this.data(b2[0]):b3}b2[1]=b8;this.each(function(){var 
b9=bG(this);b9.triggerHandler("setData"+bZ,b2);bG.data(this,b7,b8);b9.triggerHandler("cha
 
ngeData"+bZ,b2)})},null,b6,arguments.length>1,null,false)},removeData:function(e){return
 this.each(function(){bG.removeData(this,e)})}});function 
bv(b1,b0,b2){if(b2===aB&&b1.nodeType===1){var 
bZ="data-"+b0.replace(aL,"-$1").toLowerCase();b2=b1.getAttribute(bZ);if(typeof 
b2==="string"){try{b2=b2==="true"?true:b2==="false"?false:b2==="null"?null:+b2+""===b2?+b2:bt.test(b2)?bG.parseJSON(b2):b2}catch(b3){}bG.data(b1,b0,b2)}else{b2=aB}}return
 b2}function O(bZ){var e;for(e in 
bZ){if(e==="data"&&bG.isEmptyObject(bZ[e])){continue}if(e!=="toJSON"){return 
false}}return true}bG.extend({queue:function(b0,bZ,b1){var 
e;if(b0){bZ=(bZ||"fx")+"queue";e=bG._data(b0,bZ);if(b1){if(!e||bG.isArray(b1)){e=bG._data(b0,bZ,bG.makeArray(b1))}else{e.push(b1)}}return
 e||[]}},dequeue:function(b3,b2){b2=b2||"fx";var 
bZ=bG.queue(b3,b2),b1=bZ.shift(),e=bG._queueHooks(b3,b2),b0=function(){bG.dequeue(b3,b2)};if(b1==="inprogress"){b1=bZ.shift()}if(b1){if(b2==="fx"){bZ.unshift("inprogress")}delete
 e.stop;b1.call(b3,b0,
 e)}if(!bZ.length&&e){e.empty.fire()}},_queueHooks:function(b0,bZ){var 
e=bZ+"queueHooks";return 
bG._data(b0,e)||bG._data(b0,e,{empty:bG.Callbacks("once 
memory").add(function(){bG.removeData(b0,bZ+"queue",true);bG.removeData(b0,e,true)})})}});bG.fn.extend({queue:function(e,bZ){var
 b0=2;if(typeof e!=="string"){bZ=e;e="fx";b0--}if(arguments.length<b0){return 
bG.queue(this[0],e)}return bZ===aB?this:this.each(function(){var 
b1=bG.queue(this,e,bZ);bG._queueHooks(this,e);if(e==="fx"&&b1[0]!=="inprogress"){bG.dequeue(this,e)}})},dequeue:function(e){return
 
this.each(function(){bG.dequeue(this,e)})},delay:function(bZ,e){bZ=bG.fx?bG.fx.speeds[bZ]||bZ:bZ;e=e||"fx";return
 this.queue(e,function(b1,b0){var 
b2=setTimeout(b1,bZ);b0.stop=function(){clearTimeout(b2)}})},clearQueue:function(e){return
 this.queue(e||"fx",[])},promise:function(b0,b4){var 
bZ,b1=1,b5=bG.Deferred(),b3=this,e=this.length,b2=function(){if(!(--b1)){b5.resolveWith(b3,[b3])}};if(typeof
 b0!=="string"){b4=b0;b0=aB}b0=b0||"fx";while(
 
e--){if((bZ=bG._data(b3[e],b0+"queueHooks"))&&bZ.empty){b1++;bZ.empty.add(b2)}}b2();return
 b5.promise(b4)}});var 
a7,bV,n,bJ=/[\t\r\n]/g,ai=/\r/g,j=/^(?:button|input)$/i,aA=/^(?:button|input|object|select|textarea)$/i,E=/^a(?:rea|)$/i,M=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,bL=bG.support.getSetAttribute;bG.fn.extend({attr:function(e,bZ){return
 bG.access(this,bG.attr,e,bZ,arguments.length>1)},removeAttr:function(e){return 
this.each(function(){bG.removeAttr(this,e)})},prop:function(e,bZ){return 
bG.access(this,bG.prop,e,bZ,arguments.length>1)},removeProp:function(e){e=bG.propFix[e]||e;return
 this.each(function(){try{this[e]=aB;delete 
this[e]}catch(bZ){}})},addClass:function(b2){var 
b4,b0,bZ,b1,b3,b5,e;if(bG.isFunction(b2)){return 
this.each(function(b6){bG(this).addClass(b2.call(this,b6,this.className))})}if(b2&&typeof
 
b2==="string"){b4=b2.split(aV);for(b0=0,bZ=this.length;b0<bZ;b0++){b1=this[b0];if(b
 1.nodeType===1){if(!b1.className&&b4.length===1){b1.className=b2}else{b3=" 
"+b1.className+" ";for(b5=0,e=b4.length;b5<e;b5++){if(!~b3.indexOf(" "+b4[b5]+" 
")){b3+=b4[b5]+" "}}b1.className=bG.trim(b3)}}}}return 
this},removeClass:function(b4){var 
b1,b2,b3,b5,bZ,b0,e;if(bG.isFunction(b4)){return 
this.each(function(b6){bG(this).removeClass(b4.call(this,b6,this.className))})}if((b4&&typeof
 
b4==="string")||b4===aB){b1=(b4||"").split(aV);for(b0=0,e=this.length;b0<e;b0++){b3=this[b0];if(b3.nodeType===1&&b3.className){b2=("
 "+b3.className+" ").replace(bJ," 
");for(b5=0,bZ=b1.length;b5<bZ;b5++){while(b2.indexOf(" "+b1[b5]+" 
")>-1){b2=b2.replace(" "+b1[b5]+" "," 
")}}b3.className=b4?bG.trim(b2):""}}}return 
this},toggleClass:function(b1,bZ){var b0=typeof b1,e=typeof 
bZ==="boolean";if(bG.isFunction(b1)){return 
this.each(function(b2){bG(this).toggleClass(b1.call(this,b2,this.className,bZ),bZ)})}return
 this.each(function(){if(b0==="string"){var 
b4,b3=0,b2=bG(this),b5=bZ,b6=b1.split(aV);while((b4=b6[
 
b3++])){b5=e?b5:!b2.hasClass(b4);b2[b5?"addClass":"removeClass"](b4)}}else{if(b0==="undefined"||b0==="boolean"){if(this.className){bG._data(this,"__className__",this.className)}this.className=this.className||b1===false?"":bG._data(this,"__className__")||""}}})},hasClass:function(e){var
 b1=" "+e+" ",b0=0,bZ=this.length;for(;b0<bZ;b0++){if(this[b0].nodeType===1&&(" 
"+this[b0].className+" ").replace(bJ," ").indexOf(b1)>-1){return true}}return 
false},val:function(b1){var 
e,bZ,b2,b0=this[0];if(!arguments.length){if(b0){e=bG.valHooks[b0.type]||bG.valHooks[b0.nodeName.toLowerCase()];if(e&&"get"
 in e&&(bZ=e.get(b0,"value"))!==aB){return bZ}bZ=b0.value;return typeof 
bZ==="string"?bZ.replace(ai,""):bZ==null?"":bZ}return}b2=bG.isFunction(b1);return
 this.each(function(b4){var 
b5,b3=bG(this);if(this.nodeType!==1){return}if(b2){b5=b1.call(this,b4,b3.val())}else{b5=b1}if(b5==null){b5=""}else{if(typeof
 b5==="number"){b5+=""}else{if(bG.isArray(b5)){b5=bG.map(b5,function(b6){return 
b6==null?"":b6+""}
 
)}}}e=bG.valHooks[this.type]||bG.valHooks[this.nodeName.toLowerCase()];if(!e||!("set"
 in 
e)||e.set(this,b5,"value")===aB){this.value=b5}})}});bG.extend({valHooks:{option:{get:function(e){var
 bZ=e.attributes.value;return 
!bZ||bZ.specified?e.value:e.text}},select:{get:function(e){var 
b4,bZ,b3,b1,b2=e.selectedIndex,b5=[],b6=e.options,b0=e.type==="select-one";if(b2<0){return
 
null}bZ=b0?b2:0;b3=b0?b2+1:b6.length;for(;bZ<b3;bZ++){b1=b6[bZ];if(b1.selected&&(bG.support.optDisabled?!b1.disabled:b1.getAttribute("disabled")===null)&&(!b1.parentNode.disabled||!bG.nodeName(b1.parentNode,"optgroup"))){b4=bG(b1).val();if(b0){return
 b4}b5.push(b4)}}if(b0&&!b5.length&&b6.length){return bG(b6[b2]).val()}return 
b5},set:function(bZ,b0){var 
e=bG.makeArray(b0);bG(bZ).find("option").each(function(){this.selected=bG.inArray(bG(this).val(),e)>=0});if(!e.length){bZ.selectedIndex=-1}return
 e}}},attrFn:{},attr:function(b4,b1,b5,b3){var 
b0,e,b2,bZ=b4.nodeType;if(!b4||bZ===3||bZ===8||bZ===2){return}if(b3&&bG.isF
 unction(bG.fn[b1])){return bG(b4)[b1](b5)}if(typeof 
b4.getAttribute==="undefined"){return 
bG.prop(b4,b1,b5)}b2=bZ!==1||!bG.isXMLDoc(b4);if(b2){b1=b1.toLowerCase();e=bG.attrHooks[b1]||(M.test(b1)?bV:a7)}if(b5!==aB){if(b5===null){bG.removeAttr(b4,b1);return}else{if(e&&"set"
 in e&&b2&&(b0=e.set(b4,b5,b1))!==aB){return 
b0}else{b4.setAttribute(b1,""+b5);return b5}}}else{if(e&&"get" in 
e&&b2&&(b0=e.get(b4,b1))!==null){return b0}else{b0=b4.getAttribute(b1);return 
b0===null?aB:b0}}},removeAttr:function(b1,b3){var 
b2,b4,bZ,e,b0=0;if(b3&&b1.nodeType===1){b4=b3.split(aV);for(;b0<b4.length;b0++){bZ=b4[b0];if(bZ){b2=bG.propFix[bZ]||bZ;e=M.test(bZ);if(!e){bG.attr(b1,bZ,"")}b1.removeAttribute(bL?bZ:b2);if(e&&b2
 in 
b1){b1[b2]=false}}}}},attrHooks:{type:{set:function(e,bZ){if(j.test(e.nodeName)&&e.parentNode){bG.error("type
 property can't be 
changed")}else{if(!bG.support.radioValue&&bZ==="radio"&&bG.nodeName(e,"input")){var
 b0=e.value;e.setAttribute("type",bZ);if(b0){e.value=b0}return bZ}}}},value:{
 get:function(bZ,e){if(a7&&bG.nodeName(bZ,"button")){return a7.get(bZ,e)}return 
e in 
bZ?bZ.value:null},set:function(bZ,b0,e){if(a7&&bG.nodeName(bZ,"button")){return 
a7.set(bZ,b0,e)}bZ.value=b0}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(b3,b1,b4){var
 
b0,e,b2,bZ=b3.nodeType;if(!b3||bZ===3||bZ===8||bZ===2){return}b2=bZ!==1||!bG.isXMLDoc(b3);if(b2){b1=bG.propFix[b1]||b1;e=bG.propHooks[b1]}if(b4!==aB){if(e&&"set"
 in e&&(b0=e.set(b3,b4,b1))!==aB){return 
b0}else{return(b3[b1]=b4)}}else{if(e&&"get" in 
e&&(b0=e.get(b3,b1))!==null){return b0}else{return 
b3[b1]}}},propHooks:{tabIndex:{get:function(bZ){var 
e=bZ.getAttributeNode("tabindex");return 
e&&e.specified?parseInt(e.value,10):aA.test(bZ.nodeName)||E.test(bZ.nodeName)&&bZ.href?0:aB}}}});bV={get:func
 tion(bZ,e){var b1,b0=bG.prop(bZ,e);return b0===true||typeof 
b0!=="boolean"&&(b1=bZ.getAttributeNode(e))&&b1.nodeValue!==false?e.toLowerCase():aB},set:function(bZ,b1,e){var
 b0;if(b1===false){bG.removeAttr(bZ,e)}else{b0=bG.propFix[e]||e;if(b0 in 
bZ){bZ[b0]=true}bZ.setAttribute(e,e.toLowerCase())}return 
e}};if(!bL){n={name:true,id:true,coords:true};a7=bG.valHooks.button={get:function(b0,bZ){var
 e;e=b0.getAttributeNode(bZ);return 
e&&(n[bZ]?e.value!=="":e.specified)?e.value:aB},set:function(b0,b1,bZ){var 
e=b0.getAttributeNode(bZ);if(!e){e=o.createAttribute(bZ);b0.setAttributeNode(e)}return(e.value=b1+"")}};bG.each(["width","height"],function(bZ,e){bG.attrHooks[e]=bG.extend(bG.attrHooks[e],{set:function(b0,b1){if(b1===""){b0.setAttribute(e,"auto");return
 
b1}}})});bG.attrHooks.contenteditable={get:a7.get,set:function(bZ,b0,e){if(b0===""){b0="false"}a7.set(bZ,b0,e)}}}if(!bG.support.hrefNormalized){bG.each(["href","src","width","height"],function(bZ,e){bG.attrHooks[e]=bG.extend(bG.attrHooks[
 e],{get:function(b1){var b0=b1.getAttribute(e,2);return 
b0===null?aB:b0}})})}if(!bG.support.style){bG.attrHooks.style={get:function(e){return
 
e.style.cssText.toLowerCase()||aB},set:function(e,bZ){return(e.style.cssText=""+bZ)}}}if(!bG.support.optSelected){bG.propHooks.selected=bG.extend(bG.propHooks.selected,{get:function(bZ){var
 
e=bZ.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return
 
null}})}if(!bG.support.enctype){bG.propFix.enctype="encoding"}if(!bG.support.checkOn){bG.each(["radio","checkbox"],function(){bG.valHooks[this]={get:function(e){return
 
e.getAttribute("value")===null?"on":e.value}}})}bG.each(["radio","checkbox"],function(){bG.valHooks[this]=bG.extend(bG.valHooks[this],{set:function(e,bZ){if(bG.isArray(bZ)){return(e.checked=bG.inArray(bG(e).val(),bZ)>=0)}}})});var
 
bE=/^(?:textarea|input|select)$/i,br=/^([^\.]*|)(?:\.(.+)|)$/,ba=/(?:^|\s)hover(\.\S+|)\b/,a3=/^key/,bK=/^(?:mouse|contextmenu)|click/,by=/^(?:focusinfocus|focusoutblur)$/,aq=f
 unction(e){return bG.event.special.hover?e:e.replace(ba,"mouseenter$1 
mouseleave$1")};bG.event={add:function(b1,b5,cc,b3,b2){var 
b6,b4,cd,cb,ca,b8,e,b9,bZ,b0,b7;if(b1.nodeType===3||b1.nodeType===8||!b5||!cc||!(b6=bG._data(b1))){return}if(cc.handler){bZ=cc;cc=bZ.handler;b2=bZ.selector}if(!cc.guid){cc.guid=bG.guid++}cd=b6.events;if(!cd){b6.events=cd={}}b4=b6.handle;if(!b4){b6.handle=b4=function(ce){return
 typeof 
bG!=="undefined"&&(!ce||bG.event.triggered!==ce.type)?bG.event.dispatch.apply(b4.elem,arguments):aB};b4.elem=b1}b5=bG.trim(aq(b5)).split("
 
");for(cb=0;cb<b5.length;cb++){ca=br.exec(b5[cb])||[];b8=ca[1];e=(ca[2]||"").split(".").sort();b7=bG.event.special[b8]||{};b8=(b2?b7.delegateType:b7.bindType)||b8;b7=bG.event.special[b8]||{};b9=bG.extend({type:b8,origType:ca[1],data:b3,handler:cc,guid:cc.guid,selector:b2,namespace:e.join(".")},bZ);b0=cd[b8];if(!b0){b0=cd[b8]=[];b0.delegateCount=0;if(!b7.setup||b7.setup.call(b1,b3,e,b4)===false){if(b1.addEventListener){b1.addEventListener(b8
 
,b4,false)}else{if(b1.attachEvent){b1.attachEvent("on"+b8,b4)}}}}if(b7.add){b7.add.call(b1,b9);if(!b9.handler.guid){b9.handler.guid=cc.guid}}if(b2){b0.splice(b0.delegateCount++,0,b9)}else{b0.push(b9)}bG.event.global[b8]=true}b1=null},global:{},remove:function(b1,b6,cc,b2,b5){var
 
cd,ce,b9,b0,bZ,b3,b4,cb,b8,e,ca,b7=bG.hasData(b1)&&bG._data(b1);if(!b7||!(cb=b7.events)){return}b6=bG.trim(aq(b6||"")).split("
 
");for(cd=0;cd<b6.length;cd++){ce=br.exec(b6[cd])||[];b9=b0=ce[1];bZ=ce[2];if(!b9){for(b9
 in 
cb){bG.event.remove(b1,b9+b6[cd],cc,b2,true)}continue}b8=bG.event.special[b9]||{};b9=(b2?b8.delegateType:b8.bindType)||b9;e=cb[b9]||[];b3=e.length;bZ=bZ?new
 
RegExp("(^|\\.)"+bZ.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(b4=0;b4<e.length;b4++){ca=e[b4];if((b5||b0===ca.origType)&&(!cc||cc.guid===ca.guid)&&(!bZ||bZ.test(ca.namespace))&&(!b2||b2===ca.selector||b2==="**"&&ca.selector)){e.splice(b4--,1);if(ca.selector){e.delegateCount--}if(b8.remove){b8.remove.call(b1,ca)}}}if(e.le
 
ngth===0&&b3!==e.length){if(!b8.teardown||b8.teardown.call(b1,bZ,b7.handle)===false){bG.removeEvent(b1,b9,b7.handle)}delete
 cb[b9]}}if(bG.isEmptyObject(cb)){delete 
b7.handle;bG.removeData(b1,"events",true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bZ,b6,b4,cd){if(b4&&(b4.nodeType===3||b4.nodeType===8)){return}var
 
e,b1,b7,cb,b3,b2,b9,b8,b5,cc,ca=bZ.type||bZ,b0=[];if(by.test(ca+bG.event.triggered)){return}if(ca.indexOf("!")>=0){ca=ca.slice(0,-1);b1=true}if(ca.indexOf(".")>=0){b0=ca.split(".");ca=b0.shift();b0.sort()}if((!b4||bG.event.customEvent[ca])&&!bG.event.global[ca]){return}bZ=typeof
 bZ==="object"?bZ[bG.expando]?bZ:new bG.Event(ca,bZ):new 
bG.Event(ca);bZ.type=ca;bZ.isTrigger=true;bZ.exclusive=b1;bZ.namespace=b0.join(".");bZ.namespace_re=bZ.namespace?new
 
RegExp("(^|\\.)"+b0.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b2=ca.indexOf(":")<0?"on"+ca:"";if(!b4){e=bG.cache;for(b7
 in 
e){if(e[b7].events&&e[b7].events[ca]){bG.event.trigger(bZ,b6,e[b7].handle.ele
 
m,true)}}return}bZ.result=aB;if(!bZ.target){bZ.target=b4}b6=b6!=null?bG.makeArray(b6):[];b6.unshift(bZ);b9=bG.event.special[ca]||{};if(b9.trigger&&b9.trigger.apply(b4,b6)===false){return}b5=[[b4,b9.bindType||ca]];if(!cd&&!b9.noBubble&&!bG.isWindow(b4)){cc=b9.delegateType||ca;cb=by.test(cc+ca)?b4:b4.parentNode;for(b3=b4;cb;cb=cb.parentNode){b5.push([cb,cc]);b3=cb}if(b3===(b4.ownerDocument||o)){b5.push([b3.defaultView||b3.parentWindow||a2,cc])}}for(b7=0;b7<b5.length&&!bZ.isPropagationStopped();b7++){cb=b5[b7][0];bZ.type=b5[b7][1];b8=(bG._data(cb,"events")||{})[bZ.type]&&bG._data(cb,"handle");if(b8){b8.apply(cb,b6)}b8=b2&&cb[b2];if(b8&&bG.acceptData(cb)&&b8.apply(cb,b6)===false){bZ.preventDefault()}}bZ.type=ca;if(!cd&&!bZ.isDefaultPrevented()){if((!b9._default||b9._default.apply(b4.ownerDocument,b6)===false)&&!(ca==="click"&&bG.nodeName(b4,"a"))&&bG.acceptData(b4)){if(b2&&b4[ca]&&((ca!=="focus"&&ca!=="blur")||bZ.target.offsetWidth!==0)&&!bG.isWindow(b4)){b3=b4[b2];if(b3){b4[b2]=null}bG
 .event.triggered=ca;b4[ca]();bG.event.triggered=aB;if(b3){b4[b2]=b3}}}}return 
bZ.result},dispatch:function(cb){cb=bG.event.fix(cb||a2.event);var 
cd,ca,b2,b4,ce,cc,b5,b0,e,b9,cf,b7=((bG._data(this,"events")||{})[cb.type]||[]),b6=b7.delegateCount,b1=[].slice.call(arguments),b8=!cb.exclusive&&!cb.namespace,b3=bG.event.special[cb.type]||{},bZ=[];b1[0]=cb;cb.delegateTarget=this;if(b3.preDispatch&&b3.preDispatch.call(this,cb)===false){return}if(b6&&!(cb.button&&cb.type==="click")){b4=bG(this);b4.context=this;for(b2=cb.target;b2!=this;b2=b2.parentNode||this){if(b2.disabled!==true||cb.type!=="click"){cc={};b0=[];b4[0]=b2;for(cd=0;cd<b6;cd++){e=b7[cd];b9=e.selector;if(cc[b9]===aB){cc[b9]=b4.is(b9)}if(cc[b9]){b0.push(e)}}if(b0.length){bZ.push({elem:b2,matches:b0})}}}}if(b7.length>b6){bZ.push({elem:this,matches:b7.slice(b6)})}for(cd=0;cd<bZ.length&&!cb.isPropagationStopped();cd++){b5=bZ[cd];cb.currentTarget=b5.elem;for(ca=0;ca<b5.matches.length&&!cb.isImmediatePropagationStopped();ca++){e=b5.m
 
atches[ca];if(b8||(!cb.namespace&&!e.namespace)||cb.namespace_re&&cb.namespace_re.test(e.namespace)){cb.data=e.data;cb.handleObj=e;ce=((bG.event.special[e.origType]||{}).handle||e.handler).apply(b5.elem,b1);if(ce!==aB){cb.result=ce;if(ce===false){cb.preventDefault();cb.stopPropagation()}}}}}if(b3.postDispatch){b3.postDispatch.call(this,cb)}return
 cb.result},props:"attrChange attrName relatedNode srcElement altKey bubbles 
cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey 
target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char 
charCode key keyCode".split(" 
"),filter:function(bZ,e){if(bZ.which==null){bZ.which=e.charCode!=null?e.charCode:e.keyCode}return
 bZ}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX 
offsetY pageX pageY screenX screenY toElement".split(" 
"),filter:function(b1,b0){var 
b2,b3,e,bZ=b0.button,b4=b0.fromElement;if(b1.pageX==null&&b0.clientX!=null){b2=b1.target.ownerDocument||o;b3=b2.documentElement;e=b2.bo
 
dy;b1.pageX=b0.clientX+(b3&&b3.scrollLeft||e&&e.scrollLeft||0)-(b3&&b3.clientLeft||e&&e.clientLeft||0);b1.pageY=b0.clientY+(b3&&b3.scrollTop||e&&e.scrollTop||0)-(b3&&b3.clientTop||e&&e.clientTop||0)}if(!b1.relatedTarget&&b4){b1.relatedTarget=b4===b1.target?b0.toElement:b4}if(!b1.which&&bZ!==aB){b1.which=(bZ&1?1:(bZ&2?3:(bZ&4?2:0)))}return
 b1}},fix:function(b0){if(b0[bG.expando]){return b0}var 
bZ,b3,e=b0,b1=bG.event.fixHooks[b0.type]||{},b2=b1.props?this.props.concat(b1.props):this.props;b0=bG.Event(e);for(bZ=b2.length;bZ;){b3=b2[--bZ];b0[b3]=e[b3]}if(!b0.target){b0.target=e.srcElement||o}if(b0.target.nodeType===3){b0.target=b0.target.parentNode}b0.metaKey=!!b0.metaKey;return
 
b1.filter?b1.filter(b0,e):b0},special:{ready:{setup:bG.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(b0,bZ,e){if(bG.isWindow(this)){this.onbeforeunload=e}},teardown:function(bZ,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}}
 ,simulate:function(b0,b2,b1,bZ){var b3=bG.extend(new 
bG.Event(),b1,{type:b0,isSimulated:true,originalEvent:{}});if(bZ){bG.event.trigger(b3,null,b2)}else{bG.event.dispatch.call(b2,b3)}if(b3.isDefaultPrevented()){b1.preventDefault()}}};bG.event.handle=bG.event.dispatch;bG.removeEvent=o.removeEventListener?function(bZ,e,b0){if(bZ.removeEventListener){bZ.removeEventListener(e,b0,false)}}:function(b0,bZ,b1){var
 e="on"+bZ;if(b0.detachEvent){if(typeof 
b0[e]==="undefined"){b0[e]=null}b0.detachEvent(e,b1)}};bG.Event=function(bZ,e){if(!(this
 instanceof bG.Event)){return new 
bG.Event(bZ,e)}if(bZ&&bZ.type){this.originalEvent=bZ;this.type=bZ.type;this.isDefaultPrevented=(bZ.defaultPrevented||bZ.returnValue===false||bZ.getPreventDefault&&bZ.getPreventDefault())?R:X}else{this.type=bZ}if(e){bG.extend(this,e)}this.timeStamp=bZ&&bZ.timeStamp||bG.now();this[bG.expando]=true};function
 X(){return false}function R(){return 
true}bG.Event.prototype={preventDefault:function(){this.isDefaultPrevented=R;var
 b
 
Z=this.originalEvent;if(!bZ){return}if(bZ.preventDefault){bZ.preventDefault()}else{bZ.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=R;var
 
bZ=this.originalEvent;if(!bZ){return}if(bZ.stopPropagation){bZ.stopPropagation()}bZ.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=R;this.stopPropagation()},isDefaultPrevented:X,isPropagationStopped:X,isImmediatePropagationStopped:X};bG.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bZ,e){bG.event.special[bZ]={delegateType:e,bindType:e,handle:function(b3){var
 
b1,b5=this,b4=b3.relatedTarget,b2=b3.handleObj,b0=b2.selector;if(!b4||(b4!==b5&&!bG.contains(b5,b4))){b3.type=b2.origType;b1=b2.handler.apply(this,arguments);b3.type=e}return
 
b1}}});if(!bG.support.submitBubbles){bG.event.special.submit={setup:function(){if(bG.nodeName(this,"form")){return
 false}bG.event.add(this,"click._submit keypress._submit",function(b1){var 
b0=b1.target,bZ=bG.nodeName(b0,"input")||bG.nodeN
 
ame(b0,"button")?b0.form:aB;if(bZ&&!bG._data(bZ,"_submit_attached")){bG.event.add(bZ,"submit._submit",function(e){e._submit_bubble=true});bG._data(bZ,"_submit_attached",true)}})},postDispatch:function(e){if(e._submit_bubble){delete
 
e._submit_bubble;if(this.parentNode&&!e.isTrigger){bG.event.simulate("submit",this.parentNode,e,true)}}},teardown:function(){if(bG.nodeName(this,"form")){return
 
false}bG.event.remove(this,"._submit")}}}if(!bG.support.changeBubbles){bG.event.special.change={setup:function(){if(bE.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){bG.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});bG.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false}bG.event.simulate("change",this,e,true)})}return
 false}bG.event.add(this,"beforeactivate._change",function(b0){var 
bZ=b0.target;if(bE.test(bZ.nodeName)&&!bG._data(bZ,"_change_attach
 
ed")){bG.event.add(bZ,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){bG.event.simulate("change",this.parentNode,e,true)}});bG._data(bZ,"_change_attached",true)}})},handle:function(bZ){var
 
e=bZ.target;if(this!==e||bZ.isSimulated||bZ.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return
 
bZ.handleObj.handler.apply(this,arguments)}},teardown:function(){bG.event.remove(this,"._change");return
 
bE.test(this.nodeName)}}}if(!bG.support.focusinBubbles){bG.each({focus:"focusin",blur:"focusout"},function(b1,e){var
 
bZ=0,b0=function(b2){bG.event.simulate(e,b2.target,bG.event.fix(b2),true)};bG.event.special[e]={setup:function(){if(bZ++===0){o.addEventListener(b1,b0,true)}},teardown:function(){if(--bZ===0){o.removeEventListener(b1,b0,true)}}}})}bG.fn.extend({on:function(b0,e,b3,b2,bZ){var
 b4,b1;if(typeof b0==="object"){if(typeof e!=="string"){b3=b3||e;e=aB}for(b1 in 
b0){this.on(b1,e,b3,b0[b1],bZ)}return 
this}if(b3==null&&b2==null){b2=e;b3=e=aB}else{if(b2==null){
 if(typeof 
e==="string"){b2=b3;b3=aB}else{b2=b3;b3=e;e=aB}}}if(b2===false){b2=X}else{if(!b2){return
 this}}if(bZ===1){b4=b2;b2=function(b5){bG().off(b5);return 
b4.apply(this,arguments)};b2.guid=b4.guid||(b4.guid=bG.guid++)}return 
this.each(function(){bG.event.add(this,b0,b2,b3,e)})},one:function(bZ,e,b1,b0){return
 this.on(bZ,e,b1,b0,1)},off:function(b0,e,b2){var 
bZ,b1;if(b0&&b0.preventDefault&&b0.handleObj){bZ=b0.handleObj;bG(b0.delegateTarget).off(bZ.namespace?bZ.origType+"."+bZ.namespace:bZ.origType,bZ.selector,bZ.handler);return
 this}if(typeof b0==="object"){for(b1 in b0){this.off(b1,e,b0[b1])}return 
this}if(e===false||typeof e==="function"){b2=e;e=aB}if(b2===false){b2=X}return 
this.each(function(){bG.event.remove(this,b0,b2,e)})},bind:function(e,b0,bZ){return
 this.on(e,null,b0,bZ)},unbind:function(e,bZ){return 
this.off(e,null,bZ)},live:function(e,b0,bZ){bG(this.context).on(e,this.selector,b0,bZ);return
 this},die:function(e,bZ){bG(this.context).off(e,this.selector||"**",bZ);return 
 this},delegate:function(e,bZ,b1,b0){return 
this.on(bZ,e,b1,b0)},undelegate:function(e,bZ,b0){return 
arguments.length==1?this.off(e,"**"):this.off(bZ,e||"**",b0)},trigger:function(e,bZ){return
 
this.each(function(){bG.event.trigger(e,bZ,this)})},triggerHandler:function(e,bZ){if(this[0]){return
 bG.event.trigger(e,bZ,this[0],true)}},toggle:function(b1){var 
bZ=arguments,e=b1.guid||bG.guid++,b0=0,b2=function(b3){var 
b4=(bG._data(this,"lastToggle"+b1.guid)||0)%b0;bG._data(this,"lastToggle"+b1.guid,b4+1);b3.preventDefault();return
 
bZ[b4].apply(this,arguments)||false};b2.guid=e;while(b0<bZ.length){bZ[b0++].guid=e}return
 this.click(b2)},hover:function(e,bZ){return 
this.mouseenter(e).mouseleave(bZ||e)}});bG.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(bZ,e){bG.fn[e]=function(b1,b0){if(b0==null){b0=b1;b1=null}retu
 rn 
arguments.length>0?this.on(e,null,b1,b0):this.trigger(e)};if(a3.test(e)){bG.event.fixHooks[e]=bG.event.keyHooks}if(bK.test(e)){bG.event.fixHooks[e]=bG.event.mouseHooks}});
+/*!
+ * Sizzle CSS Selector Engine
+ *  Copyright 2012 jQuery Foundation and other contributors
+ *  Released under the MIT license
+ *  http://sizzlejs.com/
+ */

[... 3 lines stripped ...]
Added: release/metron/0.4.0/site-book/metron-analytics/index.html
==============================================================================
--- release/metron/0.4.0/site-book/metron-analytics/index.html (added)
+++ release/metron/0.4.0/site-book/metron-analytics/index.html Wed Jul  5 
06:56:42 2017
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2017-06-27
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20170627" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Metron &#x2013; Metron Analytics</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" 
src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+                          
+        
+<script type="text/javascript">$( document ).ready( function() { $( 
'.carousel' ).carousel( { interval: 3500 } ) } );</script>
+          
+            </head>
+        <body class="topBarDisabled">
+          
+                
+                    
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                    <a href="http://metron.apache.org/"; 
id="bannerLeft">
+                                                                               
                 <img src="../images/metron-logo.png"  alt="Apache Metron" 
width="148px" height="48px"/>
+                </a>
+                      </div>
+        <div class="pull-right">  </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org"; class="externalLink" 
title="Apache">
+        Apache</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="http://metron.apache.org/"; class="externalLink" 
title="Metron">
+        Metron</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="../index.html" title="Documentation">
+        Documentation</a>
+        </li>
+      <li class="divider ">/</li>
+        <li class="">Metron Analytics</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-27</li> <li class="divider pull-right">|</li>
+              <li id="projectVersion" class="pull-right">Version: 0.4.0</li>
+            
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">User Documentation</li>
+                                                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
           
+      <li>
+    
+                          <a href="../index.html" title="Metron">
+          <i class="icon-chevron-down"></i>
+        Metron</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../Upgrading.html" title="Upgrading">
+          <i class="none"></i>
+        Upgrading</a>
+            </li>
+                                                                               
                                                                           
+      <li class="active">
+    
+            <a href="#"><i class="icon-chevron-down"></i>Analytics</a>
+                  <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a 
href="../metron-analytics/metron-maas-service/index.html" title="Maas-service">
+          <i class="none"></i>
+        Maas-service</a>
+            </li>
+                      
+      <li>
+    
+                          <a 
href="../metron-analytics/metron-profiler/index.html" title="Profiler">
+          <i class="none"></i>
+        Profiler</a>
+            </li>
+                      
+      <li>
+    
+                          <a 
href="../metron-analytics/metron-profiler-client/index.html" 
title="Profiler-client">
+          <i class="none"></i>
+        Profiler-client</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a 
href="../metron-analytics/metron-statistics/index.html" title="Statistics">
+          <i class="icon-chevron-right"></i>
+        Statistics</a>
+                  </li>
+              </ul>
+        </li>
+                                                                               
                                                                                
                                                                                
                                                                                
                                                     
+      <li>
+    
+                          <a href="../metron-deployment/index.html" 
title="Deployment">
+          <i class="icon-chevron-right"></i>
+        Deployment</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../metron-docker/index.html" title="Docker">
+          <i class="none"></i>
+        Docker</a>
+            </li>
+                      
+      <li>
+    
+                          <a 
href="../metron-interface/metron-config/index.html" title="Config">
+          <i class="none"></i>
+        Config</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../metron-interface/metron-rest/index.html" 
title="Rest">
+          <i class="none"></i>
+        Rest</a>
+            </li>
+                                                                               
                                                                                
                                                                                
 
+      <li>
+    
+                          <a href="../metron-platform/index.html" 
title="Platform">
+          <i class="icon-chevron-right"></i>
+        Platform</a>
+                  </li>
+                                                                               
                             
+      <li>
+    
+                          <a href="../metron-sensors/index.html" 
title="Sensors">
+          <i class="icon-chevron-right"></i>
+        Sensors</a>
+                  </li>
+              </ul>
+        </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                             <a href="http://maven.apache.org/"; title="Built 
by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" 
src="../images/logos/maven-feather.png" />
+      </a>
+                  </div>
+          </div>
+        </div>
+        
+                
+        <div id="bodyColumn"  class="span9" >
+                                  
+            <h1>Metron Analytics</h1>
+<p><a name="Metron_Analytics"></a></p>
+<p>Metron analytics consists of:</p>
+
+<ul>
+  
+<li>Model-as-a-Service (MAAS) access to Machine Learning services</li>
+  
+<li>Profiler and Profiler Client</li>
+  
+<li>Statistics</li>
+</ul>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2017
+                        <a href="https://www.apache.org";>The Apache Software 
Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+                          
+        
+                </div>
+    </footer>
+  </body>
+</html>

Added: 
release/metron/0.4.0/site-book/metron-analytics/metron-maas-service/index.html
==============================================================================
--- 
release/metron/0.4.0/site-book/metron-analytics/metron-maas-service/index.html 
(added)
+++ 
release/metron/0.4.0/site-book/metron-analytics/metron-maas-service/index.html 
Wed Jul  5 06:56:42 2017
@@ -0,0 +1,487 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2017-06-27
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20170627" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Metron &#x2013; Model Management Infrastructure</title>
+    <link rel="stylesheet" href="../../css/apache-maven-fluido-1.3.0.min.css" 
/>
+    <link rel="stylesheet" href="../../css/site.css" />
+    <link rel="stylesheet" href="../../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" 
src="../../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+                          
+        
+<script type="text/javascript">$( document ).ready( function() { $( 
'.carousel' ).carousel( { interval: 3500 } ) } );</script>
+          
+            </head>
+        <body class="topBarDisabled">
+          
+                
+                    
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                    <a href="http://metron.apache.org/"; 
id="bannerLeft">
+                                                                               
                 <img src="../../images/metron-logo.png"  alt="Apache Metron" 
width="148px" height="48px"/>
+                </a>
+                      </div>
+        <div class="pull-right">  </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org"; class="externalLink" 
title="Apache">
+        Apache</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="http://metron.apache.org/"; class="externalLink" 
title="Metron">
+        Metron</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="../../index.html" title="Documentation">
+        Documentation</a>
+        </li>
+      <li class="divider ">/</li>
+        <li class="">Model Management Infrastructure</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-27</li> <li class="divider pull-right">|</li>
+              <li id="projectVersion" class="pull-right">Version: 0.4.0</li>
+            
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">User Documentation</li>
+                                                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
           
+      <li>
+    
+                          <a href="../../index.html" title="Metron">
+          <i class="icon-chevron-down"></i>
+        Metron</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../Upgrading.html" title="Upgrading">
+          <i class="none"></i>
+        Upgrading</a>
+            </li>
+                                                                               
                                                                                
 
+      <li>
+    
+                          <a href="../../metron-analytics/index.html" 
title="Analytics">
+          <i class="icon-chevron-down"></i>
+        Analytics</a>
+                    <ul class="nav nav-list">
+                      
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Maas-service</a>
+          </li>
+                      
+      <li>
+    
+                          <a 
href="../../metron-analytics/metron-profiler/index.html" title="Profiler">
+          <i class="none"></i>
+        Profiler</a>
+            </li>
+                      
+      <li>
+    
+                          <a 
href="../../metron-analytics/metron-profiler-client/index.html" 
title="Profiler-client">
+          <i class="none"></i>
+        Profiler-client</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a 
href="../../metron-analytics/metron-statistics/index.html" title="Statistics">
+          <i class="icon-chevron-right"></i>
+        Statistics</a>
+                  </li>
+              </ul>
+        </li>
+                                                                               
                                                                                
                                                                                
                                                                                
                                                     
+      <li>
+    
+                          <a href="../../metron-deployment/index.html" 
title="Deployment">
+          <i class="icon-chevron-right"></i>
+        Deployment</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../metron-docker/index.html" 
title="Docker">
+          <i class="none"></i>
+        Docker</a>
+            </li>
+                      
+      <li>
+    
+                          <a 
href="../../metron-interface/metron-config/index.html" title="Config">
+          <i class="none"></i>
+        Config</a>
+            </li>
+                      
+      <li>
+    
+                          <a 
href="../../metron-interface/metron-rest/index.html" title="Rest">
+          <i class="none"></i>
+        Rest</a>
+            </li>
+                                                                               
                                                                                
                                                                                
 
+      <li>
+    
+                          <a href="../../metron-platform/index.html" 
title="Platform">
+          <i class="icon-chevron-right"></i>
+        Platform</a>
+                  </li>
+                                                                               
                             
+      <li>
+    
+                          <a href="../../metron-sensors/index.html" 
title="Sensors">
+          <i class="icon-chevron-right"></i>
+        Sensors</a>
+                  </li>
+              </ul>
+        </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                             <a href="http://maven.apache.org/"; title="Built 
by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" 
src="../../images/logos/maven-feather.png" />
+      </a>
+                  </div>
+          </div>
+        </div>
+        
+                
+        <div id="bodyColumn"  class="span9" >
+                                  
+            <h1>Model Management Infrastructure</h1>
+<p><a name="Model_Management_Infrastructure"></a></p>
+<div class="section">
+<h2><a name="Introduction"></a>Introduction</h2>
+<p>One of the main features envisioned and requested is the ability to augment 
the threat intelligence and enrichment processes with insights derived from 
machine learning or statistical models. The challenges with this sort of 
infrastructure are</p>
+
+<ul>
+  
+<li>Applying the model may be sufficiently computationally/resource intensive 
that we need to support scaling via load balancing, which will require service 
discovery and management.</li>
+  
+<li>Models require out of band and frequent training to react to growing 
threats and new patterns that emerge.</li>
+  
+<li>Models should be language/environment agnostic as much as possible. These 
should include small-data and big-data libraries and languages.</li>
+</ul>
+<p>To support a high throughput environment that is manageable, it is evident 
that </p>
+
+<ul>
+  
+<li>Multiple versions of models will need to be exposed</li>
+  
+<li>Deployment should happen using Yarn to manage resources</li>
+  
+<li>Clients should have new model endpoints pushed to them</li>
+</ul></div>
+<div class="section">
+<h2><a name="Architecture"></a>Architecture</h2>
+<p><img src="../../images/maas_arch.png" alt="Architecture" /></p>
+<p>To support these requirements, the following components have been 
created:</p>
+
+<ul>
+  
+<li>A Yarn application which will listen for model deployment requests and 
upon execution, register their endpoints in zookeeper:
+  
+<ul>
+    
+<li>Operation type: ADD, REMOVE, LIST</li>
+    
+<li>Model Name</li>
+    
+<li>Model Version</li>
+    
+<li>Memory requirements (in megabytes)</li>
+    
+<li>Number of instances</li>
+  </ul></li>
+  
+<li>A command line deployment client which will localize the model payload 
onto HDFS and submit a model request</li>
+  
+<li>A Java client which will interact with zookeeper and receive updates about 
model state changes (new deployments, removals, etc.)</li>
+  
+<li>A series of Stellar functions for interacting with models deployed via the 
Model as a Service infrastructure.</li>
+</ul></div>
+<div class="section">
+<h2><a name="maas_service.sh"></a><tt>maas_service.sh</tt></h2>
+<p>The <tt>maas_service.sh</tt> script starts the Yarn application which will 
listen for requests. Right now the queue for the requests is a distributed 
queue stored in <a class="externalLink" 
href="http://curator.apache.org/curator-recipes/distributed-queue.html";>zookeeper</a>
 for convenience.</p>
+
+<div class="source">
+<div class="source">
+<pre>./maas_service.sh
+usage: MaaSClient
+ -c,--create                          Flag to indicate whether to create
+                                      the domain specified with -domain.
+ -d,--domain &lt;arg&gt;                    ID of the timeline domain where the
+                                      timeline entities will be put
+ -e,--shell_env &lt;arg&gt;                 Environment for shell script.
+                                      Specified as env_key=env_val pairs
+ -h,--help                            This screen
+ -j,--jar &lt;arg&gt;                       Jar file containing the application
+                                      master
+ -l,--log4j &lt;arg&gt;                     The log4j properties file to load
+ -ma,--modify_acls &lt;arg&gt;              Users and groups that allowed to
+                                      modify the timeline entities in the
+                                      given domain
+ -mc,--master_vcores &lt;arg&gt;            Amount of virtual cores to be
+                                      requested to run the application
+                                      master
+ -mm,--master_memory &lt;arg&gt;            Amount of memory in MB to be
+                                      requested to run the application
+                                      master
+ -nle,--node_label_expression &lt;arg&gt;   Node label expression to determine
+                                      the nodes where all the containers
+                                      of this application will be
+                                      allocated, &quot;&quot; means containers 
can
+                                      be allocated anywhere, if you don't
+                                      specify the option, default
+                                      node_label_expression of queue will
+                                      be used.
+ -q,--queue &lt;arg&gt;                     RM Queue in which this application
+                                      is to be submitted
+ -t,--timeout &lt;arg&gt;                   Application timeout in milliseconds
+ -va,--view_acls &lt;arg&gt;                Users and groups that allowed to
+                                      view the timeline entities in the
+                                      given domain
+ -zq,--zk_quorum &lt;arg&gt;                Zookeeper Quorum
+ -zr,--zk_root &lt;arg&gt;                  Zookeeper Root
+</pre></div></div></div>
+<div class="section">
+<h2><a name="maas_deploy.sh"></a><tt>maas_deploy.sh</tt></h2>
+<p>The <tt>maas_deploy.sh</tt> script allows users to deploy models and their 
collateral from their local disk to the cluster. It is assumed that the </p>
+
+<ul>
+  
+<li>Collateral has exactly one <tt>.sh</tt> script capable of starting the 
endpoint</li>
+  
+<li>The model service executable will expose itself as a URL endpoint (e.g. as 
a REST interface, but not necessarily)</li>
+  
+<li>The model service executable will write out to local disk a JSON blob 
indicating the endpoint (see <a class="externalLink" 
href="https://gist.github.com/cestella/cba10aff0f970078a4c2c8cade3a4d1a#file-dga-py-L21";>here</a>
 for an example mock service using Python and Flask).</li>
+</ul>
+
+<div class="source">
+<div class="source">
+<pre>./maas_deploy.sh
+usage: ModelSubmission
+ -h,--help                       This screen
+ -hmp,--hdfs_model_path &lt;arg&gt;    Model Path (HDFS)
+ -lmp,--local_model_path &lt;arg&gt;   Model Path (local)
+ -l,--log4j &lt;arg&gt;                The log4j properties file to load
+ -m,--memory &lt;arg&gt;               Memory for container
+ -mo,--mode &lt;arg&gt;                ADD, LIST or REMOVE
+ -n,--name &lt;arg&gt;                 Model Name
+ -ni,--num_instances &lt;arg&gt;       Number of model instances
+ -v,--version &lt;arg&gt;              Model version
+ -zq,--zk_quorum &lt;arg&gt;           Zookeeper Quorum
+ -zr,--zk_root &lt;arg&gt;             Zookeeper Root
+</pre></div></div></div>
+<div class="section">
+<h2><a name="Stellar_Integration"></a>Stellar Integration</h2>
+<p>Two Stellar functions have been added to provide the ability to call out to 
models deployed via Model as a Service. One aimed at recovering a load balanced 
endpoint of a deployed model given the name and, optionally, the version. The 
second is aimed at calling that endpoint assuming that it is exposed as a REST 
endpoint.</p>
+
+<ul>
+  
+<li><tt>MAAS_MODEL_APPLY(endpoint, function?, model_args)</tt> : Returns the 
output of a model deployed via model which is deployed at endpoint. 
<tt>endpoint</tt> is a map containing <tt>name</tt>, <tt>version</tt>, 
<tt>url</tt> for the REST endpoint, <tt>function</tt> is the endpoint path and 
is optional, and <tt>model_args</tt> is a dictionary of arguments for the model 
(these become request params).</li>
+  
+<li><tt>MAAS_GET_ENDPOINT(model_name, model_version?)</tt> : Inspects 
zookeeper and returns a map containing the <tt>name</tt>, <tt>version</tt> and 
<tt>url</tt> for the model referred to by <tt>model_name</tt> and 
<tt>model_version</tt>. If <tt>model_version</tt> is not specified, the most 
current model associated with <tt>model_name</tt> is returned. In the instance 
where more than one model is deployed, a random one is selected with uniform 
probability.</li>
+</ul>
+<p><a name="Example"></a></p>
+<h1>Example</h1>
+<p>Let&#x2019;s augment the <tt>squid</tt> proxy sensor to use a model that 
will determine if the destination host is a domain generating algorithm. For 
the purposes of demonstration, this algorithm is super simple and is 
implemented using Python with a REST interface exposed via the Flask python 
library.</p></div>
+<div class="section">
+<h2><a name="Install_Prerequisites_and_Mock_DGA_Service"></a>Install 
Prerequisites and Mock DGA Service</h2>
+<p>Now let&#x2019;s install some prerequisites:</p>
+
+<ul>
+  
+<li>Flask via <tt>yum install python-flask</tt></li>
+  
+<li>Jinja2 via <tt>yum install python-jinja2</tt></li>
+  
+<li>Squid client via <tt>yum install squid</tt></li>
+  
+<li>ES Head plugin via <tt>/usr/share/elasticsearch/bin/plugin install 
mobz/elasticsearch-head</tt></li>
+</ul>
+<p>Start Squid via <tt>service squid start</tt></p>
+<p>Now that we have flask and jinja, we can create a mock DGA service to 
deploy with MaaS:</p>
+
+<ul>
+  
+<li>Download the files in <a class="externalLink" 
href="https://gist.github.com/cestella/cba10aff0f970078a4c2c8cade3a4d1a";>this</a>
 gist into the <tt>/root/mock_dga</tt> directory</li>
+  
+<li>Make <tt>rest.sh</tt> executable via <tt>chmod +x 
/root/mock_dga/rest.sh</tt></li>
+</ul>
+<p>This service will treat <tt>yahoo.com</tt> and <tt>amazon.com</tt> as legit 
and everything else as malicious. The contract is that the REST service exposes 
an endpoint <tt>/apply</tt> and returns back JSON maps with a single key 
<tt>is_malicious</tt> which can be <tt>malicious</tt> or 
<tt>legit</tt>.</p></div>
+<div class="section">
+<h2><a name="Deploy_Mock_DGA_Service_via_MaaS"></a>Deploy Mock DGA Service via 
MaaS</h2>
+<p>Now let&#x2019;s start MaaS and deploy the Mock DGA Service:</p>
+
+<ul>
+  
+<li>Start MaaS via <tt>$METRON_HOME/bin/maas_service.sh -zq 
node1:2181</tt></li>
+  
+<li>Start one instance of the mock DGA model with 512M of memory via 
<tt>$METRON_HOME/bin/maas_deploy.sh -zq node1:2181 -lmp /root/mock_dga -hmp 
/user/root/models -mo ADD -m 512 -n dga -v 1.0 -ni 1</tt></li>
+  
+<li>As a sanity check:
+  
+<ul>
+    
+<li>Ensure that the model is running via <tt>$METRON_HOME/bin/maas_deploy.sh 
-zq node1:2181 -mo LIST</tt>. You should see <tt>Model dga @ 1.0</tt> be 
displayed and under that a url such as (but not exactly) 
<tt>http://node1:36161</tt></li>
+    
+<li>Try to hit the model via curl: <tt>curl 
'http://localhost:36161/apply?host=caseystella.com'</tt> and ensure that it 
returns a JSON map indicating the domain is malicious.</li>
+  </ul></li>
+</ul></div>
+<div class="section">
+<h2><a name="Adjust_Configurations_for_Squid_to_Call_Model"></a>Adjust 
Configurations for Squid to Call Model</h2>
+<p>Now that we have a deployed model, let&#x2019;s adjust the configurations 
for the Squid topology to annotate the messages with the output of the 
model.</p>
+
+<ul>
+  
+<li>Edit the squid parser configuration at 
<tt>$METRON_HOME/config/zookeeper/parsers/squid.json</tt> in your favorite text 
editor and add a new FieldTransformation to indicate a threat alert based on 
the model (note the addition of <tt>is_malicious</tt> and 
<tt>is_alert</tt>):</li>
+</ul>
+
+<div class="source">
+<div class="source">
+<pre>{
+  &quot;parserClassName&quot;: 
&quot;org.apache.metron.parsers.GrokParser&quot;,
+  &quot;sensorTopic&quot;: &quot;squid&quot;,
+  &quot;parserConfig&quot;: {
+    &quot;grokPath&quot;: &quot;/patterns/squid&quot;,
+    &quot;patternLabel&quot;: &quot;SQUID_DELIMITED&quot;,
+    &quot;timestampField&quot;: &quot;timestamp&quot;
+  },
+  &quot;fieldTransformations&quot; : [
+    {
+      &quot;transformation&quot; : &quot;STELLAR&quot;
+    ,&quot;output&quot; : [ &quot;full_hostname&quot;, 
&quot;domain_without_subdomains&quot;, &quot;is_malicious&quot;, 
&quot;is_alert&quot; ]
+    ,&quot;config&quot; : {
+      &quot;full_hostname&quot; : &quot;URL_TO_HOST(url)&quot;
+      ,&quot;domain_without_subdomains&quot; : 
&quot;DOMAIN_REMOVE_SUBDOMAINS(full_hostname)&quot;
+      ,&quot;is_malicious&quot; : &quot;MAP_GET('is_malicious', 
MAAS_MODEL_APPLY(MAAS_GET_ENDPOINT('dga'), {'host' : 
domain_without_subdomains}))&quot;
+      ,&quot;is_alert&quot; : &quot;if is_malicious == 'malicious' then 'true' 
else null&quot;
+                }
+    }
+                           ]
+}
+</pre></div></div>
+
+<ul>
+  
+<li>Edit the squid enrichment configuration at 
<tt>$METRON_HOME/config/zookeeper/enrichments/squid.json</tt> (this file will 
not exist, so create a new one) to make the threat triage adjust the level of 
risk based on the model output:</li>
+</ul>
+
+<div class="source">
+<div class="source">
+<pre>{
+  &quot;index&quot;: &quot;squid&quot;,
+  &quot;batchSize&quot;: 1,
+  &quot;enrichment&quot; : {
+    &quot;fieldMap&quot;: {}
+  },
+  &quot;threatIntel&quot; : {
+    &quot;fieldMap&quot;:{},
+    &quot;triageConfig&quot; : {
+      &quot;riskLevelRules&quot; : [
+        {
+          &quot;rule&quot; : &quot;is_malicious == 'malicious'&quot;,
+          &quot;score&quot; : 100
+        }
+      ],
+      &quot;aggregator&quot; : &quot;MAX&quot;
+    }
+  }
+}
+</pre></div></div>
+
+<ul>
+  
+<li>Upload new configs via <tt>$METRON_HOME/bin/zk_load_configs.sh --mode PUSH 
-i $METRON_HOME/config/zookeeper -z node1:2181</tt></li>
+  
+<li>Make the Squid topic in kafka via 
<tt>/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --zookeeper node1:2181 
--create --topic squid --partitions 1 --replication-factor 1</tt></li>
+</ul></div>
+<div class="section">
+<h2><a name="Start_Topologies_and_Send_Data"></a>Start Topologies and Send 
Data</h2>
+<p>Now we need to start the topologies and send some data:</p>
+
+<ul>
+  
+<li>Start the squid topology via <tt>$METRON_HOME/bin/start_parser_topology.sh 
-k node1:6667 -z node1:2181 -s squid</tt></li>
+  
+<li>Generate some data via the squid client:
+  
+<ul>
+    
+<li>Generate a legit example: <tt>squidclient http://yahoo.com</tt></li>
+    
+<li>Generate a malicious example: <tt>squidclient http://cnn.com</tt></li>
+  </ul></li>
+  
+<li>Send the data to kafka via <tt>cat /var/log/squid/access.log | 
/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list 
node1:6667 --topic squid</tt></li>
+  
+<li>Browse the data in elasticsearch via the ES Head plugin @ <a 
class="externalLink" 
href="http://node1:9200/_plugin/head/";>http://node1:9200/_plugin/head/</a> and 
verify that in the squid index you have two documents
+  
+<ul>
+    
+<li>One from <tt>yahoo.com</tt> which does not have <tt>is_alert</tt> set and 
does have <tt>is_malicious</tt> set to <tt>legit</tt></li>
+    
+<li>One from <tt>cnn.com</tt> which does have <tt>is_alert</tt> set to 
<tt>true</tt>, <tt>is_malicious</tt> set to <tt>malicious</tt> and 
<tt>threat:triage:level</tt> set to 100</li>
+  </ul></li>
+</ul></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2017
+                        <a href="https://www.apache.org";>The Apache Software 
Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+                          
+        
+                </div>
+    </footer>
+  </body>
+</html>


Reply via email to