From 5926c67062573ec318b533ed6e1dbf8e995006ac Mon Sep 17 00:00:00 2001 From: onewe Date: Fri, 29 Apr 2022 11:36:07 +0800 Subject: [PATCH 001/133] [ISSUE #8150] Add the namespace description item to the namespace list page (#8155) * [ISSUE #8150] Add the namespace description item to the namespace list page Close #8150 * [ISSUE #8150] resolve conflict Close #8150 * [ISSUE #8150] Rebuild console-ui --- console-ui/src/pages/NameSpace/NameSpace.js | 2 ++ .../controller/NamespaceController.java | 6 +++--- .../nacos/console/model/Namespace.java | 20 +++++++++++++++++++ .../nacos/console/model/NamespaceAllInfo.java | 16 +-------------- console/src/main/resources/static/index.html | 4 ++-- console/src/main/resources/static/js/main.js | 2 +- 6 files changed, 29 insertions(+), 21 deletions(-) diff --git a/console-ui/src/pages/NameSpace/NameSpace.js b/console-ui/src/pages/NameSpace/NameSpace.js index 33cb914e521..0825579d84a 100644 --- a/console-ui/src/pages/NameSpace/NameSpace.js +++ b/console-ui/src/pages/NameSpace/NameSpace.js @@ -288,6 +288,7 @@ class NameSpace extends React.Component { namespace, namespaceAdd, namespaceNames, + description, namespaceNumber, configuration, namespaceOperation, @@ -328,6 +329,7 @@ class NameSpace extends React.Component { cell={this.renderName.bind(this)} /> + > getNamespaces() { namespaces.add(namespace0); for (TenantInfo tenantInfo : tenantInfos) { int configCount = persistService.configInfoCount(tenantInfo.getTenantId()); - Namespace namespaceTmp = new Namespace(tenantInfo.getTenantId(), tenantInfo.getTenantName(), DEFAULT_QUOTA, - configCount, NamespaceTypeEnum.CUSTOM.getType()); + Namespace namespaceTmp = new Namespace(tenantInfo.getTenantId(), tenantInfo.getTenantName(), + tenantInfo.getTenantDesc(), DEFAULT_QUOTA, configCount, NamespaceTypeEnum.CUSTOM.getType()); namespaces.add(namespaceTmp); } return RestResultUtils.success(namespaces); diff --git a/console/src/main/java/com/alibaba/nacos/console/model/Namespace.java b/console/src/main/java/com/alibaba/nacos/console/model/Namespace.java index d762d1f164c..0a13166f633 100644 --- a/console/src/main/java/com/alibaba/nacos/console/model/Namespace.java +++ b/console/src/main/java/com/alibaba/nacos/console/model/Namespace.java @@ -27,6 +27,8 @@ public class Namespace { private String namespaceShowName; + private String namespaceDesc; + private int quota; private int configCount; @@ -68,6 +70,24 @@ public Namespace(String namespace, String namespaceShowName, int quota, int conf this.type = type; } + public Namespace(String namespace, String namespaceShowName, String namespaceDesc, int quota, int configCount, + int type) { + this.namespace = namespace; + this.namespaceShowName = namespaceShowName; + this.quota = quota; + this.configCount = configCount; + this.type = type; + this.namespaceDesc = namespaceDesc; + } + + public String getNamespaceDesc() { + return namespaceDesc; + } + + public void setNamespaceDesc(String namespaceDesc) { + this.namespaceDesc = namespaceDesc; + } + public int getQuota() { return quota; } diff --git a/console/src/main/java/com/alibaba/nacos/console/model/NamespaceAllInfo.java b/console/src/main/java/com/alibaba/nacos/console/model/NamespaceAllInfo.java index 73732622397..92d9c8fd53d 100644 --- a/console/src/main/java/com/alibaba/nacos/console/model/NamespaceAllInfo.java +++ b/console/src/main/java/com/alibaba/nacos/console/model/NamespaceAllInfo.java @@ -23,23 +23,9 @@ */ public class NamespaceAllInfo extends Namespace { - private String namespaceDesc; - - public String getNamespaceDesc() { - return namespaceDesc; - } - - public void setNamespaceDesc(String namespaceDesc) { - this.namespaceDesc = namespaceDesc; - } - - public NamespaceAllInfo() { - } - public NamespaceAllInfo(String namespace, String namespaceShowName, int quota, int configCount, int type, String namespaceDesc) { - super(namespace, namespaceShowName, quota, configCount, type); - this.namespaceDesc = namespaceDesc; + super(namespace, namespaceShowName, namespaceDesc, quota, configCount, type); } } diff --git a/console/src/main/resources/static/index.html b/console/src/main/resources/static/index.html index 56fe54ab539..afc9ff02a04 100644 --- a/console/src/main/resources/static/index.html +++ b/console/src/main/resources/static/index.html @@ -35,7 +35,7 @@ - +
@@ -56,6 +56,6 @@ - + diff --git a/console/src/main/resources/static/js/main.js b/console/src/main/resources/static/js/main.js index fe2353e881b..275f0008271 100644 --- a/console/src/main/resources/static/js/main.js +++ b/console/src/main/resources/static/js/main.js @@ -286,7 +286,7 @@ var t;e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_ //! moment.js locale configuration var t;e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var a=e*100+t;if(a<600)return"凌晨";else if(a<900)return"早上";else if(a<1130)return"上午";else if(a<1230)return"中午";else if(a<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration -var t;e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var a=e*100+t;if(a<600)return"凌晨";else if(a<900)return"早上";else if(a<1130)return"上午";else if(a<1230)return"中午";else if(a<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){"use strict";t.__esModule=!0;var g=s(n(2)),y=s(n(12)),a=s(n(36)),r=s(n(4)),o=s(n(5)),i=s(n(6)),v=n(0),_=s(v),l=s(n(3)),b=n(154),w=s(n(521));function s(e){return e&&e.__esModule?e:{default:e}}function u(){}function M(e){return _.default.Children.toArray(e.children)[0]||null}d=v.Component,(0,i.default)(c,d),c.prototype.normalizeNames=function(e){return"string"==typeof e?{appear:e+"-appear",appearActive:e+"-appear-active",enter:e+"-enter",enterActive:e+"-enter-active",leave:e+"-leave",leaveActive:e+"-leave-active"}:"object"===(void 0===e?"undefined":(0,a.default)(e))?{appear:e.appear,appearActive:e.appear+"-active",enter:""+e.enter,enterActive:e.enter+"-active",leave:""+e.leave,leaveActive:e.leave+"-active"}:void 0},c.prototype.render=function(){var t=this,e=this.props,n=e.animation,a=e.children,r=e.animationAppear,o=e.singleMode,i=e.component,l=e.beforeAppear,s=e.onAppear,u=e.afterAppear,d=e.beforeEnter,c=e.onEnter,f=e.afterEnter,p=e.beforeLeave,h=e.onLeave,m=e.afterLeave,e=(0,y.default)(e,["animation","children","animationAppear","singleMode","component","beforeAppear","onAppear","afterAppear","beforeEnter","onEnter","afterEnter","beforeLeave","onLeave","afterLeave"]),a=v.Children.map(a,function(e){return _.default.createElement(w.default,{key:e.key,names:t.normalizeNames(n),onAppear:l,onAppearing:s,onAppeared:u,onEnter:d,onEntering:c,onEntered:f,onExit:p,onExiting:h,onExited:m},e)});return _.default.createElement(b.TransitionGroup,(0,g.default)({appear:r,component:o?M:i},e),a)},i=n=c,n.propTypes={animation:l.default.oneOfType([l.default.string,l.default.object]),animationAppear:l.default.bool,component:l.default.any,singleMode:l.default.bool,children:l.default.oneOfType([l.default.element,l.default.arrayOf(l.default.element)]),beforeAppear:l.default.func,onAppear:l.default.func,afterAppear:l.default.func,beforeEnter:l.default.func,onEnter:l.default.func,afterEnter:l.default.func,beforeLeave:l.default.func,onLeave:l.default.func,afterLeave:l.default.func},n.defaultProps={animationAppear:!0,component:"div",singleMode:!0,beforeAppear:u,onAppear:u,afterAppear:u,beforeEnter:u,onEnter:u,afterEnter:u,beforeLeave:u,onLeave:u,afterLeave:u};var d,l=i;function c(){return(0,r.default)(this,c),(0,o.default)(this,d.apply(this,arguments))}l.displayName="Animate",t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var a=function(e){{if(e&&e.__esModule)return e;var t,n={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&((t=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,a):{}).get||t.set?Object.defineProperty(n,a,t):n[a]=e[a]);return n.default=e,n}}(n(3)),o=l(n(0)),i=l(n(22)),r=n(30);n(342);function l(e){return e&&e.__esModule?e:{default:e}}var s="unmounted",u=(t.UNMOUNTED=s,"exited"),d=(t.EXITED=u,"entering"),c=(t.ENTERING=d,"entered"),f=(t.ENTERED=c,"exiting"),n=(t.EXITING=f,function(r){var e;function t(e,t){var n,a=r.call(this,e,t)||this,t=t.transitionGroup,t=t&&!t.isMounting?e.enter:e.appear;return a.appearStatus=null,e.in?t?(n=u,a.appearStatus=d):n=c:n=e.unmountOnExit||e.mountOnEnter?s:u,a.state={status:n},a.nextCallback=null,a}e=r,(n=t).prototype=Object.create(e.prototype),(n.prototype.constructor=n).__proto__=e;var n=t.prototype;return n.getChildContext=function(){return{transitionGroup:null}},t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===s?{status:u}:null},n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;e!==this.props&&(e=this.state.status,this.props.in?e!==d&&e!==c&&(t=d):e!==d&&e!==c||(t=f)),this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n=this.props.timeout,a=e=t=n;return null!=n&&"number"!=typeof n&&(a=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:a,enter:e,appear:t}},n.updateStatus=function(e,t){var n;void 0===e&&(e=!1),null!==t?(this.cancelNextCallback(),n=i.default.findDOMNode(this),t===d?this.performEnter(n,e):this.performExit(n)):this.props.unmountOnExit&&this.state.status===u&&this.setState({status:s})},n.performEnter=function(e,t){var n=this,a=this.props.enter,r=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,o=this.getTimeouts(),i=r?o.appear:o.enter;t||a?(this.props.onEnter(e,r),this.safeSetState({status:d},function(){n.props.onEntering(e,r),n.onTransitionEnd(e,i,function(){n.safeSetState({status:c},function(){n.props.onEntered(e,r)})})})):this.safeSetState({status:c},function(){n.props.onEntered(e)})},n.performExit=function(e){var t=this,n=this.props.exit,a=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:f},function(){t.props.onExiting(e),t.onTransitionEnd(e,a.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(t){var n=this,a=!0;return this.nextCallback=function(e){a&&(a=!1,n.nextCallback=null,t(e))},this.nextCallback.cancel=function(){a=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);n=null==t&&!this.props.addEndListener;!e||n?setTimeout(this.nextCallback,0):(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t))},n.render=function(){var e=this.state.status;if(e===s)return null;var t=this.props,n=t.children,t=function(e,t){if(null==e)return{};for(var n,a={},r=Object.keys(e),o=0;o 16.8.0"),null;function t(e){j.current=e,ne({})}function a(e,t){N(te,null),"function"==typeof S&&S(e,t)}function n(e){27===e.keyCode&&Y&&!P.current.size&&a("esc",e)}function r(){j.current||(t(!0),he.dom.setStyle(D.current,"display","none"),me.default.unlock(document.body,ee.current),s&&O.current&&(O.current.focus(),O.current=null),I())}var o=e.prefix,o=void 0===o?"next-":o,i=e.afterClose,I=void 0===i?ye:i,i=e.hasMask,l=void 0===i||i,i=e.autoFocus,s=void 0!==i&&i,i=e.className,R=e.title,A=e.children,H=e.footer,F=e.footerAlign,z=e.footerActions,u=e.onOk,u=void 0===u?ye:u,d=e.onCancel,W=e.okProps,V=e.cancelProps,c=e.locale,c=void 0===c?pe.default.Dialog:c,B=e.rtl,f=e.visible,p=e.closeMode,p=void 0===p?["close","esc"]:p,U=e.closeIcon,h=e.animation,h=void 0===h?{in:"fadeInUp",out:"fadeOutUp"}:h,m=e.cache,K=e.wrapperStyle,g=e.popupContainer,y=void 0===g?document.body:g,g=e.dialogRender,v=e.centered,_=e.top,_=void 0===_?v?40:100:_,b=e.bottom,b=void 0===b?40:b,w=e.width,w=void 0===w?520:w,G=e.height,M=e.isFullScreen,k=e.overflowScroll,M=void 0===k?!M:k,k=e.minMargin,S=e.onClose,q=e.style,E=(0,ie.default)(e,["prefix","afterClose","hasMask","autoFocus","className","title","children","footer","footerAlign","footerActions","onOk","onCancel","okProps","cancelProps","locale","rtl","visible","closeMode","closeIcon","animation","cache","wrapperStyle","popupContainer","dialogRender","centered","top","bottom","width","height","isFullScreen","overflowScroll","minMargin","onClose","style"]),x=("isFullScreen"in e&&he.log.deprecated("isFullScreen","overflowScroll","Dialog v2"),"minMargin"in e&&he.log.deprecated("minMargin","top/bottom","Dialog v2"),(0,le.useState)(f||!1)),$=x[0],J=x[1],x=(0,le.useState)(f),C=x[0],X=x[1],Q="string"==typeof y?function(){return document.getElementById(y)}:"function"!=typeof y?function(){return y}:y,x=(0,le.useState)(Q()),L=x[0],Z=x[1],T=(0,le.useRef)(null),D=(0,le.useRef)(null),O=(0,le.useRef)(null),ee=(0,le.useRef)(null),te=(0,le.useState)((0,he.guid)())[0],x=(0,le.useContext)(ge),N=x.setVisibleOverlayToParent,x=(0,ie.default)(x,["setVisibleOverlayToParent"]),P=(0,le.useRef)(new Map),j=(0,le.useRef)(!1),ne=(0,le.useState)()[1],Y=!1,ae=!1,re=!1;(Array.isArray(p)?p:[p]).forEach(function(e){switch(e){case"esc":Y=!0;break;case"mask":ae=!0;break;case"close":re=!0}}),(0,le.useEffect)(function(){"visible"in e&&X(f)},[f]),(0,le.useEffect)(function(){var e;C&&l&&(e={overflow:"hidden"},he.dom.hasScroll(document.body)&&he.dom.scrollbar().width&&(e.paddingRight=he.dom.getStyle(document.body,"paddingRight")+he.dom.scrollbar().width+"px"),ee.current=me.default.lock(document.body,e))},[C&&l]),(0,le.useEffect)(function(){if(C&&Y)return document.body.addEventListener("keydown",n,!1),function(){document.body.removeEventListener("keydown",n,!1)}},[C&&Y]),(0,le.useEffect)(function(){!$&&C&&J(!0)},[C]),(0,le.useEffect)(function(){L||setTimeout(function(){Z(Q())})},[L]);if((0,le.useEffect)(function(){return function(){r()}},[]),!1===$||!L)return null;if(!C&&!m&&j.current)return null;m=(0,de.default)(((p={})[o+"overlay-wrapper"]=!0,p.opened=C,p)),i=(0,de.default)(((p={})[o+"dialog-v2"]=!0,p[i]=!!i,p)),p={},k=void(v?_||b||!k?(_&&(p.marginTop=_),b&&(p.marginBottom=b)):(p.marginTop=k,p.marginBottom=k):(_&&(p.top=_),b&&(p.paddingBottom=b))),M&&(k="calc(100vh - "+(_+b)+"px)"),M={appear:300,enter:300,exit:250},_=se.default.createElement(fe.default.OverlayAnimate,{visible:C,animation:h,timeout:M,onEnter:function(){t(!1),he.dom.setStyle(D.current,"display","")},onEntered:function(){var e;s&&T.current&&T.current.bodyNode&&(0<(e=he.focus.getFocusNodeList(T.current.bodyNode)).length&&e[0]&&(O.current=document.activeElement,e[0].focus())),N(te,D.current)},onExited:r},se.default.createElement(ce.default,(0,oe.default)({},E,{style:v?(0,oe.default)({},p,q):q,v2:!0,ref:T,prefix:o,className:i,title:R,footer:H,footerAlign:F,footerActions:z,onOk:C?u:ye,onCancel:C?function(e){"function"==typeof d?d(e):a("cancelBtn",e)}:ye,okProps:W,cancelProps:V,locale:c,closeable:re,rtl:B,onClose:function(){for(var e=arguments.length,t=Array(e),n=0;n>6]+d[128|63&s]:s<55296||57344<=s?i+=d[224|s>>12]+d[128|s>>6&63]+d[128|63&s]:(l+=1,s=65536+((1023&s)<<10|1023&o.charCodeAt(l)),i+=d[240|s>>18]+d[128|s>>12&63]+d[128|s>>6&63]+d[128|63&s])}return i},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(m(e)){for(var n=[],a=0;athis.popupNode.offsetWidth&&p(this.popupNode,"width",l.offsetWidth+"px"),"outside"!==a||"hoz"===r&&1===n||(p(this.popupNode,"height",u.offsetHeight+"px"),this.popupNode.firstElementChild&&p(this.popupNode.firstElementChild,"overflow-y","auto")),this.popupProps);d.onOpen&&d.onOpen()}catch(e){return null}},S.prototype.handlePopupClose=function(){var e=this.props.root.popupNodes,t=e.indexOf(this.popupNode),e=(-1t?r[t+1]:r[0])}),n[a]||(o=r[0]),i.onSort(a,o)},i.keydownHandler=function(e){e.preventDefault(),e.stopPropagation(),e.keyCode===l.KEYCODE.ENTER&&i.handleClick()},i.onSort=function(e,t){var n={};n[e]=t,i.props.onSort(e,t,n)},(0,o.default)(i,e)}i.displayName="Sort",t.default=i,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=c(n(2)),a=c(n(4)),o=c(n(5)),i=c(n(6)),l=c(n(0)),s=c(n(3)),u=c(n(13)),d=c(n(385));function c(e){return e&&e.__esModule?e:{default:e}}f=l.default.Component,(0,i.default)(p,f),p.prototype.render=function(){var e=this.props,t=e.className,n=e.record,e=e.primaryKey,a=this.context.selectedRowKeys,n=(0,u.default)(((a={selected:-1 "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t){var i={}.hasOwnProperty,n=function(e){var t,n=o,a=e;for(t in a)i.call(a,t)&&(n[t]=a[t]);function r(){this.constructor=n}function o(e,t,n){this.message=e,this.parsedLine=t,this.snippet=n}return r.prototype=a.prototype,n.prototype=new r,n.__super__=a.prototype,o.prototype.toString=function(){return null!=this.parsedLine&&null!=this.snippet?" "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var y=m(n(2)),a=m(n(4)),r=m(n(5)),o=m(n(6)),i=n(0),v=m(i),l=n(22),s=m(n(3)),_=m(n(13)),u=n(10),f=m(n(50)),d=m(n(61)),b=m(n(11)),c=m(n(44)),p=m(n(671)),h=m(n(396)),w=n(173);function m(e){return e&&e.__esModule?e:{default:e}}var M=d.default.Popup,g=f.default.Item,k=f.default.Group,n=u.func.noop,S=u.func.bindCtx,E=u.func.makeChain;x=v.default.Component,(0,o.default)(C,x),C.prototype.componentDidMount=function(){var e=this;setTimeout(function(){return e.syncWidth()},0),u.events.on(window,"resize",this.handleResize)},C.prototype.componentDidUpdate=function(e,t){e.label===this.props.label&&t.value===this.state.value||this.syncWidth()},C.prototype.componentWillUnmount=function(){u.events.off(window,"resize",this.handleResize),clearTimeout(this.resizeTimeout)},C.prototype.syncWidth=function(){var e=this,t=this.props,n=t.popupStyle,t=t.popupProps;n&&"width"in n||t&&t.style&&"width"in t.style||(n=u.dom.getStyle(this.selectDOM,"width"))&&this.width!==n&&(this.width=n,this.popupRef&&this.shouldAutoWidth()&&setTimeout(function(){e.popupRef&&u.dom.setStyle(e.popupRef,"width",e.width)},0))},C.prototype.handleResize=function(){var e=this;clearTimeout(this.resizeTimeout),this.state.visible&&(this.resizeTimeout=setTimeout(function(){e.syncWidth()},200))},C.prototype.setDataSource=function(e){var t=e.dataSource,e=e.children;return i.Children.count(e)?this.dataStore.updateByDS(e,!0):Array.isArray(t)?this.dataStore.updateByDS(t,!1):[]},C.prototype.setVisible=function(e,t){this.props.disabled&&e||this.state.visible===e||("visible"in this.props||this.setState({visible:e}),this.props.onVisibleChange(e,t))},C.prototype.setFirstHightLightKeyForMenu=function(e){var t=this.state.highlightKey;this.props.autoHighlightFirstItem&&(this.dataStore.getMenuDS().length&&this.dataStore.getEnableDS().length&&(!t||e)&&(t=""+this.dataStore.getEnableDS()[0].value,this.setState({highlightKey:t}),this.props.onToggleHighlightItem(t,"autoFirstItem")),e&&!this.dataStore.getEnableDS().length&&(this.setState({highlightKey:null}),this.props.onToggleHighlightItem(null,"highlightKeyToNull")))},C.prototype.handleChange=function(e){var t;"value"in this.props||this.setState({value:e});for(var n=arguments.length,a=Array(1e.slidesToShow&&(n=e.slideWidth*e.slidesToShow*-1,o=e.slideHeight*e.slidesToShow*-1),e.slideCount%e.slidesToScroll!=0&&(t=e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow,(t=e.rtl?(e.slideIndex>=e.slideCount?e.slideCount-e.slideIndex:e.slideIndex)+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow:t)&&(o=e.slideIndex>e.slideCount?(n=(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideWidth*-1,(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideHeight*-1):(n=e.slideCount%e.slidesToScroll*e.slideWidth*-1,e.slideCount%e.slidesToScroll*e.slideHeight*-1)))):e.slideCount%e.slidesToScroll!=0&&e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow&&(n=(e.slidesToShow-e.slideCount%e.slidesToScroll)*e.slideWidth),e.centerMode&&(e.infinite?n+=e.slideWidth*Math.floor(e.slidesToShow/2):n=e.slideWidth*Math.floor(e.slidesToShow/2)),a=e.vertical?e.slideIndex*e.slideHeight*-1+o:e.slideIndex*e.slideWidth*-1+n,!0===e.variableWidth&&(t=void 0,a=(r=e.slideCount<=e.slidesToShow||!1===e.infinite?i.default.findDOMNode(e.trackRef).childNodes[e.slideIndex]:(t=e.slideIndex+e.slidesToShow,i.default.findDOMNode(e.trackRef).childNodes[t]))?-1*r.offsetLeft:0,!0===e.centerMode&&(r=!1===e.infinite?i.default.findDOMNode(e.trackRef).children[e.slideIndex]:i.default.findDOMNode(e.trackRef).children[e.slideIndex+e.slidesToShow+1])&&(a=-1*r.offsetLeft+(e.listWidth-r.offsetWidth)/2)),a)}},function(e,t,n){"use strict";t.__esModule=!0;var p=u(n(2)),h=u(n(12)),o=u(n(4)),i=u(n(5)),a=u(n(6)),m=u(n(0)),r=u(n(3)),g=u(n(13)),l=u(n(7)),y=u(n(24)),s=n(10);function u(e){return e&&e.__esModule?e:{default:e}}d=m.default.Component,(0,a.default)(c,d),c.prototype.render=function(){var e=this.props,t=e.title,n=e.children,a=e.className,r=e.isExpanded,o=e.disabled,i=e.style,l=e.prefix,s=e.onClick,u=e.id,e=(0,h.default)(e,["title","children","className","isExpanded","disabled","style","prefix","onClick","id"]),a=(0,g.default)(((d={})[l+"collapse-panel"]=!0,d[l+"collapse-panel-hidden"]=!r,d[l+"collapse-panel-expanded"]=r,d[l+"collapse-panel-disabled"]=o,d[a]=a,d)),d=(0,g.default)(((d={})[l+"collapse-panel-icon"]=!0,d[l+"collapse-panel-icon-expanded"]=r,d)),c=u?u+"-heading":void 0,f=u?u+"-region":void 0;return m.default.createElement("div",(0,p.default)({className:a,style:i,id:u},e),m.default.createElement("div",{id:c,className:l+"collapse-panel-title",onClick:s,onKeyDown:this.onKeyDown,tabIndex:"0","aria-disabled":o,"aria-expanded":r,"aria-controls":f,role:"button"},m.default.createElement(y.default,{type:"arrow-right",className:d,"aria-hidden":"true"}),t),m.default.createElement("div",{className:l+"collapse-panel-content",role:"region",id:f},n))},a=n=c,n.propTypes={prefix:r.default.string,style:r.default.object,children:r.default.any,isExpanded:r.default.bool,disabled:r.default.bool,title:r.default.node,className:r.default.string,onClick:r.default.func,id:r.default.string},n.defaultProps={prefix:"next-",isExpanded:!1,onClick:s.func.noop},n.isNextPanel=!0;var d,r=a;function c(){var e,n;(0,o.default)(this,c);for(var t=arguments.length,a=Array(t),r=0;r\n com.alibaba.nacos\n nacos-client\n ${version}\n \n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\nimport java.util.concurrent.Executor;\nimport com.alibaba.nacos.api.NacosFactory;\nimport com.alibaba.nacos.api.config.ConfigService;\nimport com.alibaba.nacos.api.config.listener.Listener;\nimport com.alibaba.nacos.api.exception.NacosException;\n\n/**\n * Config service example\n *\n * @author Nacos\n *\n */\npublic class ConfigExample {\n\n\tpublic static void main(String[] args) throws NacosException, InterruptedException {\n\t\tString serverAddr = "localhost";\n\t\tString dataId = "'.concat(e.dataId,'";\n\t\tString group = "').concat(e.group,'";\n\t\tProperties properties = new Properties();\n\t\tproperties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);\n\t\tConfigService configService = NacosFactory.createConfigService(properties);\n\t\tString content = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tconfigService.addListener(dataId, group, new Listener() {\n\t\t\t@Override\n\t\t\tpublic void receiveConfigInfo(String configInfo) {\n\t\t\t\tSystem.out.println("recieve:" + configInfo);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Executor getExecutor() {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\n\t\tboolean isPublishOk = configService.publishConfig(dataId, group, "content");\n\t\tSystem.out.println(isPublishOk);\n\n\t\tThread.sleep(3000);\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\n\t\tboolean isRemoveOk = configService.removeConfig(dataId, group);\n\t\tSystem.out.println(isRemoveOk);\n\t\tThread.sleep(3000);\n\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tThread.sleep(300000);\n\n\t}\n}\n')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/*\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n string serverAddr = "http://localhost:8848";\n string dataId = "'.concat(e.dataId,'";\n string group = "').concat(e.group,'";\n\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Config(x =>\n {\n x.ServerAddresses = new List { serverAddr };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.ConfigUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var configSvc = serviceProvider.GetService();\n\n var content = await configSvc.GetConfig(dataId, group, 3000);\n Console.WriteLine(content);\n\n var listener = new ConfigListener();\n\n await configSvc.AddListener(dataId, group, listener);\n\n var isPublishOk = await configSvc.PublishConfig(dataId, group, "content");\n Console.WriteLine(isPublishOk);\n\n await Task.Delay(3000);\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n\n var isRemoveOk = await configSvc.RemoveConfig(dataId, group);\n Console.WriteLine(isRemoveOk);\n await Task.Delay(3000);\n\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n await Task.Delay(300000);\n }\n\n internal class ConfigListener : IListener\n {\n public void ReceiveConfigInfo(string configInfo)\n {\n Console.WriteLine("recieve:" + configInfo);\n }\n }\n}\n\n/*\nRefer to document: https://github.com/nacos-group/nacos-sdk-csharp/tree/dev/samples/MsConfigApp\nDemo for ASP.NET Core Integration\nMsConfigApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Hosting;\nusing Serilog;\nusing Serilog.Events;\n\npublic class Program\n{\n public static void Main(string[] args)\n {\n Log.Logger = new LoggerConfiguration()\n .Enrich.FromLogContext()\n .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)\n .MinimumLevel.Override("System", LogEventLevel.Warning)\n .MinimumLevel.Debug()\n .WriteTo.Console()\n .CreateLogger();\n\n try\n {\n Log.ForContext().Information("Application starting...");\n CreateHostBuilder(args, Log.Logger).Build().Run();\n }\n catch (System.Exception ex)\n {\n Log.ForContext().Fatal(ex, "Application start-up failed!!");\n }\n finally\n {\n Log.CloseAndFlush();\n }\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args, Serilog.ILogger logger) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureAppConfiguration((context, builder) =>\n {\n var c = builder.Build();\n builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), logAction: x => x.AddSerilog(logger));\n })\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.UseStartup().UseUrls("http://*:8787");\n })\n .UseSerilog();\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return E.a.createElement("div",null,E.a.createElement(g.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:E.a.createElement("div",null),onClose:this.closeDialog.bind(this)},E.a.createElement("div",{style:{height:500}},E.a.createElement(D.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},E.a.createElement(O.a,{shape:"text",style:{height:40,paddingBottom:10}},E.a.createElement(N,{title:"Java",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),E.a.createElement(N,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigboot_code)}),E.a.createElement(N,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloud_code)}),E.a.createElement(N,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),E.a.createElement(N,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),E.a.createElement(N,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),E.a.createElement(N,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),E.a.createElement(N,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),E.a.createElement("div",{ref:"codepreview"})))))}}]),n}(E.a.Component)).displayName="ShowCodeing",k=k))||k,k=(t(65),t(38)),k=t.n(k),A=(t(710),k.a.Row),P=k.a.Col,H=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(e){return Object(v.a)(this,n),(e=t.call(this,e)).state={visible:!1,title:"",content:"",isok:!0,dataId:"",group:""},e}return Object(_.a)(n,[{key:"componentDidMount",value:function(){this.initData()}},{key:"initData",value:function(){var e=this.props.locale;this.setState({title:(void 0===e?{}:e).confManagement})}},{key:"openDialog",value:function(e){this.setState({visible:!0,title:e.title,content:e.content,isok:e.isok,dataId:e.dataId,group:e.group,message:e.message})}},{key:"closeDialog",value:function(){this.setState({visible:!1})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e,t=E.a.createElement("div",{style:{textAlign:"right"}},E.a.createElement(d.a,{type:"primary",onClick:this.closeDialog.bind(this)},e.determine));return E.a.createElement("div",null,E.a.createElement(g.a,{visible:this.state.visible,footer:t,style:{width:555},onCancel:this.closeDialog.bind(this),onClose:this.closeDialog.bind(this),title:e.deletetitle},E.a.createElement("div",null,E.a.createElement(A,null,E.a.createElement(P,{span:"4",style:{paddingTop:16}},E.a.createElement(h.a,{type:"".concat(this.state.isok?"success":"delete","-filling"),style:{color:this.state.isok?"green":"red"},size:"xl"})),E.a.createElement(P,{span:"20"},E.a.createElement("div",null,E.a.createElement("h3",null,this.state.isok?e.deletedSuccessfully:e.deleteFailed),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Data ID:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.dataId)),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Group:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.group)),this.state.isok?"":E.a.createElement("p",{style:{color:"red"}},this.state.message)))))))}}]),n}(E.a.Component)).displayName="DeleteDialog",k=k))||k,k=(t(711),t(415)),F=t.n(k),z=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(){return Object(v.a)(this,n),t.apply(this,arguments)}return Object(_.a)(n,[{key:"render",value:function(){var e=this.props,t=e.data,t=void 0===t?{}:t,n=e.height,e=e.locale,a=void 0===e?{}:e;return E.a.createElement("div",null,"notice"===t.modeType?E.a.createElement("div",{"data-spm-click":"gostr=/aliyun;locaid=notice"},E.a.createElement(F.a,{style:{marginBottom:1l?b.a.createElement(u.a,{className:"pagination",total:i.count,pageSize:l,onChange:function(e){return a.onChangePage(e)}}):null,b.a.createElement(C,{ref:this.editInstanceDialog,serviceName:n,clusterName:t,groupName:e,openLoading:function(){return a.openLoading()},closeLoading:function(){return a.closeLoading()},getInstanceList:function(){return a.getInstanceList()}})):null}}]),n}(b.a.Component)).displayName="InstanceTable",l.defaultProps={filters:new Map},l=l))||l,L=function(e,t){return e.filter(function(e){var n=e.metadata,a=!0;return t.forEach(function(e,t){if(e!==n[t])return a=!1}),a})},T=l,D=t(47),O=t(31),l=(t(171),t(72)),l=t.n(l),N=l.a.Group,P=l.a.Closeable,j=v.a.Item;var R=n.a.config(function(e){function t(){var e;a(),o&&l&&(e=new Map(Array.from(p)).set(o,l),h(e),d(""),f(""),n())}function n(){i(""),s("")}function a(){d(o?"":"error"),f(l?"":"error")}var r=Object(_.useState)(""),o=(r=Object(O.a)(r,2))[0],i=r[1],r=Object(_.useState)(""),l=(r=Object(O.a)(r,2))[0],s=r[1],r=Object(_.useState)(""),u=(r=Object(O.a)(r,2))[0],d=r[1],r=Object(_.useState)(""),c=(r=Object(O.a)(r,2))[0],f=r[1],r=Object(_.useState)(new Map),p=(r=Object(O.a)(r,2))[0],h=r[1],r=void 0===(r=e.locale)?{}:r;return Object(_.useEffect)(function(){e.setFilters(p)},[p]),b.a.createElement(m.a,{contentHeight:"auto",className:"inner-card"},b.a.createElement(v.a,{inline:!0,size:"small"},b.a.createElement(j,{label:r.title},b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"key",value:o,trim:!0,onChange:function(e){return i(e)},onPressEnter:t,state:u})),b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"value",value:l,trim:!0,onChange:function(e){return s(e)},onPressEnter:t,state:c})),b.a.createElement(j,{label:""},b.a.createElement(g.a,{type:"primary",onClick:t,style:{marginRight:10}},r.addFilter),0\n com.alibaba.nacos\n nacos-client\n ${latest.version}\n \n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\n\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingFactory;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.listener.Event;\nimport com.alibaba.nacos.api.naming.listener.EventListener;\nimport com.alibaba.nacos.api.naming.listener.NamingEvent;\n\n/**\n * @author nkorange\n */\npublic class NamingExample {\n\n public static void main(String[] args) throws NacosException {\n\n Properties properties = new Properties();\n properties.setProperty("serverAddr", System.getProperty("serverAddr"));\n properties.setProperty("namespace", System.getProperty("namespace"));\n\n NamingService naming = NamingFactory.createNamingService(properties);\n\n naming.registerInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n naming.registerInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.deregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.subscribe("').concat(this.record.name,'", new EventListener() {\n @Override\n public void onEvent(Event event) {\n System.out.println(((NamingEvent)event).getServiceName());\n System.out.println(((NamingEvent)event).getInstances());\n }\n });\n }\n}')}},{key:"getSpringCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example\n* pom.xml\n \n com.alibaba.nacos\n nacos-spring-context\n ${latest.version}\n \n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring\npackage com.alibaba.nacos.example.spring;\n\nimport com.alibaba.nacos.api.annotation.NacosProperties;\nimport com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\n@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))\npublic class NacosConfiguration {\n\n}\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring/controller\npackage com.alibaba.nacos.example.spring.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringBootCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example\n* pom.xml\n \n com.alibaba.boot\n nacos-discovery-spring-boot-starter\n ${latest.version}\n \n*/\n/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/resources\n* application.properties\n nacos.discovery.server-addr=127.0.0.1:8848\n*/\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/java/com/alibaba/nacos/example/spring/boot/controller\n\npackage com.alibaba.nacos.example.spring.boot.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringCloudCode",value:function(e){return"/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/\n* pom.xml\n \n org.springframework.cloud\n spring-cloud-starter-alibaba-nacos-discovery\n ${latest.version}\n \n*/\n\n// nacos-spring-cloud-provider-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/resources\n* application.properties\nserver.port=18080\nspring.application.name=".concat(this.record.name,'\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosProviderApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(NacosProviderApplication.class, args);\n}\n\n @RestController\n class EchoController {\n @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)\n public String echo(@PathVariable String string) {\n return "Hello Nacos Discovery " + string;\n }\n }\n}\n\n// nacos-spring-cloud-consumer-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/resources\n* application.properties\nspring.application.name=micro-service-oauth2\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.cloud.client.loadbalancer.LoadBalanced;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.client.RestTemplate;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosConsumerApplication {\n\n @LoadBalanced\n @Bean\n public RestTemplate restTemplate() {\n return new RestTemplate();\n }\n\n public static void main(String[] args) {\n SpringApplication.run(NacosConsumerApplication.class, args);\n }\n\n @RestController\n public class TestController {\n\n private final RestTemplate restTemplate;\n\n @Autowired\n public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}\n\n @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)\n public String echo(@PathVariable String str) {\n return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);\n }\n }\n}')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Naming(x =>\n {\n x.ServerAddresses = new List { "http://localhost:8848/" };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.NamingUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var namingSvc = serviceProvider.GetService();\n\n await namingSvc.RegisterInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n await namingSvc.RegisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(await namingSvc.GetAllInstances("').concat(this.record.name,'")));\n\n await namingSvc.DeregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n var listener = new EventListener();\n\n await namingSvc.Subscribe("').concat(this.record.name,'", listener);\n }\n\n internal class EventListener : IEventListener\n {\n public Task OnEvent(IEvent @event)\n {\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(@event));\n return Task.CompletedTask;\n }\n }\n}\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for ASP.NET Core Integration\nApp.csproj\n\n\n \n\n*/\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/appsettings.json\n* appsettings.json\n{\n "nacos": {\n "ServerAddresses": [ "http://localhost:8848" ],\n "DefaultTimeOut": 15000,\n "Namespace": "cs",\n "ServiceName": "App1",\n "GroupName": "DEFAULT_GROUP",\n "ClusterName": "DEFAULT",\n "Port": 0,\n "Weight": 100,\n "RegisterEnabled": true,\n "InstanceEnabled": true,\n "Ephemeral": true,\n "NamingUseRpc": true,\n "NamingLoadCacheAtStart": ""\n }\n}\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/Startup.cs\nusing Nacos.AspNetCore.V2;\n\npublic class Startup\n{\n public Startup(IConfiguration configuration)\n {\n Configuration = configuration;\n }\n\n public IConfiguration Configuration { get; }\n\n public void ConfigureServices(IServiceCollection services)\n {\n // ....\n services.AddNacosAspNet(Configuration);\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // ....\n }\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}),this.cm.setSize("auto","490px"))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return T.a.createElement("div",null,T.a.createElement(o.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:T.a.createElement("div",null),onClose:this.closeDialog.bind(this)},T.a.createElement("div",{style:{height:500}},T.a.createElement(m.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},T.a.createElement(g.a,{shape:"text",style:{height:40,paddingBottom:10}},T.a.createElement(y,{title:"Java",key:0,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),T.a.createElement(y,{title:"Spring",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.springCode)}),T.a.createElement(y,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigbootCode)}),T.a.createElement(y,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloudCode)}),T.a.createElement(y,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),T.a.createElement(y,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),T.a.createElement(y,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),T.a.createElement(y,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),T.a.createElement(y,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),T.a.createElement("div",{ref:"codepreview"})))))}}]),n}(T.a.Component)).displayName="ShowServiceCodeing",p=p))||p,j=(n(733),n(29)),Y=L.a.Item,I=f.a.Row,R=f.a.Col,A=C.a.Column,f=(0,a.a.config)(((p=function(e){Object(d.a)(a,e);var t=Object(c.a)(a);function a(e){var n;return Object(l.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryServiceList()})},n.showcode=function(){setTimeout(function(){return n.queryServiceList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:e.healthyInstanceCount?"":"row-bg-red"}},n.editServiceDialog=T.a.createRef(),n.showcode=T.a.createRef(),n.state={loading:!1,total:0,pageSize:10,currentPage:1,dataSource:[],search:{serviceName:"",groupName:""},hasIpCount:!("false"===localStorage.getItem("hasIpCount"))},n.field=new i.a(Object(u.a)(n)),n}return Object(s.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryServiceList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.search,o=e.withInstances,o=void 0!==o&&o,e=e.hasIpCount,e=["hasIpCount=".concat(e),"withInstances=".concat(o),"pageNo=".concat(t),"pageSize=".concat(a),"serviceNameParam=".concat(r.serviceName),"groupNameParam=".concat(r.groupName)];this.openLoading(),Object(h.c)({url:"v1/ns/catalog/services?".concat(e.join("&")),success:function(){var e=0o&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:n.totalCount,pageSize:o,onChange:function(e){return t.setState({pageNo:e},function(){return t.getUsers()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.c)(e).then(function(e){return t.setState({pageNo:1},function(){return t.getUsers()}),e})},onCancel:function(){return t.colseCreateUser()}}),h.a.createElement(E.a,{username:e,onOk:function(e){return Object(m.k)(e).then(function(e){return t.getUsers(),e})},onCancel:function(){return t.setState({passwordResetUser:void 0})}}))}}]),n}(h.a.Component)).displayName="UserManagement",n=o))||n)||n;t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),d=n(31),a=(n(62),n(20)),c=n.n(a),a=(n(32),n(18)),f=n.n(a),i=n(14),l=n(15),p=n(17),h=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),m=n.n(r),r=n(43),g=n(45),o=n(79),y=n(48),v=(n(49),n(26)),_=n.n(v),b=n(23),v=(n(58),n(28)),w=n.n(v),v=(n(42),n(9)),M=n.n(v),k=M.a.Item,S=w.a.Option,E={labelCol:{fixedSpan:4},wrapperCol:{span:19}},x=Object(r.b)(function(e){return{namespaces:e.namespace.namespaces}},{getNamespaces:o.b,searchRoles:g.l})(v=(0,a.a.config)(((v=function(e){Object(p.a)(o,e);var r=Object(h.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ai&&m.a.createElement(s.a,{className:"users-pagination",current:l,total:t.totalCount,pageSize:i,onChange:function(e){return a.setState({pageNo:e},function(){return a.getPermissions()})}}),m.a.createElement(x,{visible:n,onOk:function(e){return Object(g.a)(e).then(function(e){return a.setState({pageNo:1},function(){return a.getPermissions()}),e})},onCancel:function(){return a.colseCreatePermission()}}))}}]),n}(m.a.Component)).displayName="PermissionsManagement",n=v))||n)||n);t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),a=(n(62),n(20)),d=n.n(a),a=(n(32),n(18)),c=n.n(a),i=n(14),l=n(15),f=n(17),p=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),h=n.n(r),r=n(43),m=n(45),g=n(48),o=(n(58),n(28)),y=n.n(o),o=(n(40),n(11)),v=n.n(o),o=(n(49),n(26)),_=n.n(o),b=n(23),o=(n(42),n(9)),w=n.n(o),M=w.a.Item,k={labelCol:{fixedSpan:4},wrapperCol:{span:19}},S=Object(r.b)(function(e){return{users:e.authority.users}},{searchUsers:m.m})(o=(0,a.a.config)(((o=function(e){Object(f.a)(o,e);var r=Object(p.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ao&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:t.totalCount,pageSize:o,onChange:function(e){return a.setState({pageNo:e},function(){return a.getRoles()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.b)(e).then(function(e){return a.getRoles(),e})},onCancel:function(){return a.colseCreateRole()}}))}}]),n}(h.a.Component)).displayName="RolesManagement",n=o))||n)||n);t.a=r},function(e,t,n){"use strict";n(41);function o(e){var t=void 0===(t=localStorage.token)?"{}":t,t=(Object(y.c)(t)&&JSON.parse(t)||{}).globalAdmin;return["naming"===e?void 0:v,{key:"serviceManagementVirtual",children:[{key:"serviceManagement",url:"/serviceManagement"},{key:"subscriberList",url:"/subscriberList"}]},t?_:void 0,{key:"namespace",url:"/namespace"},{key:"clusterManagementVirtual",children:[{key:"clusterManagement",url:"/clusterManagement"}]}].filter(function(e){return e})}var a=n(24),i=n.n(a),r=n(14),l=n(15),s=n(17),u=n(16),a=(n(25),n(7)),a=n.n(a),d=n(21),c=(n(78),n(50)),f=n.n(c),c=n(0),p=n.n(c),c=n(37),h=n(43),m=n(131),g=n(98),y=n(47),v={key:"configurationManagementVirtual",children:[{key:"configurationManagement",url:"/configurationManagement"},{key:"historyRollback",url:"/historyRollback"},{key:"listeningToQuery",url:"/listeningToQuery"}]},_={key:"authorityControl",children:[{key:"userList",url:"/userManagement"},{key:"roleManagement",url:"/rolesManagement"},{key:"privilegeManagement",url:"/permissionsManagement"}]},b=f.a.SubMenu,w=f.a.Item,c=(n=Object(h.b)(function(e){return Object(d.a)(Object(d.a)({},e.locale),e.base)},{getState:g.b}),h=a.a.config,Object(c.g)(a=n(a=h(((g=function(e){Object(s.a)(n,e);var t=Object(u.a)(n);function n(){return Object(r.a)(this,n),t.apply(this,arguments)}return Object(l.a)(n,[{key:"componentDidMount",value:function(){this.props.getState()}},{key:"goBack",value:function(){this.props.history.goBack()}},{key:"navTo",value:function(e){var t=this.props.location.search;this.props.history.push([e,t].join(""))}},{key:"isCurrentPath",value:function(e){return e===this.props.location.pathname?"current-path":void 0}},{key:"defaultOpenKeys",value:function(){for(var t=this,e=o(this.props.functionMode),n=0,a=e.length;nthis.state.pageSize&&k.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},k.a.createElement(y.a,{current:this.state.pageNo,total:a,pageSize:this.state.pageSize,onChange:function(e){return t.setState({pageNo:e},function(){return t.querySubscriberList()})}}))))}}]),a}(k.a.Component)).displayName="SubscriberList",c=n))||c)||c;t.a=f},function(e,t,n){"use strict";n(51);var a=n(33),f=n.n(a),a=(n(63),n(46)),p=n.n(a),a=(n(171),n(72)),h=n.n(a),a=(n(40),n(11)),m=n.n(a),a=(n(32),n(18)),g=n.n(a),a=(n(34),n(19)),r=n.n(a),a=(n(49),n(26)),o=n.n(a),i=n(14),l=n(15),s=n(23),u=n(17),d=n(16),a=(n(25),n(7)),a=n.n(a),c=(n(399),n(112)),y=n.n(c),c=(n(62),n(20)),v=n.n(c),c=(n(65),n(38)),c=n.n(c),_=(n(42),n(9)),b=n.n(_),_=n(0),w=n.n(_),M=n(1),k=n(48),_=n(133),S=n.n(_),E=(n(736),b.a.Item),x=c.a.Row,C=c.a.Col,L=v.a.Column,T=y.a.Panel,c=(0,a.a.config)(((_=function(e){Object(u.a)(a,e);var t=Object(d.a)(a);function a(e){var n;return Object(i.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryClusterStateList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:(e.voteFor,"")}},n.state={loading:!1,total:0,pageSize:10,currentPage:1,keyword:"",dataSource:[]},n.field=new o.a(Object(s.a)(n)),n}return Object(l.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryClusterStateList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.keyword,e=e.withInstances,e=["withInstances=".concat(void 0!==e&&e),"pageNo=".concat(t),"pageSize=".concat(a),"keyword=".concat(r)];Object(M.c)({url:"v1/core/cluster/nodes?".concat(e.join("&")),beforeSend:function(){return n.openLoading()},success:function(){var e=0this.state.pageSize&&w.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},w.a.createElement(p.a,{current:this.state.currentPage,total:this.state.total,pageSize:this.state.pageSize,onChange:function(e){return t.setState({currentPage:e},function(){return t.queryClusterStateList()})}}))))}}]),a}(w.a.Component)).displayName="ClusterNodeList",n=_))||n;t.a=c},function(e,t,F){"use strict";F.r(t),function(e){F(51);var t=F(33),a=F.n(t),t=(F(25),F(7)),r=F.n(t),o=F(14),i=F(15),l=F(17),s=F(16),n=F(21),t=F(0),u=F.n(t),t=F(22),t=F.n(t),d=F(115),c=F(407),f=F(419),p=F(43),h=F(37),m=F(96),g=(F(454),F(428)),y=F(29),v=F(429),_=F(422),b=F(430),w=F(431),M=F(423),k=F(432),S=F(433),E=F(434),x=F(435),C=F(436),L=F(420),T=F(424),D=F(421),O=F(437),N=F(438),P=F(425),j=F(426),I=F(427),R=F(417),Y=F(418),A=F(101),e=(F(739),e.hot,localStorage.getItem(y.f)||localStorage.setItem(y.f,"zh-CN"===navigator.language?"zh-CN":"en-US"),Object(d.b)(Object(n.a)(Object(n.a)({},Y.a),{},{routing:c.routerReducer}))),Y=Object(d.d)(e,Object(d.c)(Object(d.a)(f.a),window[y.i]?window[y.i]():function(e){return e})),H=[{path:"/",exact:!0,render:function(){return u.a.createElement(h.a,{to:"/welcome"})}},{path:"/welcome",component:R.a},{path:"/namespace",component:_.a},{path:"/newconfig",component:b.a},{path:"/configsync",component:w.a},{path:"/configdetail",component:M.a},{path:"/configeditor",component:k.a},{path:"/historyDetail",component:S.a},{path:"/configRollback",component:E.a},{path:"/historyRollback",component:x.a},{path:"/listeningToQuery",component:C.a},{path:"/configurationManagement",component:L.a},{path:"/serviceManagement",component:T.a},{path:"/serviceDetail",component:D.a},{path:"/subscriberList",component:O.a},{path:"/clusterManagement",component:N.a},{path:"/userManagement",component:P.a},{path:"/rolesManagement",component:I.a},{path:"/permissionsManagement",component:j.a}],e=Object(p.b)(function(e){return Object(n.a)({},e.locale)},{changeLanguage:A.a})(c=function(e){Object(l.a)(n,e);var t=Object(s.a)(n);function n(e){return Object(o.a)(this,n),(e=t.call(this,e)).state={shownotice:"none",noticecontent:"",nacosLoading:{}},e}return Object(i.a)(n,[{key:"componentDidMount",value:function(){var e=localStorage.getItem(y.f);this.props.changeLanguage(e)}},{key:"router",get:function(){return u.a.createElement(m.a,null,u.a.createElement(h.d,null,u.a.createElement(h.b,{path:"/login",component:v.a}),u.a.createElement(g.a,null,H.map(function(e){return u.a.createElement(h.b,Object.assign({key:e.path},e))}))))}},{key:"render",value:function(){var e=this.props.locale;return u.a.createElement(a.a,Object.assign({className:"nacos-loading",shape:"flower",tip:"loading...",visible:!1,fullScreen:!0},this.state.nacosLoading),u.a.createElement(r.a,{locale:e},this.router))}}]),n}(u.a.Component))||c;t.a.render(u.a.createElement(p.a,{store:Y},u.a.createElement(e,null)),document.getElementById("root"))}.call(this,F(440)(e))},function(e,t){e.exports=function(e){var t;return e.webpackPolyfill||((t=Object.create(e)).children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1),t}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(I,e,t){"use strict"; +var t;e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var a=e*100+t;if(a<600)return"凌晨";else if(a<900)return"早上";else if(a<1130)return"上午";else if(a<1230)return"中午";else if(a<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){"use strict";t.__esModule=!0;var g=s(n(2)),y=s(n(12)),a=s(n(36)),r=s(n(4)),o=s(n(5)),i=s(n(6)),v=n(0),_=s(v),l=s(n(3)),b=n(154),w=s(n(521));function s(e){return e&&e.__esModule?e:{default:e}}function u(){}function M(e){return _.default.Children.toArray(e.children)[0]||null}d=v.Component,(0,i.default)(c,d),c.prototype.normalizeNames=function(e){return"string"==typeof e?{appear:e+"-appear",appearActive:e+"-appear-active",enter:e+"-enter",enterActive:e+"-enter-active",leave:e+"-leave",leaveActive:e+"-leave-active"}:"object"===(void 0===e?"undefined":(0,a.default)(e))?{appear:e.appear,appearActive:e.appear+"-active",enter:""+e.enter,enterActive:e.enter+"-active",leave:""+e.leave,leaveActive:e.leave+"-active"}:void 0},c.prototype.render=function(){var t=this,e=this.props,n=e.animation,a=e.children,r=e.animationAppear,o=e.singleMode,i=e.component,l=e.beforeAppear,s=e.onAppear,u=e.afterAppear,d=e.beforeEnter,c=e.onEnter,f=e.afterEnter,p=e.beforeLeave,h=e.onLeave,m=e.afterLeave,e=(0,y.default)(e,["animation","children","animationAppear","singleMode","component","beforeAppear","onAppear","afterAppear","beforeEnter","onEnter","afterEnter","beforeLeave","onLeave","afterLeave"]),a=v.Children.map(a,function(e){return _.default.createElement(w.default,{key:e.key,names:t.normalizeNames(n),onAppear:l,onAppearing:s,onAppeared:u,onEnter:d,onEntering:c,onEntered:f,onExit:p,onExiting:h,onExited:m},e)});return _.default.createElement(b.TransitionGroup,(0,g.default)({appear:r,component:o?M:i},e),a)},i=n=c,n.propTypes={animation:l.default.oneOfType([l.default.string,l.default.object]),animationAppear:l.default.bool,component:l.default.any,singleMode:l.default.bool,children:l.default.oneOfType([l.default.element,l.default.arrayOf(l.default.element)]),beforeAppear:l.default.func,onAppear:l.default.func,afterAppear:l.default.func,beforeEnter:l.default.func,onEnter:l.default.func,afterEnter:l.default.func,beforeLeave:l.default.func,onLeave:l.default.func,afterLeave:l.default.func},n.defaultProps={animationAppear:!0,component:"div",singleMode:!0,beforeAppear:u,onAppear:u,afterAppear:u,beforeEnter:u,onEnter:u,afterEnter:u,beforeLeave:u,onLeave:u,afterLeave:u};var d,l=i;function c(){return(0,r.default)(this,c),(0,o.default)(this,d.apply(this,arguments))}l.displayName="Animate",t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var a=function(e){{if(e&&e.__esModule)return e;var t,n={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&((t=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,a):{}).get||t.set?Object.defineProperty(n,a,t):n[a]=e[a]);return n.default=e,n}}(n(3)),o=l(n(0)),i=l(n(22)),r=n(30);n(342);function l(e){return e&&e.__esModule?e:{default:e}}var s="unmounted",u=(t.UNMOUNTED=s,"exited"),d=(t.EXITED=u,"entering"),c=(t.ENTERING=d,"entered"),f=(t.ENTERED=c,"exiting"),n=(t.EXITING=f,function(r){var e;function t(e,t){var n,a=r.call(this,e,t)||this,t=t.transitionGroup,t=t&&!t.isMounting?e.enter:e.appear;return a.appearStatus=null,e.in?t?(n=u,a.appearStatus=d):n=c:n=e.unmountOnExit||e.mountOnEnter?s:u,a.state={status:n},a.nextCallback=null,a}e=r,(n=t).prototype=Object.create(e.prototype),(n.prototype.constructor=n).__proto__=e;var n=t.prototype;return n.getChildContext=function(){return{transitionGroup:null}},t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===s?{status:u}:null},n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;e!==this.props&&(e=this.state.status,this.props.in?e!==d&&e!==c&&(t=d):e!==d&&e!==c||(t=f)),this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n=this.props.timeout,a=e=t=n;return null!=n&&"number"!=typeof n&&(a=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:a,enter:e,appear:t}},n.updateStatus=function(e,t){var n;void 0===e&&(e=!1),null!==t?(this.cancelNextCallback(),n=i.default.findDOMNode(this),t===d?this.performEnter(n,e):this.performExit(n)):this.props.unmountOnExit&&this.state.status===u&&this.setState({status:s})},n.performEnter=function(e,t){var n=this,a=this.props.enter,r=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,o=this.getTimeouts(),i=r?o.appear:o.enter;t||a?(this.props.onEnter(e,r),this.safeSetState({status:d},function(){n.props.onEntering(e,r),n.onTransitionEnd(e,i,function(){n.safeSetState({status:c},function(){n.props.onEntered(e,r)})})})):this.safeSetState({status:c},function(){n.props.onEntered(e)})},n.performExit=function(e){var t=this,n=this.props.exit,a=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:f},function(){t.props.onExiting(e),t.onTransitionEnd(e,a.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(t){var n=this,a=!0;return this.nextCallback=function(e){a&&(a=!1,n.nextCallback=null,t(e))},this.nextCallback.cancel=function(){a=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);n=null==t&&!this.props.addEndListener;!e||n?setTimeout(this.nextCallback,0):(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t))},n.render=function(){var e=this.state.status;if(e===s)return null;var t=this.props,n=t.children,t=function(e,t){if(null==e)return{};for(var n,a={},r=Object.keys(e),o=0;o 16.8.0"),null;function t(e){j.current=e,ne({})}function a(e,t){N(te,null),"function"==typeof S&&S(e,t)}function n(e){27===e.keyCode&&Y&&!P.current.size&&a("esc",e)}function r(){j.current||(t(!0),he.dom.setStyle(D.current,"display","none"),me.default.unlock(document.body,ee.current),s&&O.current&&(O.current.focus(),O.current=null),I())}var o=e.prefix,o=void 0===o?"next-":o,i=e.afterClose,I=void 0===i?ye:i,i=e.hasMask,l=void 0===i||i,i=e.autoFocus,s=void 0!==i&&i,i=e.className,R=e.title,A=e.children,H=e.footer,F=e.footerAlign,z=e.footerActions,u=e.onOk,u=void 0===u?ye:u,d=e.onCancel,W=e.okProps,V=e.cancelProps,c=e.locale,c=void 0===c?pe.default.Dialog:c,B=e.rtl,f=e.visible,p=e.closeMode,p=void 0===p?["close","esc"]:p,U=e.closeIcon,h=e.animation,h=void 0===h?{in:"fadeInUp",out:"fadeOutUp"}:h,m=e.cache,K=e.wrapperStyle,g=e.popupContainer,y=void 0===g?document.body:g,g=e.dialogRender,v=e.centered,_=e.top,_=void 0===_?v?40:100:_,b=e.bottom,b=void 0===b?40:b,w=e.width,w=void 0===w?520:w,G=e.height,M=e.isFullScreen,k=e.overflowScroll,M=void 0===k?!M:k,k=e.minMargin,S=e.onClose,q=e.style,E=(0,ie.default)(e,["prefix","afterClose","hasMask","autoFocus","className","title","children","footer","footerAlign","footerActions","onOk","onCancel","okProps","cancelProps","locale","rtl","visible","closeMode","closeIcon","animation","cache","wrapperStyle","popupContainer","dialogRender","centered","top","bottom","width","height","isFullScreen","overflowScroll","minMargin","onClose","style"]),x=("isFullScreen"in e&&he.log.deprecated("isFullScreen","overflowScroll","Dialog v2"),"minMargin"in e&&he.log.deprecated("minMargin","top/bottom","Dialog v2"),(0,le.useState)(f||!1)),$=x[0],J=x[1],x=(0,le.useState)(f),C=x[0],X=x[1],Q="string"==typeof y?function(){return document.getElementById(y)}:"function"!=typeof y?function(){return y}:y,x=(0,le.useState)(Q()),L=x[0],Z=x[1],T=(0,le.useRef)(null),D=(0,le.useRef)(null),O=(0,le.useRef)(null),ee=(0,le.useRef)(null),te=(0,le.useState)((0,he.guid)())[0],x=(0,le.useContext)(ge),N=x.setVisibleOverlayToParent,x=(0,ie.default)(x,["setVisibleOverlayToParent"]),P=(0,le.useRef)(new Map),j=(0,le.useRef)(!1),ne=(0,le.useState)()[1],Y=!1,ae=!1,re=!1;(Array.isArray(p)?p:[p]).forEach(function(e){switch(e){case"esc":Y=!0;break;case"mask":ae=!0;break;case"close":re=!0}}),(0,le.useEffect)(function(){"visible"in e&&X(f)},[f]),(0,le.useEffect)(function(){var e;C&&l&&(e={overflow:"hidden"},he.dom.hasScroll(document.body)&&he.dom.scrollbar().width&&(e.paddingRight=he.dom.getStyle(document.body,"paddingRight")+he.dom.scrollbar().width+"px"),ee.current=me.default.lock(document.body,e))},[C&&l]),(0,le.useEffect)(function(){if(C&&Y)return document.body.addEventListener("keydown",n,!1),function(){document.body.removeEventListener("keydown",n,!1)}},[C&&Y]),(0,le.useEffect)(function(){!$&&C&&J(!0)},[C]),(0,le.useEffect)(function(){L||setTimeout(function(){Z(Q())})},[L]);if((0,le.useEffect)(function(){return function(){r()}},[]),!1===$||!L)return null;if(!C&&!m&&j.current)return null;m=(0,de.default)(((p={})[o+"overlay-wrapper"]=!0,p.opened=C,p)),i=(0,de.default)(((p={})[o+"dialog-v2"]=!0,p[i]=!!i,p)),p={},k=void(v?_||b||!k?(_&&(p.marginTop=_),b&&(p.marginBottom=b)):(p.marginTop=k,p.marginBottom=k):(_&&(p.top=_),b&&(p.paddingBottom=b))),M&&(k="calc(100vh - "+(_+b)+"px)"),M={appear:300,enter:300,exit:250},_=se.default.createElement(fe.default.OverlayAnimate,{visible:C,animation:h,timeout:M,onEnter:function(){t(!1),he.dom.setStyle(D.current,"display","")},onEntered:function(){var e;s&&T.current&&T.current.bodyNode&&(0<(e=he.focus.getFocusNodeList(T.current.bodyNode)).length&&e[0]&&(O.current=document.activeElement,e[0].focus())),N(te,D.current)},onExited:r},se.default.createElement(ce.default,(0,oe.default)({},E,{style:v?(0,oe.default)({},p,q):q,v2:!0,ref:T,prefix:o,className:i,title:R,footer:H,footerAlign:F,footerActions:z,onOk:C?u:ye,onCancel:C?function(e){"function"==typeof d?d(e):a("cancelBtn",e)}:ye,okProps:W,cancelProps:V,locale:c,closeable:re,rtl:B,onClose:function(){for(var e=arguments.length,t=Array(e),n=0;n>6]+d[128|63&s]:s<55296||57344<=s?i+=d[224|s>>12]+d[128|s>>6&63]+d[128|63&s]:(l+=1,s=65536+((1023&s)<<10|1023&o.charCodeAt(l)),i+=d[240|s>>18]+d[128|s>>12&63]+d[128|s>>6&63]+d[128|63&s])}return i},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(m(e)){for(var n=[],a=0;athis.popupNode.offsetWidth&&p(this.popupNode,"width",l.offsetWidth+"px"),"outside"!==a||"hoz"===r&&1===n||(p(this.popupNode,"height",u.offsetHeight+"px"),this.popupNode.firstElementChild&&p(this.popupNode.firstElementChild,"overflow-y","auto")),this.popupProps);d.onOpen&&d.onOpen()}catch(e){return null}},S.prototype.handlePopupClose=function(){var e=this.props.root.popupNodes,t=e.indexOf(this.popupNode),e=(-1t?r[t+1]:r[0])}),n[a]||(o=r[0]),i.onSort(a,o)},i.keydownHandler=function(e){e.preventDefault(),e.stopPropagation(),e.keyCode===l.KEYCODE.ENTER&&i.handleClick()},i.onSort=function(e,t){var n={};n[e]=t,i.props.onSort(e,t,n)},(0,o.default)(i,e)}i.displayName="Sort",t.default=i,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=c(n(2)),a=c(n(4)),o=c(n(5)),i=c(n(6)),l=c(n(0)),s=c(n(3)),u=c(n(13)),d=c(n(385));function c(e){return e&&e.__esModule?e:{default:e}}f=l.default.Component,(0,i.default)(p,f),p.prototype.render=function(){var e=this.props,t=e.className,n=e.record,e=e.primaryKey,a=this.context.selectedRowKeys,n=(0,u.default)(((a={selected:-1 "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t){var i={}.hasOwnProperty,n=function(e){var t,n=o,a=e;for(t in a)i.call(a,t)&&(n[t]=a[t]);function r(){this.constructor=n}function o(e,t,n){this.message=e,this.parsedLine=t,this.snippet=n}return r.prototype=a.prototype,n.prototype=new r,n.__super__=a.prototype,o.prototype.toString=function(){return null!=this.parsedLine&&null!=this.snippet?" "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var y=m(n(2)),a=m(n(4)),r=m(n(5)),o=m(n(6)),i=n(0),v=m(i),l=n(22),s=m(n(3)),_=m(n(13)),u=n(10),f=m(n(50)),d=m(n(61)),b=m(n(11)),c=m(n(44)),p=m(n(671)),h=m(n(396)),w=n(173);function m(e){return e&&e.__esModule?e:{default:e}}var M=d.default.Popup,g=f.default.Item,k=f.default.Group,n=u.func.noop,S=u.func.bindCtx,E=u.func.makeChain;x=v.default.Component,(0,o.default)(C,x),C.prototype.componentDidMount=function(){var e=this;setTimeout(function(){return e.syncWidth()},0),u.events.on(window,"resize",this.handleResize)},C.prototype.componentDidUpdate=function(e,t){e.label===this.props.label&&t.value===this.state.value||this.syncWidth()},C.prototype.componentWillUnmount=function(){u.events.off(window,"resize",this.handleResize),clearTimeout(this.resizeTimeout)},C.prototype.syncWidth=function(){var e=this,t=this.props,n=t.popupStyle,t=t.popupProps;n&&"width"in n||t&&t.style&&"width"in t.style||(n=u.dom.getStyle(this.selectDOM,"width"))&&this.width!==n&&(this.width=n,this.popupRef&&this.shouldAutoWidth()&&setTimeout(function(){e.popupRef&&u.dom.setStyle(e.popupRef,"width",e.width)},0))},C.prototype.handleResize=function(){var e=this;clearTimeout(this.resizeTimeout),this.state.visible&&(this.resizeTimeout=setTimeout(function(){e.syncWidth()},200))},C.prototype.setDataSource=function(e){var t=e.dataSource,e=e.children;return i.Children.count(e)?this.dataStore.updateByDS(e,!0):Array.isArray(t)?this.dataStore.updateByDS(t,!1):[]},C.prototype.setVisible=function(e,t){this.props.disabled&&e||this.state.visible===e||("visible"in this.props||this.setState({visible:e}),this.props.onVisibleChange(e,t))},C.prototype.setFirstHightLightKeyForMenu=function(e){var t=this.state.highlightKey;this.props.autoHighlightFirstItem&&(this.dataStore.getMenuDS().length&&this.dataStore.getEnableDS().length&&(!t||e)&&(t=""+this.dataStore.getEnableDS()[0].value,this.setState({highlightKey:t}),this.props.onToggleHighlightItem(t,"autoFirstItem")),e&&!this.dataStore.getEnableDS().length&&(this.setState({highlightKey:null}),this.props.onToggleHighlightItem(null,"highlightKeyToNull")))},C.prototype.handleChange=function(e){var t;"value"in this.props||this.setState({value:e});for(var n=arguments.length,a=Array(1e.slidesToShow&&(n=e.slideWidth*e.slidesToShow*-1,o=e.slideHeight*e.slidesToShow*-1),e.slideCount%e.slidesToScroll!=0&&(t=e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow,(t=e.rtl?(e.slideIndex>=e.slideCount?e.slideCount-e.slideIndex:e.slideIndex)+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow:t)&&(o=e.slideIndex>e.slideCount?(n=(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideWidth*-1,(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideHeight*-1):(n=e.slideCount%e.slidesToScroll*e.slideWidth*-1,e.slideCount%e.slidesToScroll*e.slideHeight*-1)))):e.slideCount%e.slidesToScroll!=0&&e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow&&(n=(e.slidesToShow-e.slideCount%e.slidesToScroll)*e.slideWidth),e.centerMode&&(e.infinite?n+=e.slideWidth*Math.floor(e.slidesToShow/2):n=e.slideWidth*Math.floor(e.slidesToShow/2)),a=e.vertical?e.slideIndex*e.slideHeight*-1+o:e.slideIndex*e.slideWidth*-1+n,!0===e.variableWidth&&(t=void 0,a=(r=e.slideCount<=e.slidesToShow||!1===e.infinite?i.default.findDOMNode(e.trackRef).childNodes[e.slideIndex]:(t=e.slideIndex+e.slidesToShow,i.default.findDOMNode(e.trackRef).childNodes[t]))?-1*r.offsetLeft:0,!0===e.centerMode&&(r=!1===e.infinite?i.default.findDOMNode(e.trackRef).children[e.slideIndex]:i.default.findDOMNode(e.trackRef).children[e.slideIndex+e.slidesToShow+1])&&(a=-1*r.offsetLeft+(e.listWidth-r.offsetWidth)/2)),a)}},function(e,t,n){"use strict";t.__esModule=!0;var p=u(n(2)),h=u(n(12)),o=u(n(4)),i=u(n(5)),a=u(n(6)),m=u(n(0)),r=u(n(3)),g=u(n(13)),l=u(n(7)),y=u(n(24)),s=n(10);function u(e){return e&&e.__esModule?e:{default:e}}d=m.default.Component,(0,a.default)(c,d),c.prototype.render=function(){var e=this.props,t=e.title,n=e.children,a=e.className,r=e.isExpanded,o=e.disabled,i=e.style,l=e.prefix,s=e.onClick,u=e.id,e=(0,h.default)(e,["title","children","className","isExpanded","disabled","style","prefix","onClick","id"]),a=(0,g.default)(((d={})[l+"collapse-panel"]=!0,d[l+"collapse-panel-hidden"]=!r,d[l+"collapse-panel-expanded"]=r,d[l+"collapse-panel-disabled"]=o,d[a]=a,d)),d=(0,g.default)(((d={})[l+"collapse-panel-icon"]=!0,d[l+"collapse-panel-icon-expanded"]=r,d)),c=u?u+"-heading":void 0,f=u?u+"-region":void 0;return m.default.createElement("div",(0,p.default)({className:a,style:i,id:u},e),m.default.createElement("div",{id:c,className:l+"collapse-panel-title",onClick:s,onKeyDown:this.onKeyDown,tabIndex:"0","aria-disabled":o,"aria-expanded":r,"aria-controls":f,role:"button"},m.default.createElement(y.default,{type:"arrow-right",className:d,"aria-hidden":"true"}),t),m.default.createElement("div",{className:l+"collapse-panel-content",role:"region",id:f},n))},a=n=c,n.propTypes={prefix:r.default.string,style:r.default.object,children:r.default.any,isExpanded:r.default.bool,disabled:r.default.bool,title:r.default.node,className:r.default.string,onClick:r.default.func,id:r.default.string},n.defaultProps={prefix:"next-",isExpanded:!1,onClick:s.func.noop},n.isNextPanel=!0;var d,r=a;function c(){var e,n;(0,o.default)(this,c);for(var t=arguments.length,a=Array(t),r=0;r\n com.alibaba.nacos\n nacos-client\n ${version}\n \n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\nimport java.util.concurrent.Executor;\nimport com.alibaba.nacos.api.NacosFactory;\nimport com.alibaba.nacos.api.config.ConfigService;\nimport com.alibaba.nacos.api.config.listener.Listener;\nimport com.alibaba.nacos.api.exception.NacosException;\n\n/**\n * Config service example\n *\n * @author Nacos\n *\n */\npublic class ConfigExample {\n\n\tpublic static void main(String[] args) throws NacosException, InterruptedException {\n\t\tString serverAddr = "localhost";\n\t\tString dataId = "'.concat(e.dataId,'";\n\t\tString group = "').concat(e.group,'";\n\t\tProperties properties = new Properties();\n\t\tproperties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);\n\t\tConfigService configService = NacosFactory.createConfigService(properties);\n\t\tString content = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tconfigService.addListener(dataId, group, new Listener() {\n\t\t\t@Override\n\t\t\tpublic void receiveConfigInfo(String configInfo) {\n\t\t\t\tSystem.out.println("recieve:" + configInfo);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Executor getExecutor() {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\n\t\tboolean isPublishOk = configService.publishConfig(dataId, group, "content");\n\t\tSystem.out.println(isPublishOk);\n\n\t\tThread.sleep(3000);\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\n\t\tboolean isRemoveOk = configService.removeConfig(dataId, group);\n\t\tSystem.out.println(isRemoveOk);\n\t\tThread.sleep(3000);\n\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tThread.sleep(300000);\n\n\t}\n}\n')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/*\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n string serverAddr = "http://localhost:8848";\n string dataId = "'.concat(e.dataId,'";\n string group = "').concat(e.group,'";\n\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Config(x =>\n {\n x.ServerAddresses = new List { serverAddr };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.ConfigUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var configSvc = serviceProvider.GetService();\n\n var content = await configSvc.GetConfig(dataId, group, 3000);\n Console.WriteLine(content);\n\n var listener = new ConfigListener();\n\n await configSvc.AddListener(dataId, group, listener);\n\n var isPublishOk = await configSvc.PublishConfig(dataId, group, "content");\n Console.WriteLine(isPublishOk);\n\n await Task.Delay(3000);\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n\n var isRemoveOk = await configSvc.RemoveConfig(dataId, group);\n Console.WriteLine(isRemoveOk);\n await Task.Delay(3000);\n\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n await Task.Delay(300000);\n }\n\n internal class ConfigListener : IListener\n {\n public void ReceiveConfigInfo(string configInfo)\n {\n Console.WriteLine("recieve:" + configInfo);\n }\n }\n}\n\n/*\nRefer to document: https://github.com/nacos-group/nacos-sdk-csharp/tree/dev/samples/MsConfigApp\nDemo for ASP.NET Core Integration\nMsConfigApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Hosting;\nusing Serilog;\nusing Serilog.Events;\n\npublic class Program\n{\n public static void Main(string[] args)\n {\n Log.Logger = new LoggerConfiguration()\n .Enrich.FromLogContext()\n .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)\n .MinimumLevel.Override("System", LogEventLevel.Warning)\n .MinimumLevel.Debug()\n .WriteTo.Console()\n .CreateLogger();\n\n try\n {\n Log.ForContext().Information("Application starting...");\n CreateHostBuilder(args, Log.Logger).Build().Run();\n }\n catch (System.Exception ex)\n {\n Log.ForContext().Fatal(ex, "Application start-up failed!!");\n }\n finally\n {\n Log.CloseAndFlush();\n }\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args, Serilog.ILogger logger) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureAppConfiguration((context, builder) =>\n {\n var c = builder.Build();\n builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), logAction: x => x.AddSerilog(logger));\n })\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.UseStartup().UseUrls("http://*:8787");\n })\n .UseSerilog();\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return E.a.createElement("div",null,E.a.createElement(g.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:E.a.createElement("div",null),onClose:this.closeDialog.bind(this)},E.a.createElement("div",{style:{height:500}},E.a.createElement(D.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},E.a.createElement(O.a,{shape:"text",style:{height:40,paddingBottom:10}},E.a.createElement(N,{title:"Java",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),E.a.createElement(N,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigboot_code)}),E.a.createElement(N,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloud_code)}),E.a.createElement(N,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),E.a.createElement(N,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),E.a.createElement(N,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),E.a.createElement(N,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),E.a.createElement(N,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),E.a.createElement("div",{ref:"codepreview"})))))}}]),n}(E.a.Component)).displayName="ShowCodeing",k=k))||k,k=(t(65),t(38)),k=t.n(k),A=(t(710),k.a.Row),P=k.a.Col,H=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(e){return Object(v.a)(this,n),(e=t.call(this,e)).state={visible:!1,title:"",content:"",isok:!0,dataId:"",group:""},e}return Object(_.a)(n,[{key:"componentDidMount",value:function(){this.initData()}},{key:"initData",value:function(){var e=this.props.locale;this.setState({title:(void 0===e?{}:e).confManagement})}},{key:"openDialog",value:function(e){this.setState({visible:!0,title:e.title,content:e.content,isok:e.isok,dataId:e.dataId,group:e.group,message:e.message})}},{key:"closeDialog",value:function(){this.setState({visible:!1})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e,t=E.a.createElement("div",{style:{textAlign:"right"}},E.a.createElement(d.a,{type:"primary",onClick:this.closeDialog.bind(this)},e.determine));return E.a.createElement("div",null,E.a.createElement(g.a,{visible:this.state.visible,footer:t,style:{width:555},onCancel:this.closeDialog.bind(this),onClose:this.closeDialog.bind(this),title:e.deletetitle},E.a.createElement("div",null,E.a.createElement(A,null,E.a.createElement(P,{span:"4",style:{paddingTop:16}},E.a.createElement(h.a,{type:"".concat(this.state.isok?"success":"delete","-filling"),style:{color:this.state.isok?"green":"red"},size:"xl"})),E.a.createElement(P,{span:"20"},E.a.createElement("div",null,E.a.createElement("h3",null,this.state.isok?e.deletedSuccessfully:e.deleteFailed),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Data ID:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.dataId)),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Group:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.group)),this.state.isok?"":E.a.createElement("p",{style:{color:"red"}},this.state.message)))))))}}]),n}(E.a.Component)).displayName="DeleteDialog",k=k))||k,k=(t(711),t(415)),F=t.n(k),z=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(){return Object(v.a)(this,n),t.apply(this,arguments)}return Object(_.a)(n,[{key:"render",value:function(){var e=this.props,t=e.data,t=void 0===t?{}:t,n=e.height,e=e.locale,a=void 0===e?{}:e;return E.a.createElement("div",null,"notice"===t.modeType?E.a.createElement("div",{"data-spm-click":"gostr=/aliyun;locaid=notice"},E.a.createElement(F.a,{style:{marginBottom:1l?b.a.createElement(u.a,{className:"pagination",total:i.count,pageSize:l,onChange:function(e){return a.onChangePage(e)}}):null,b.a.createElement(C,{ref:this.editInstanceDialog,serviceName:n,clusterName:t,groupName:e,openLoading:function(){return a.openLoading()},closeLoading:function(){return a.closeLoading()},getInstanceList:function(){return a.getInstanceList()}})):null}}]),n}(b.a.Component)).displayName="InstanceTable",l.defaultProps={filters:new Map},l=l))||l,L=function(e,t){return e.filter(function(e){var n=e.metadata,a=!0;return t.forEach(function(e,t){if(e!==n[t])return a=!1}),a})},T=l,D=t(47),O=t(31),l=(t(171),t(72)),l=t.n(l),N=l.a.Group,P=l.a.Closeable,j=v.a.Item;var R=n.a.config(function(e){function t(){var e;a(),o&&l&&(e=new Map(Array.from(p)).set(o,l),h(e),d(""),f(""),n())}function n(){i(""),s("")}function a(){d(o?"":"error"),f(l?"":"error")}var r=Object(_.useState)(""),o=(r=Object(O.a)(r,2))[0],i=r[1],r=Object(_.useState)(""),l=(r=Object(O.a)(r,2))[0],s=r[1],r=Object(_.useState)(""),u=(r=Object(O.a)(r,2))[0],d=r[1],r=Object(_.useState)(""),c=(r=Object(O.a)(r,2))[0],f=r[1],r=Object(_.useState)(new Map),p=(r=Object(O.a)(r,2))[0],h=r[1],r=void 0===(r=e.locale)?{}:r;return Object(_.useEffect)(function(){e.setFilters(p)},[p]),b.a.createElement(m.a,{contentHeight:"auto",className:"inner-card"},b.a.createElement(v.a,{inline:!0,size:"small"},b.a.createElement(j,{label:r.title},b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"key",value:o,trim:!0,onChange:function(e){return i(e)},onPressEnter:t,state:u})),b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"value",value:l,trim:!0,onChange:function(e){return s(e)},onPressEnter:t,state:c})),b.a.createElement(j,{label:""},b.a.createElement(g.a,{type:"primary",onClick:t,style:{marginRight:10}},r.addFilter),0\n com.alibaba.nacos\n nacos-client\n ${latest.version}\n \n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\n\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingFactory;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.listener.Event;\nimport com.alibaba.nacos.api.naming.listener.EventListener;\nimport com.alibaba.nacos.api.naming.listener.NamingEvent;\n\n/**\n * @author nkorange\n */\npublic class NamingExample {\n\n public static void main(String[] args) throws NacosException {\n\n Properties properties = new Properties();\n properties.setProperty("serverAddr", System.getProperty("serverAddr"));\n properties.setProperty("namespace", System.getProperty("namespace"));\n\n NamingService naming = NamingFactory.createNamingService(properties);\n\n naming.registerInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n naming.registerInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.deregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.subscribe("').concat(this.record.name,'", new EventListener() {\n @Override\n public void onEvent(Event event) {\n System.out.println(((NamingEvent)event).getServiceName());\n System.out.println(((NamingEvent)event).getInstances());\n }\n });\n }\n}')}},{key:"getSpringCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example\n* pom.xml\n \n com.alibaba.nacos\n nacos-spring-context\n ${latest.version}\n \n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring\npackage com.alibaba.nacos.example.spring;\n\nimport com.alibaba.nacos.api.annotation.NacosProperties;\nimport com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\n@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))\npublic class NacosConfiguration {\n\n}\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring/controller\npackage com.alibaba.nacos.example.spring.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringBootCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example\n* pom.xml\n \n com.alibaba.boot\n nacos-discovery-spring-boot-starter\n ${latest.version}\n \n*/\n/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/resources\n* application.properties\n nacos.discovery.server-addr=127.0.0.1:8848\n*/\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/java/com/alibaba/nacos/example/spring/boot/controller\n\npackage com.alibaba.nacos.example.spring.boot.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringCloudCode",value:function(e){return"/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/\n* pom.xml\n \n org.springframework.cloud\n spring-cloud-starter-alibaba-nacos-discovery\n ${latest.version}\n \n*/\n\n// nacos-spring-cloud-provider-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/resources\n* application.properties\nserver.port=18080\nspring.application.name=".concat(this.record.name,'\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosProviderApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(NacosProviderApplication.class, args);\n}\n\n @RestController\n class EchoController {\n @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)\n public String echo(@PathVariable String string) {\n return "Hello Nacos Discovery " + string;\n }\n }\n}\n\n// nacos-spring-cloud-consumer-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/resources\n* application.properties\nspring.application.name=micro-service-oauth2\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.cloud.client.loadbalancer.LoadBalanced;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.client.RestTemplate;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosConsumerApplication {\n\n @LoadBalanced\n @Bean\n public RestTemplate restTemplate() {\n return new RestTemplate();\n }\n\n public static void main(String[] args) {\n SpringApplication.run(NacosConsumerApplication.class, args);\n }\n\n @RestController\n public class TestController {\n\n private final RestTemplate restTemplate;\n\n @Autowired\n public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}\n\n @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)\n public String echo(@PathVariable String str) {\n return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);\n }\n }\n}')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Naming(x =>\n {\n x.ServerAddresses = new List { "http://localhost:8848/" };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.NamingUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var namingSvc = serviceProvider.GetService();\n\n await namingSvc.RegisterInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n await namingSvc.RegisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(await namingSvc.GetAllInstances("').concat(this.record.name,'")));\n\n await namingSvc.DeregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n var listener = new EventListener();\n\n await namingSvc.Subscribe("').concat(this.record.name,'", listener);\n }\n\n internal class EventListener : IEventListener\n {\n public Task OnEvent(IEvent @event)\n {\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(@event));\n return Task.CompletedTask;\n }\n }\n}\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for ASP.NET Core Integration\nApp.csproj\n\n\n \n\n*/\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/appsettings.json\n* appsettings.json\n{\n "nacos": {\n "ServerAddresses": [ "http://localhost:8848" ],\n "DefaultTimeOut": 15000,\n "Namespace": "cs",\n "ServiceName": "App1",\n "GroupName": "DEFAULT_GROUP",\n "ClusterName": "DEFAULT",\n "Port": 0,\n "Weight": 100,\n "RegisterEnabled": true,\n "InstanceEnabled": true,\n "Ephemeral": true,\n "NamingUseRpc": true,\n "NamingLoadCacheAtStart": ""\n }\n}\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/Startup.cs\nusing Nacos.AspNetCore.V2;\n\npublic class Startup\n{\n public Startup(IConfiguration configuration)\n {\n Configuration = configuration;\n }\n\n public IConfiguration Configuration { get; }\n\n public void ConfigureServices(IServiceCollection services)\n {\n // ....\n services.AddNacosAspNet(Configuration);\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // ....\n }\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}),this.cm.setSize("auto","490px"))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return T.a.createElement("div",null,T.a.createElement(o.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:T.a.createElement("div",null),onClose:this.closeDialog.bind(this)},T.a.createElement("div",{style:{height:500}},T.a.createElement(m.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},T.a.createElement(g.a,{shape:"text",style:{height:40,paddingBottom:10}},T.a.createElement(y,{title:"Java",key:0,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),T.a.createElement(y,{title:"Spring",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.springCode)}),T.a.createElement(y,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigbootCode)}),T.a.createElement(y,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloudCode)}),T.a.createElement(y,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),T.a.createElement(y,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),T.a.createElement(y,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),T.a.createElement(y,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),T.a.createElement(y,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),T.a.createElement("div",{ref:"codepreview"})))))}}]),n}(T.a.Component)).displayName="ShowServiceCodeing",p=p))||p,j=(n(733),n(29)),Y=L.a.Item,I=f.a.Row,R=f.a.Col,A=C.a.Column,f=(0,a.a.config)(((p=function(e){Object(d.a)(a,e);var t=Object(c.a)(a);function a(e){var n;return Object(l.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryServiceList()})},n.showcode=function(){setTimeout(function(){return n.queryServiceList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:e.healthyInstanceCount?"":"row-bg-red"}},n.editServiceDialog=T.a.createRef(),n.showcode=T.a.createRef(),n.state={loading:!1,total:0,pageSize:10,currentPage:1,dataSource:[],search:{serviceName:"",groupName:""},hasIpCount:!("false"===localStorage.getItem("hasIpCount"))},n.field=new i.a(Object(u.a)(n)),n}return Object(s.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryServiceList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.search,o=e.withInstances,o=void 0!==o&&o,e=e.hasIpCount,e=["hasIpCount=".concat(e),"withInstances=".concat(o),"pageNo=".concat(t),"pageSize=".concat(a),"serviceNameParam=".concat(r.serviceName),"groupNameParam=".concat(r.groupName)];this.openLoading(),Object(h.c)({url:"v1/ns/catalog/services?".concat(e.join("&")),success:function(){var e=0o&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:n.totalCount,pageSize:o,onChange:function(e){return t.setState({pageNo:e},function(){return t.getUsers()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.c)(e).then(function(e){return t.setState({pageNo:1},function(){return t.getUsers()}),e})},onCancel:function(){return t.colseCreateUser()}}),h.a.createElement(E.a,{username:e,onOk:function(e){return Object(m.k)(e).then(function(e){return t.getUsers(),e})},onCancel:function(){return t.setState({passwordResetUser:void 0})}}))}}]),n}(h.a.Component)).displayName="UserManagement",n=o))||n)||n;t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),d=n(31),a=(n(62),n(20)),c=n.n(a),a=(n(32),n(18)),f=n.n(a),i=n(14),l=n(15),p=n(17),h=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),m=n.n(r),r=n(43),g=n(45),o=n(79),y=n(48),v=(n(49),n(26)),_=n.n(v),b=n(23),v=(n(58),n(28)),w=n.n(v),v=(n(42),n(9)),M=n.n(v),k=M.a.Item,S=w.a.Option,E={labelCol:{fixedSpan:4},wrapperCol:{span:19}},x=Object(r.b)(function(e){return{namespaces:e.namespace.namespaces}},{getNamespaces:o.b,searchRoles:g.l})(v=(0,a.a.config)(((v=function(e){Object(p.a)(o,e);var r=Object(h.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ai&&m.a.createElement(s.a,{className:"users-pagination",current:l,total:t.totalCount,pageSize:i,onChange:function(e){return a.setState({pageNo:e},function(){return a.getPermissions()})}}),m.a.createElement(x,{visible:n,onOk:function(e){return Object(g.a)(e).then(function(e){return a.setState({pageNo:1},function(){return a.getPermissions()}),e})},onCancel:function(){return a.colseCreatePermission()}}))}}]),n}(m.a.Component)).displayName="PermissionsManagement",n=v))||n)||n);t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),a=(n(62),n(20)),d=n.n(a),a=(n(32),n(18)),c=n.n(a),i=n(14),l=n(15),f=n(17),p=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),h=n.n(r),r=n(43),m=n(45),g=n(48),o=(n(58),n(28)),y=n.n(o),o=(n(40),n(11)),v=n.n(o),o=(n(49),n(26)),_=n.n(o),b=n(23),o=(n(42),n(9)),w=n.n(o),M=w.a.Item,k={labelCol:{fixedSpan:4},wrapperCol:{span:19}},S=Object(r.b)(function(e){return{users:e.authority.users}},{searchUsers:m.m})(o=(0,a.a.config)(((o=function(e){Object(f.a)(o,e);var r=Object(p.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ao&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:t.totalCount,pageSize:o,onChange:function(e){return a.setState({pageNo:e},function(){return a.getRoles()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.b)(e).then(function(e){return a.getRoles(),e})},onCancel:function(){return a.colseCreateRole()}}))}}]),n}(h.a.Component)).displayName="RolesManagement",n=o))||n)||n);t.a=r},function(e,t,n){"use strict";n(41);function o(e){var t=void 0===(t=localStorage.token)?"{}":t,t=(Object(y.c)(t)&&JSON.parse(t)||{}).globalAdmin;return["naming"===e?void 0:v,{key:"serviceManagementVirtual",children:[{key:"serviceManagement",url:"/serviceManagement"},{key:"subscriberList",url:"/subscriberList"}]},t?_:void 0,{key:"namespace",url:"/namespace"},{key:"clusterManagementVirtual",children:[{key:"clusterManagement",url:"/clusterManagement"}]}].filter(function(e){return e})}var a=n(24),i=n.n(a),r=n(14),l=n(15),s=n(17),u=n(16),a=(n(25),n(7)),a=n.n(a),d=n(21),c=(n(78),n(50)),f=n.n(c),c=n(0),p=n.n(c),c=n(37),h=n(43),m=n(131),g=n(98),y=n(47),v={key:"configurationManagementVirtual",children:[{key:"configurationManagement",url:"/configurationManagement"},{key:"historyRollback",url:"/historyRollback"},{key:"listeningToQuery",url:"/listeningToQuery"}]},_={key:"authorityControl",children:[{key:"userList",url:"/userManagement"},{key:"roleManagement",url:"/rolesManagement"},{key:"privilegeManagement",url:"/permissionsManagement"}]},b=f.a.SubMenu,w=f.a.Item,c=(n=Object(h.b)(function(e){return Object(d.a)(Object(d.a)({},e.locale),e.base)},{getState:g.b}),h=a.a.config,Object(c.g)(a=n(a=h(((g=function(e){Object(s.a)(n,e);var t=Object(u.a)(n);function n(){return Object(r.a)(this,n),t.apply(this,arguments)}return Object(l.a)(n,[{key:"componentDidMount",value:function(){this.props.getState()}},{key:"goBack",value:function(){this.props.history.goBack()}},{key:"navTo",value:function(e){var t=this.props.location.search;this.props.history.push([e,t].join(""))}},{key:"isCurrentPath",value:function(e){return e===this.props.location.pathname?"current-path":void 0}},{key:"defaultOpenKeys",value:function(){for(var t=this,e=o(this.props.functionMode),n=0,a=e.length;nthis.state.pageSize&&k.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},k.a.createElement(y.a,{current:this.state.pageNo,total:a,pageSize:this.state.pageSize,onChange:function(e){return t.setState({pageNo:e},function(){return t.querySubscriberList()})}}))))}}]),a}(k.a.Component)).displayName="SubscriberList",c=n))||c)||c;t.a=f},function(e,t,n){"use strict";n(51);var a=n(33),f=n.n(a),a=(n(63),n(46)),p=n.n(a),a=(n(171),n(72)),h=n.n(a),a=(n(40),n(11)),m=n.n(a),a=(n(32),n(18)),g=n.n(a),a=(n(34),n(19)),r=n.n(a),a=(n(49),n(26)),o=n.n(a),i=n(14),l=n(15),s=n(23),u=n(17),d=n(16),a=(n(25),n(7)),a=n.n(a),c=(n(399),n(112)),y=n.n(c),c=(n(62),n(20)),v=n.n(c),c=(n(65),n(38)),c=n.n(c),_=(n(42),n(9)),b=n.n(_),_=n(0),w=n.n(_),M=n(1),k=n(48),_=n(133),S=n.n(_),E=(n(736),b.a.Item),x=c.a.Row,C=c.a.Col,L=v.a.Column,T=y.a.Panel,c=(0,a.a.config)(((_=function(e){Object(u.a)(a,e);var t=Object(d.a)(a);function a(e){var n;return Object(i.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryClusterStateList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:(e.voteFor,"")}},n.state={loading:!1,total:0,pageSize:10,currentPage:1,keyword:"",dataSource:[]},n.field=new o.a(Object(s.a)(n)),n}return Object(l.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryClusterStateList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.keyword,e=e.withInstances,e=["withInstances=".concat(void 0!==e&&e),"pageNo=".concat(t),"pageSize=".concat(a),"keyword=".concat(r)];Object(M.c)({url:"v1/core/cluster/nodes?".concat(e.join("&")),beforeSend:function(){return n.openLoading()},success:function(){var e=0this.state.pageSize&&w.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},w.a.createElement(p.a,{current:this.state.currentPage,total:this.state.total,pageSize:this.state.pageSize,onChange:function(e){return t.setState({currentPage:e},function(){return t.queryClusterStateList()})}}))))}}]),a}(w.a.Component)).displayName="ClusterNodeList",n=_))||n;t.a=c},function(e,t,F){"use strict";F.r(t),function(e){F(51);var t=F(33),a=F.n(t),t=(F(25),F(7)),r=F.n(t),o=F(14),i=F(15),l=F(17),s=F(16),n=F(21),t=F(0),u=F.n(t),t=F(22),t=F.n(t),d=F(115),c=F(407),f=F(419),p=F(43),h=F(37),m=F(96),g=(F(454),F(428)),y=F(29),v=F(429),_=F(422),b=F(430),w=F(431),M=F(423),k=F(432),S=F(433),E=F(434),x=F(435),C=F(436),L=F(420),T=F(424),D=F(421),O=F(437),N=F(438),P=F(425),j=F(426),I=F(427),R=F(417),Y=F(418),A=F(101),e=(F(739),e.hot,localStorage.getItem(y.f)||localStorage.setItem(y.f,"zh-CN"===navigator.language?"zh-CN":"en-US"),Object(d.b)(Object(n.a)(Object(n.a)({},Y.a),{},{routing:c.routerReducer}))),Y=Object(d.d)(e,Object(d.c)(Object(d.a)(f.a),window[y.i]?window[y.i]():function(e){return e})),H=[{path:"/",exact:!0,render:function(){return u.a.createElement(h.a,{to:"/welcome"})}},{path:"/welcome",component:R.a},{path:"/namespace",component:_.a},{path:"/newconfig",component:b.a},{path:"/configsync",component:w.a},{path:"/configdetail",component:M.a},{path:"/configeditor",component:k.a},{path:"/historyDetail",component:S.a},{path:"/configRollback",component:E.a},{path:"/historyRollback",component:x.a},{path:"/listeningToQuery",component:C.a},{path:"/configurationManagement",component:L.a},{path:"/serviceManagement",component:T.a},{path:"/serviceDetail",component:D.a},{path:"/subscriberList",component:O.a},{path:"/clusterManagement",component:N.a},{path:"/userManagement",component:P.a},{path:"/rolesManagement",component:I.a},{path:"/permissionsManagement",component:j.a}],e=Object(p.b)(function(e){return Object(n.a)({},e.locale)},{changeLanguage:A.a})(c=function(e){Object(l.a)(n,e);var t=Object(s.a)(n);function n(e){return Object(o.a)(this,n),(e=t.call(this,e)).state={shownotice:"none",noticecontent:"",nacosLoading:{}},e}return Object(i.a)(n,[{key:"componentDidMount",value:function(){var e=localStorage.getItem(y.f);this.props.changeLanguage(e)}},{key:"router",get:function(){return u.a.createElement(m.a,null,u.a.createElement(h.d,null,u.a.createElement(h.b,{path:"/login",component:v.a}),u.a.createElement(g.a,null,H.map(function(e){return u.a.createElement(h.b,Object.assign({key:e.path},e))}))))}},{key:"render",value:function(){var e=this.props.locale;return u.a.createElement(a.a,Object.assign({className:"nacos-loading",shape:"flower",tip:"loading...",visible:!1,fullScreen:!0},this.state.nacosLoading),u.a.createElement(r.a,{locale:e},this.router))}}]),n}(u.a.Component))||c;t.a.render(u.a.createElement(p.a,{store:Y},u.a.createElement(e,null)),document.getElementById("root"))}.call(this,F(440)(e))},function(e,t){e.exports=function(e){var t;return e.webpackPolyfill||((t=Object.create(e)).children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1),t}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(I,e,t){"use strict"; /** @license React v16.14.0 * react.production.min.js * From f39add7900331a5f8b86dc2a00728ab40c6279ec Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 29 Apr 2022 23:02:32 +0800 Subject: [PATCH 002/133] Replace keySet() to entrySet() (#8281) --- .../main/java/com/alibaba/nacos/common/http/HttpUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/alibaba/nacos/common/http/HttpUtils.java b/common/src/main/java/com/alibaba/nacos/common/http/HttpUtils.java index feba543e751..df32baca2c9 100644 --- a/common/src/main/java/com/alibaba/nacos/common/http/HttpUtils.java +++ b/common/src/main/java/com/alibaba/nacos/common/http/HttpUtils.java @@ -177,8 +177,8 @@ public static String buildUrl(boolean isHttps, String serverAddr, String... subP */ public static Map translateParameterMap(Map parameterMap) throws Exception { Map map = new HashMap(16); - for (String key : parameterMap.keySet()) { - map.put(key, parameterMap.get(key)[0]); + for (Map.Entry entry : parameterMap.entrySet()) { + map.put(entry.getKey(), entry.getValue()[0]); } return map; } From bda6ecad6683fba382e929f156b88f19843bd4b1 Mon Sep 17 00:00:00 2001 From: Roger3581321 Date: Sat, 30 Apr 2022 21:24:30 +0800 Subject: [PATCH 003/133] [Optimize] Replace keySet() to entrySet() (#8286) Optimized translateParameterMap() by replacing keySet() to entrySet() --- .../main/java/com/alibaba/nacos/naming/misc/NamingProxy.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/naming/src/main/java/com/alibaba/nacos/naming/misc/NamingProxy.java b/naming/src/main/java/com/alibaba/nacos/naming/misc/NamingProxy.java index 2ebfd9ba282..83a23538af5 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/misc/NamingProxy.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/misc/NamingProxy.java @@ -347,8 +347,8 @@ public Request appendParam(String key, String value) { */ public String toUrl() { StringBuilder sb = new StringBuilder(); - for (String key : params.keySet()) { - sb.append(key).append('=').append(params.get(key)).append('&'); + for (Map.Entry entry : params.entrySet()) { + sb.append(entry.getKey()).append('=').append(entry.getValue()).append('&'); } return sb.toString(); } From fac7a1c6a1c24b0f9c288875693f512da9e2c7c2 Mon Sep 17 00:00:00 2001 From: Roger3581321 Date: Thu, 5 May 2022 22:04:21 +0800 Subject: [PATCH 004/133] Deleting redundant toString() method (#8291) --- .../com/alibaba/nacos/config/server/filter/CurcuitFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/filter/CurcuitFilter.java b/config/src/main/java/com/alibaba/nacos/config/server/filter/CurcuitFilter.java index 6e9109d182c..fb26c50b345 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/filter/CurcuitFilter.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/filter/CurcuitFilter.java @@ -102,7 +102,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha resp.sendError(HttpServletResponse.SC_FORBIDDEN, "access denied: " + ExceptionUtil.getAllExceptionMsg(e)); } catch (Throwable e) { DEFAULT_LOG.warn("[CURCUIT-FILTER] Server failed: ", e); - resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Server failed, " + e.toString()); + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Server failed, " + e); } } From 2233c2de1c98da50962124b67478ded4aee6e397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cherish=20=E8=94=A1?= <785427346@qq.com> Date: Fri, 6 May 2022 11:46:12 +0800 Subject: [PATCH 005/133] feat(#6506): Can change betaIps multiple times in beta(or gray). (#8234) 1. And fix SQL `encrypted_data_key=?WHERE`. --- .../config/server/service/ConfigCacheService.java | 2 +- .../EmbeddedStoragePersistServiceImpl.java | 8 ++++---- .../extrnal/ExternalStoragePersistServiceImpl.java | 14 +++++++------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/ConfigCacheService.java b/config/src/main/java/com/alibaba/nacos/config/server/service/ConfigCacheService.java index 464029c6c6a..6a22c7af4ca 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/ConfigCacheService.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/ConfigCacheService.java @@ -521,7 +521,7 @@ public static void updateMd5(String groupKey, String md5, long lastModifiedTs, S public static void updateBetaMd5(String groupKey, String md5, List ips4Beta, long lastModifiedTs, String encryptedDataKey) { CacheItem cache = makeSure(groupKey, encryptedDataKey, true); - if (cache.md54Beta == null || !cache.md54Beta.equals(md5)) { + if (cache.md54Beta == null || !cache.md54Beta.equals(md5) || !ips4Beta.equals(cache.ips4Beta)) { cache.isBeta = true; cache.md54Beta = md5; cache.lastModifiedTs4Beta = lastModifiedTs; diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java index d4cc8a808ae..c3051c9ac73 100755 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java @@ -357,9 +357,9 @@ public void updateConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - final String sql = "UPDATE config_info_beta SET content=?,md5=?,src_ip=?,src_user=?,gmt_modified=?,app_name=?,encrypted_data_key=? WHERE data_id=? AND group_id=? AND tenant_id=?"; + final String sql = "UPDATE config_info_beta SET content=?,md5=?,beta_ips=?,src_ip=?,src_user=?,gmt_modified=?,app_name=?,encrypted_data_key=? WHERE data_id=? AND group_id=? AND tenant_id=?"; - final Object[] args = new Object[] {configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, + final Object[] args = new Object[] {configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp}; EmbeddedStorageContextUtils.onModifyConfigBetaInfo(configInfo, betaIps, srcIp, time); @@ -381,9 +381,9 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - final String sql = "UPDATE config_info_beta SET content=?,md5=?,src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE data_id=? AND group_id=? AND tenant_id=? AND (md5=? OR md5 IS NULL OR md5='')"; + final String sql = "UPDATE config_info_beta SET content=?,md5=?,beta_ips=?,src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE data_id=? AND group_id=? AND tenant_id=? AND (md5=? OR md5 IS NULL OR md5='')"; - final Object[] args = new Object[] {configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, + final Object[] args = new Object[] {configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, configInfo.getMd5()}; EmbeddedStorageContextUtils.onModifyConfigBetaInfo(configInfo, betaIps, srcIp, time); diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java index 2f7619d0795..1e6c343c586 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java @@ -307,8 +307,8 @@ public void updateConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String : configInfo.getEncryptedDataKey(); try { jt.update( - "UPDATE config_info_beta SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=?,encrypted_data_key = ?WHERE " - + "data_id=? AND group_id=? AND tenant_id=?", configInfo.getContent(), md5, srcIp, srcUser, + "UPDATE config_info_beta SET content=?, md5=?, beta_ips=?, src_ip=?,src_user=?,gmt_modified=?,app_name=?,encrypted_data_key=? " + + " WHERE data_id=? AND group_id=? AND tenant_id=?", configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -324,9 +324,9 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); try { return jt - .update("UPDATE config_info_beta SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE " - + "data_id=? AND group_id=? AND tenant_id=? AND (md5=? or md5 is null or md5='')", - configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), + .update("UPDATE config_info_beta SET content=?, md5=?, beta_ips=?, src_ip=?,src_user=?,gmt_modified=?,app_name=? " + + " WHERE data_id=? AND group_id=? AND tenant_id=? AND (md5=? or md5 is null or md5='')", + configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, configInfo.getMd5()) > 0; } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -2261,8 +2261,8 @@ public void updateConfigInfoAtomic(final ConfigInfo configInfo, final String src try { jt.update("UPDATE config_info SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?," - + "app_name=?,c_desc=?,c_use=?,effect=?,type=?,c_schema=?,encrypted_data_key=?" - + "WHERE data_id=? AND group_id=? AND tenant_id=?", configInfo.getContent(), md5Tmp, srcIp, srcUser, + + "app_name=?,c_desc=?,c_use=?,effect=?,type=?,c_schema=?,encrypted_data_key=? " + + " WHERE data_id=? AND group_id=? AND tenant_id=?", configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp); } catch (CannotGetJdbcConnectionException e) { From 7dc1c821661673fdc9b8ffebe328ddf9d54fdf72 Mon Sep 17 00:00:00 2001 From: drgnchan <40224023+drgnchan@users.noreply.github.com> Date: Fri, 6 May 2022 11:47:22 +0800 Subject: [PATCH 006/133] use getEncryptDataKeySnapshot instead of getEncryptDataKeyFailover (#8096) --- .../com/alibaba/nacos/client/config/NacosConfigService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java index 9311262fbda..9302f9051fd 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java @@ -183,7 +183,7 @@ private String getConfigInner(String tenant, String dataId, String group, long t content = LocalConfigInfoProcessor.getSnapshot(worker.getAgentName(), dataId, group, tenant); cr.setContent(content); String encryptedDataKey = LocalEncryptedDataKeyProcessor - .getEncryptDataKeyFailover(agent.getName(), dataId, group, tenant); + .getEncryptDataKeySnapshot(agent.getName(), dataId, group, tenant); cr.setEncryptedDataKey(encryptedDataKey); configFilterChainManager.doFilter(null, cr); content = cr.getContent(); From dc33cf2c8f2bbb0c5fc913b2fbf3e3ffa566bbce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A8=BE=E6=98=8E=E5=8D=8E?= <565209960@qq.com> Date: Fri, 6 May 2022 11:48:11 +0800 Subject: [PATCH 007/133] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=A0=81=E4=B8=BA404=E7=9A=84=E5=88=A4=E6=96=AD=20(#7?= =?UTF-8?q?984)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 由于目前调用GET: /nacos/v1/cs/configs,当配置不存在时,会返回状态码为404。此处无法识别错误,导致日志看不出来 --- .../com/alibaba/nacos/client/config/http/ServerHttpAgent.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/main/java/com/alibaba/nacos/client/config/http/ServerHttpAgent.java b/client/src/main/java/com/alibaba/nacos/client/config/http/ServerHttpAgent.java index 471bb00f877..ae2d94473f5 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/http/ServerHttpAgent.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/http/ServerHttpAgent.java @@ -225,7 +225,8 @@ private String getUrl(String serverAddr, String relativePath) { private boolean isFail(HttpRestResult result) { return result.getCode() == HttpURLConnection.HTTP_INTERNAL_ERROR || result.getCode() == HttpURLConnection.HTTP_BAD_GATEWAY - || result.getCode() == HttpURLConnection.HTTP_UNAVAILABLE; + || result.getCode() == HttpURLConnection.HTTP_UNAVAILABLE + || result.getCode() == HttpURLConnection.HTTP_NOT_FOUND; } public static String getAppname() { From 341bc298a27aad768801724bf531cfceec80d2a6 Mon Sep 17 00:00:00 2001 From: bangbang2333 <43024629+bangbang2333@users.noreply.github.com> Date: Fri, 6 May 2022 11:50:40 +0800 Subject: [PATCH 008/133] ## @Desc: (#8063) [ISSUE #8038] Fix config_tags_relation Table can Repeat Insert bug ## @Issue Link: https://github.com/alibaba/nacos/issues/8038 --- .../repository/embedded/EmbeddedStoragePersistServiceImpl.java | 2 +- .../repository/extrnal/ExternalStoragePersistServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java index c3051c9ac73..85e61479afc 100755 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java @@ -1970,7 +1970,7 @@ public long addConfigInfoAtomic(final long id, final String srcIp, final String public void addConfigTagRelationAtomic(long configId, String tagName, String dataId, String group, String tenant) { final String sql = "INSERT INTO config_tags_relation(id,tag_name,tag_type,data_id,group_id,tenant_id) " + "VALUES(?,?,?,?,?,?)"; - final Object[] args = new Object[] {configId, tagName, null, dataId, group, tenant}; + final Object[] args = new Object[] {configId, tagName, StringUtils.EMPTY, dataId, group, tenant}; EmbeddedStorageContextUtils.addSqlContext(sql, args); } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java index 1e6c343c586..aa654d2247a 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java @@ -2146,7 +2146,7 @@ public void addConfigTagRelationAtomic(long configId, String tagName, String dat try { jt.update( "INSERT INTO config_tags_relation(id,tag_name,tag_type,data_id,group_id,tenant_id) VALUES(?,?,?,?,?,?)", - configId, tagName, null, dataId, group, tenant); + configId, tagName, StringUtils.EMPTY, dataId, group, tenant); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; From 234e6f2a114f348b3dd28dfee59cbf9d5eb8c728 Mon Sep 17 00:00:00 2001 From: onewe Date: Mon, 9 May 2022 13:09:38 +0800 Subject: [PATCH 009/133] [ISSUE #8295] fix can't login when use embedded storage in cluster model (#8304) Close #8295 --- .../nacos/config/server/service/repository/RowMapperManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/RowMapperManager.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/RowMapperManager.java index 7d876d6e7ce..970bbc24b88 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/RowMapperManager.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/RowMapperManager.java @@ -167,6 +167,7 @@ public static synchronized void registerRowMapper(String classFullName, RowM mapperMap.get(classFullName).getClass().getCanonicalName(), rowMapper.getClass().getCanonicalName()); } + mapperMap.put(classFullName, rowMapper); } public static final class MapRowMapper implements RowMapper> { From a1c7715e16d73f17dfb3d9439be2b008f8f7fe81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BF=8A=20SionYang?= Date: Mon, 9 May 2022 16:08:59 +0800 Subject: [PATCH 010/133] [ISSUE#4982] Fix naming module unit test and generate jacoco coverage report (#8282) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 更新jacoco版本 * Fix naming module unit test and generate jacoco coverage. * Fix log too long problem. * Fix MetricsMonitorTest --- .github/workflows/ci.yml | 2 +- naming/pom.xml | 16 ++--- .../com/alibaba/nacos/naming/BaseTest.java | 2 +- ...entConsistencyServiceDelegateImplTest.java | 1 + .../controllers/CatalogControllerTest.java | 2 +- .../controllers/InstanceControllerV2Test.java | 1 - .../nacos/naming/core/DistroMapperTest.java | 3 +- .../alibaba/nacos/naming/core/DomainTest.java | 6 ++ .../core/InstanceOperatorClientImplTest.java | 60 +++++++++++++------ .../nacos/naming/core/ServiceManagerTest.java | 11 ++++ .../core/ServiceOperatorV2ImplTest.java | 19 ++++-- .../nacos/naming/core/ServiceTest.java | 9 ++- .../NamingEventPublisherFactoryTest.java | 7 +++ .../delay/DoubleWriteEventListenerTest.java | 5 ++ .../naming/monitor/MetricsMonitorTest.java | 6 ++ .../instance/BeatInfoInstanceBuilderTest.java | 3 +- .../HttpRequestInstanceBuilderTest.java | 6 +- .../v2/executor/PushExecutorRpcImplTest.java | 21 ++++++- .../v2/executor/PushExecutorUdpImplTest.java | 17 ++++++ .../nacos/naming/raft/RaftStoreTest.java | 20 ++++--- .../naming/remote/udp/UdpConnectorTest.java | 24 ++++++-- pom.xml | 38 +++--------- 22 files changed, 193 insertions(+), 86 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fdc09b1c430..368d2f0ad85 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,4 +34,4 @@ jobs: - name: Build with Maven run: mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U - name: Test With Maven - run: mvn -Prelease-nacos clean test -DforkCount=0 + run: mvn -Prelease-nacos clean test diff --git a/naming/pom.xml b/naming/pom.xml index d6ca6a8d3b7..e457a2710f3 100644 --- a/naming/pom.xml +++ b/naming/pom.xml @@ -157,14 +157,14 @@ - - org.apache.maven.plugins - maven-surefire-plugin - - true - -Dnacos.standalone=true - - + + + + + + + + org.apache.maven.plugins maven-assembly-plugin diff --git a/naming/src/test/java/com/alibaba/nacos/naming/BaseTest.java b/naming/src/test/java/com/alibaba/nacos/naming/BaseTest.java index 6507faed0b0..3d1ca30a821 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/BaseTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/BaseTest.java @@ -91,7 +91,7 @@ public abstract class BaseTest { protected UpgradeJudgement upgradeJudgement; @Spy - private MockEnvironment environment; + protected MockEnvironment environment; @Before public void before() { diff --git a/naming/src/test/java/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImplTest.java b/naming/src/test/java/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImplTest.java index 15e4af433c3..17d180e3232 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImplTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImplTest.java @@ -64,6 +64,7 @@ public void setUp() throws Exception { MockEnvironment environment = new MockEnvironment(); environment.setProperty(Constants.SUPPORT_UPGRADE_FROM_1X, "true"); EnvUtil.setEnvironment(environment); + EnvUtil.setIsStandalone(true); oldPersistentConsistencyServiceDelegate = new PersistentConsistencyServiceDelegateImpl(clusterVersionJudgement, raftConsistencyService, protocolManager); diff --git a/naming/src/test/java/com/alibaba/nacos/naming/controllers/CatalogControllerTest.java b/naming/src/test/java/com/alibaba/nacos/naming/controllers/CatalogControllerTest.java index 13ad94c47f7..9ff9ddbff1b 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/controllers/CatalogControllerTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/controllers/CatalogControllerTest.java @@ -97,7 +97,7 @@ public void testServiceDetail() throws Exception { assertTrue(actual.contains("\"groupName\":\"test-group-name\"")); assertTrue(actual.contains("\"metadata\":{}")); assertTrue(actual.contains("\"name\":\"test-service\"")); - assertTrue(actual.contains("\"selector\":{\"type\":\"none\"}")); + assertTrue(actual.contains("\"selector\":{\"type\":\"none\",\"contextType\":\"NONE\"}")); assertTrue(actual.contains("\"protectThreshold\":12.34")); assertTrue(actual.contains("\"clusters\":[{")); assertTrue(actual.contains("\"defaultCheckPort\":80")); diff --git a/naming/src/test/java/com/alibaba/nacos/naming/controllers/InstanceControllerV2Test.java b/naming/src/test/java/com/alibaba/nacos/naming/controllers/InstanceControllerV2Test.java index a73b12979f7..217c6c1b4c4 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/controllers/InstanceControllerV2Test.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/controllers/InstanceControllerV2Test.java @@ -51,7 +51,6 @@ public class InstanceControllerV2Test extends BaseTest { public void before() { super.before(); ReflectionTestUtils.setField(instanceControllerV2, "instanceServiceV2", instanceServiceV2); - mockInjectPushServer(); mockmvc = MockMvcBuilders.standaloneSetup(instanceControllerV2).build(); } diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/DistroMapperTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/DistroMapperTest.java index 5f2d1ba7458..cf9c7b2d860 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/DistroMapperTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/DistroMapperTest.java @@ -59,6 +59,7 @@ public class DistroMapperTest { public void setUp() { ConcurrentSkipListMap serverList = new ConcurrentSkipListMap<>(); EnvUtil.setEnvironment(new StandardEnvironment()); + EnvUtil.setIsStandalone(true); serverList.put(ip1, Member.builder().ip(ip1).port(port).build()); serverList.put(ip2, Member.builder().ip(ip2).port(port).build()); serverList.put(ip3, Member.builder().ip(ip3).port(port).build()); @@ -79,4 +80,4 @@ public void testMapSrv() { String server = distroMapper.mapSrv(serviceName); assertEquals(server, ip4); } -} \ No newline at end of file +} diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/DomainTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/DomainTest.java index 4f559b39491..31aa3c23778 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/DomainTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/DomainTest.java @@ -19,6 +19,7 @@ import com.alibaba.nacos.naming.BaseTest; import com.alibaba.nacos.naming.core.v2.upgrade.doublewrite.delay.DoubleWriteEventListener; import com.alibaba.nacos.naming.misc.UtilsAndCommons; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -48,6 +49,11 @@ public void before() { mockInjectPushServer(); } + @After + public void tearDown() throws Exception { + service.destroy(); + } + @Test public void updateDomain() { diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/InstanceOperatorClientImplTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/InstanceOperatorClientImplTest.java index 16f9eef4825..d31045bb092 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/InstanceOperatorClientImplTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/InstanceOperatorClientImplTest.java @@ -19,6 +19,7 @@ import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.naming.NamingResponseCode; +import com.alibaba.nacos.api.naming.pojo.Instance; import com.alibaba.nacos.api.naming.pojo.ServiceInfo; import com.alibaba.nacos.naming.core.v2.ServiceManager; import com.alibaba.nacos.naming.core.v2.client.impl.IpPortBasedClient; @@ -30,14 +31,15 @@ import com.alibaba.nacos.naming.core.v2.metadata.ServiceMetadata; import com.alibaba.nacos.naming.core.v2.pojo.Service; import com.alibaba.nacos.naming.core.v2.service.ClientOperationServiceProxy; -import com.alibaba.nacos.api.naming.pojo.Instance; import com.alibaba.nacos.naming.healthcheck.RsInfo; import com.alibaba.nacos.naming.misc.SwitchDomain; import com.alibaba.nacos.naming.pojo.InstanceOperationInfo; import com.alibaba.nacos.naming.pojo.Subscriber; import com.alibaba.nacos.naming.pojo.instance.BeatInfoInstanceBuilder; import com.alibaba.nacos.naming.push.UdpPushService; +import com.alibaba.nacos.naming.selector.SelectorManager; import com.alibaba.nacos.sys.env.EnvUtil; +import com.alibaba.nacos.sys.utils.ApplicationUtils; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -47,6 +49,8 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.stubbing.Answer; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.mock.env.MockEnvironment; import java.util.Collections; @@ -55,6 +59,9 @@ import java.util.Map; import java.util.Optional; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + /** * {@link InstanceOperatorClientImpl} unit tests. * @@ -88,11 +95,21 @@ public class InstanceOperatorClientImplTest { @Mock private UdpPushService pushService; + @Mock + private SelectorManager selectorManager; + + @Mock + private ConfigurableApplicationContext context; + @Before public void setUp() { Service service = Service.newService("A", "DEFAULT_GROUP", "C"); ServiceManager.getInstance().getSingleton(service); EnvUtil.setEnvironment(new MockEnvironment()); + ApplicationUtils.injectContext(context); + when(context.getBean(SelectorManager.class)).thenReturn(selectorManager); + when(selectorManager.select(any(), any(), any())) + .then((Answer>) invocationOnMock -> invocationOnMock.getArgument(2)); } @After @@ -104,13 +121,13 @@ public void tearDown() { @Test public void testRegisterInstance() { instanceOperatorClient.registerInstance("A", "B", new Instance()); - + Mockito.verify(clientOperationService).registerInstance(Mockito.any(), Mockito.any(), Mockito.anyString()); } @Test public void testRemoveInstance() { - Mockito.when(clientManager.contains(Mockito.anyString())).thenReturn(true); + when(clientManager.contains(Mockito.anyString())).thenReturn(true); instanceOperatorClient.removeInstance("A", "B", new Instance()); @@ -136,24 +153,25 @@ public void testPatchInstance() throws NacosException { ServiceInfo serviceInfo = new ServiceInfo(); serviceInfo.setHosts(instances); - Mockito.when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); + when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); instanceOperatorClient.patchInstance("A", "B", new InstancePatchObject("C", "1.1.1.1", 8848)); - Mockito.verify(metadataOperateService).updateInstanceMetadata(Mockito.any(), Mockito.anyString(), Mockito.any()); + Mockito.verify(metadataOperateService) + .updateInstanceMetadata(Mockito.any(), Mockito.anyString(), Mockito.any()); } @Test public void testListInstance() { - Mockito.when(pushService.canEnablePush(Mockito.anyString())).thenReturn(true); + when(pushService.canEnablePush(Mockito.anyString())).thenReturn(true); ServiceInfo serviceInfo = new ServiceInfo(); serviceInfo.setGroupName("DEFAULT_GROUP"); serviceInfo.setName("B"); - Mockito.when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); - + when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); + ServiceMetadata metadata = new ServiceMetadata(); - Mockito.when(metadataManager.getServiceMetadata(Mockito.any())).thenReturn(Optional.of(metadata)); + when(metadataManager.getServiceMetadata(Mockito.any())).thenReturn(Optional.of(metadata)); Subscriber subscriber = new Subscriber("2.2.2.2", "", "app", "1.1.1.1", "A", "B", 8848); instanceOperatorClient.listInstance("A", "B", subscriber, "C", true); @@ -164,13 +182,15 @@ public void testListInstance() { @Test public void testHandleBeat() throws NacosException { IpPortBasedClient ipPortBasedClient = Mockito.mock(IpPortBasedClient.class); - Mockito.when(clientManager.getClient(Mockito.anyString())).thenReturn(ipPortBasedClient); + when(clientManager.getClient(Mockito.anyString())).thenReturn(ipPortBasedClient); - Mockito.when(ipPortBasedClient.getAllPublishedService()).thenReturn(Collections.emptyList()); + when(ipPortBasedClient.getAllPublishedService()).thenReturn(Collections.emptyList()); + RsInfo rsInfo = new RsInfo(); + rsInfo.setMetadata(new HashMap<>(1)); int res = instanceOperatorClient - .handleBeat("A", "C", "1.1.1.1", 8848, "D", new RsInfo(), BeatInfoInstanceBuilder.newBuilder()); - + .handleBeat("A", "C", "1.1.1.1", 8848, "D", rsInfo, BeatInfoInstanceBuilder.newBuilder()); + Assert.assertEquals(NamingResponseCode.OK, res); } @@ -179,9 +199,10 @@ public void testGetHeartBeatInterval() { InstanceMetadata instanceMetadata = new InstanceMetadata(); Map map = new HashMap<>(2); instanceMetadata.setExtendData(map); - Mockito.when(metadataManager.getInstanceMetadata(Mockito.any(), Mockito.anyString())).thenReturn(Optional.of(instanceMetadata)); + when(metadataManager.getInstanceMetadata(Mockito.any(), Mockito.anyString())) + .thenReturn(Optional.of(instanceMetadata)); - Mockito.when(switchDomain.getClientBeatInterval()).thenReturn(100L); + when(switchDomain.getClientBeatInterval()).thenReturn(100L); long interval = instanceOperatorClient.getHeartBeatInterval("A", "C", "1.1.1.1", 8848, "D"); @@ -193,7 +214,7 @@ public void testListAllInstances() throws NacosException { ServiceInfo serviceInfo = new ServiceInfo(); serviceInfo.setHosts(Collections.emptyList()); - Mockito.when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); + when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); List instances = instanceOperatorClient.listAllInstances("A", "C"); @@ -208,7 +229,7 @@ public void testBatchUpdateMetadata() throws NacosException { instance.setPort(8848); ServiceInfo serviceInfo = new ServiceInfo(); serviceInfo.setHosts(Collections.singletonList(instance)); - Mockito.when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); + when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); InstanceOperationInfo instanceOperationInfo = new InstanceOperationInfo(); List res = instanceOperatorClient.batchUpdateMetadata("A", instanceOperationInfo, new HashMap<>()); @@ -224,9 +245,10 @@ public void testBatchDeleteMetadata() throws NacosException { instance.setPort(8848); ServiceInfo serviceInfo = new ServiceInfo(); serviceInfo.setHosts(Collections.singletonList(instance)); - Mockito.when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); + when(serviceStorage.getData(Mockito.any())).thenReturn(serviceInfo); - List res = instanceOperatorClient.batchDeleteMetadata("A", new InstanceOperationInfo(), new HashMap<>()); + List res = instanceOperatorClient + .batchDeleteMetadata("A", new InstanceOperationInfo(), new HashMap<>()); Assert.assertEquals(1, res.size()); } diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceManagerTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceManagerTest.java index d06b2903326..925aec34da2 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceManagerTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceManagerTest.java @@ -28,9 +28,11 @@ import com.alibaba.nacos.naming.consistency.Datum; import com.alibaba.nacos.naming.consistency.KeyBuilder; import com.alibaba.nacos.naming.core.ServiceManager.ServiceChecksum; +import com.alibaba.nacos.naming.core.v2.upgrade.doublewrite.delay.DoubleWriteEventListener; import com.alibaba.nacos.naming.misc.Message; import com.alibaba.nacos.naming.misc.Synchronizer; import com.alibaba.nacos.naming.misc.UtilsAndCommons; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -71,6 +73,9 @@ public class ServiceManagerTest extends BaseTest { @Mock private ServerMemberManager serverMemberManager; + @Mock + private DoubleWriteEventListener doubleWriteEventListener; + private Service service; private Cluster cluster; @@ -93,6 +98,12 @@ public void before() { mockCluster(); mockInstance(); mockServiceName(); + when(context.getBean(DoubleWriteEventListener.class)).thenReturn(doubleWriteEventListener); + } + + @After + public void tearDown() throws Exception { + service.destroy(); } private void mockService() { diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceOperatorV2ImplTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceOperatorV2ImplTest.java index 61840ef0801..550b578ebf6 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceOperatorV2ImplTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceOperatorV2ImplTest.java @@ -37,7 +37,9 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.util.ReflectionUtils; +import java.lang.reflect.Field; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -66,15 +68,24 @@ public class ServiceOperatorV2ImplTest { private ServiceStorage serviceStorage; @Before - public void setUp() { + public void setUp() throws IllegalAccessException { + cleanNamespace(); Service service = Service.newService("A", "B", "C"); ServiceManager.getInstance().getSingleton(service); } @After - public void tearDown() { + public void tearDown() throws IllegalAccessException { Service service = Service.newService("A", "B", "C"); ServiceManager.getInstance().removeSingleton(service); + cleanNamespace(); + } + + private void cleanNamespace() throws IllegalAccessException { + Field field = ReflectionUtils.findField(ServiceManager.class, "namespaceSingletonMaps"); + field.setAccessible(true); + Map map = (Map) field.get(ServiceManager.getInstance()); + map.clear(); } @Test @@ -97,7 +108,7 @@ public void testDelete() throws NacosException { serviceInfo.setHosts(Collections.emptyList()); Mockito.when(serviceStorage.getPushData(Mockito.any())).thenReturn(serviceInfo); - serviceOperatorV2.delete("A", "C"); + serviceOperatorV2.delete("A", "B@@C"); Mockito.verify(metadataOperateService).deleteServiceMetadata(Mockito.any()); } @@ -113,7 +124,7 @@ public void testQueryService() throws NacosException { Mockito.when(serviceStorage.getClusters(Mockito.any())).thenReturn(Collections.singleton("D")); - ObjectNode objectNode = serviceOperatorV2.queryService("A", "C"); + ObjectNode objectNode = serviceOperatorV2.queryService("A", "B@@C"); Assert.assertEquals("A", objectNode.get(FieldsConstants.NAME_SPACE_ID).asText()); Assert.assertEquals("C", objectNode.get(FieldsConstants.NAME).asText()); diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceTest.java index dc38170c08b..0ce7efe3ea1 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/ServiceTest.java @@ -16,11 +16,13 @@ package com.alibaba.nacos.naming.core; +import com.alibaba.nacos.api.selector.SelectorType; import com.alibaba.nacos.common.utils.JacksonUtils; import com.alibaba.nacos.naming.BaseTest; import com.alibaba.nacos.naming.core.v2.upgrade.doublewrite.delay.DoubleWriteEventListener; import com.alibaba.nacos.naming.selector.NoneSelector; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -54,6 +56,11 @@ public void before() { mockInjectSwitchDomain(); } + @After + public void tearDown() throws Exception { + service.destroy(); + } + @Test public void testUpdateIPs() { List instances = new ArrayList<>(); @@ -89,7 +96,6 @@ public void testSerialize() throws Exception { assertTrue(actual.contains("\"owners\":[]")); assertTrue(actual.contains("\"protectThreshold\":0.0")); assertTrue(actual.contains("\"resetWeight\":false")); - assertTrue(actual.contains("\"selector\":{\"type\":\"none\"}")); assertFalse(actual.contains("clientBeatCheckTask")); assertFalse(actual.contains("serviceString")); assertFalse(actual.contains("pushService")); @@ -98,6 +104,7 @@ public void testSerialize() throws Exception { @Test @SuppressWarnings("checkstyle:linelength") public void testDeserialize() throws Exception { + JacksonUtils.registerSubtype(NoneSelector.class, SelectorType.none.name()); String example = "{\"checksum\":\"394c845e1160bb880e7f26fb2149ed6d\",\"clusterMap\":{},\"empty\":true,\"enabled\":true,\"finalizeCount\":0,\"ipDeleteTimeout\":30000,\"lastModifiedMillis\":0,\"metadata\":{},\"name\":\"test-service\",\"owners\":[],\"protectThreshold\":0.0,\"resetWeight\":false,\"selector\":{\"type\":\"none\"}}"; Service actual = JacksonUtils.toObj(example, Service.class); assertEquals("394c845e1160bb880e7f26fb2149ed6d", actual.getChecksum()); diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/event/publisher/NamingEventPublisherFactoryTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/event/publisher/NamingEventPublisherFactoryTest.java index 04046330382..3e312629118 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/event/publisher/NamingEventPublisherFactoryTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/event/publisher/NamingEventPublisherFactoryTest.java @@ -21,7 +21,9 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.springframework.util.ReflectionUtils; +import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; @@ -36,6 +38,11 @@ public class NamingEventPublisherFactoryTest { public void setUp() throws Exception { originalEventPublisherMap = new HashMap<>(NotifyCenter.getPublisherMap()); NotifyCenter.getPublisherMap().clear(); + // Protect other unit test publisher affect this case. + Field field = ReflectionUtils.findField(NamingEventPublisherFactory.class, "publisher", Map.class); + field.setAccessible(true); + Map map = (Map) field.get(NamingEventPublisherFactory.getInstance()); + map.clear(); } @After diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/doublewrite/delay/DoubleWriteEventListenerTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/doublewrite/delay/DoubleWriteEventListenerTest.java index 98c8f88a9ed..a18f1c2e036 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/doublewrite/delay/DoubleWriteEventListenerTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/doublewrite/delay/DoubleWriteEventListenerTest.java @@ -19,6 +19,7 @@ import com.alibaba.nacos.naming.core.v2.event.service.ServiceEvent; import com.alibaba.nacos.naming.core.v2.pojo.Service; import com.alibaba.nacos.naming.core.v2.upgrade.UpgradeJudgement; +import com.alibaba.nacos.sys.env.Constants; import com.alibaba.nacos.sys.env.EnvUtil; import org.junit.After; import org.junit.Before; @@ -27,6 +28,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.mock.env.MockEnvironment; /** * {@link DoubleWriteEventListener} unit tests. @@ -47,6 +49,9 @@ public class DoubleWriteEventListenerTest { @Before public void setUp() { + MockEnvironment environment = new MockEnvironment(); + environment.setProperty(Constants.SUPPORT_UPGRADE_FROM_1X, "true"); + EnvUtil.setEnvironment(environment); EnvUtil.setIsStandalone(false); doubleWriteEventListener = new DoubleWriteEventListener(upgradeJudgement, doubleWriteDelayTaskEngine); } diff --git a/naming/src/test/java/com/alibaba/nacos/naming/monitor/MetricsMonitorTest.java b/naming/src/test/java/com/alibaba/nacos/naming/monitor/MetricsMonitorTest.java index d8612a88304..06d94b49046 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/monitor/MetricsMonitorTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/monitor/MetricsMonitorTest.java @@ -16,12 +16,18 @@ package com.alibaba.nacos.naming.monitor; +import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; public class MetricsMonitorTest { + @Before + public void setUp() { + MetricsMonitor.resetPush(); + } + @Test public void testGetTotalPush() { assertEquals(0, MetricsMonitor.getTotalPushMonitor().get()); diff --git a/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/BeatInfoInstanceBuilderTest.java b/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/BeatInfoInstanceBuilderTest.java index 704675fe3ce..b2c0fac59ee 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/BeatInfoInstanceBuilderTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/BeatInfoInstanceBuilderTest.java @@ -74,9 +74,8 @@ public void testBuild() { assertTrue(actual.isEnabled()); assertTrue(actual.isHealthy()); assertThat(actual.getInstanceId(), is("1.1.1.1#8848#c#g@@s")); - assertThat(actual.getMetadata().size(), is(2)); + assertThat(actual.getMetadata().size(), is(1)); assertThat(actual.getMetadata().get("mock"), is("mock")); - assertThat(actual.getMetadata().get("app"), is("DEFAULT")); verify(request).getParameter("mock"); } } diff --git a/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/HttpRequestInstanceBuilderTest.java b/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/HttpRequestInstanceBuilderTest.java index e2ade410e37..4d45a6da179 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/HttpRequestInstanceBuilderTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/pojo/instance/HttpRequestInstanceBuilderTest.java @@ -80,8 +80,7 @@ public void testBuildSimple() throws NacosException { assertTrue(actual.isHealthy()); assertThat(actual.getInstanceId(), is(IP + "#" + PORT + "#" + UtilsAndCommons.DEFAULT_CLUSTER_NAME + "#" + SERVICE)); - assertThat(actual.getMetadata().size(), is(2)); - assertThat(actual.getMetadata().get("app"), is("DEFAULT")); + assertThat(actual.getMetadata().size(), is(1)); assertThat(actual.getMetadata().get("mock"), is("mock")); verify(request).getParameter("mock"); } @@ -112,9 +111,8 @@ public void testBuildFull() throws NacosException { assertFalse(actual.isEnabled()); assertFalse(actual.isHealthy()); assertThat(actual.getInstanceId(), is(IP + "#" + PORT + "#" + "cluster" + "#" + SERVICE)); - assertThat(actual.getMetadata().size(), is(3)); + assertThat(actual.getMetadata().size(), is(2)); assertThat(actual.getMetadata().get("mock"), is("mock")); - assertThat(actual.getMetadata().get("app"), is("DEFAULT")); assertThat(actual.getMetadata().get("a"), is("b")); verify(request).getParameter("mock"); } diff --git a/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorRpcImplTest.java b/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorRpcImplTest.java index 267e77bb56f..93aa957339f 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorRpcImplTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorRpcImplTest.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.naming.push.v2.executor; +import com.alibaba.nacos.api.naming.pojo.Instance; import com.alibaba.nacos.api.naming.pojo.ServiceInfo; import com.alibaba.nacos.api.naming.remote.request.NotifySubscriberRequest; import com.alibaba.nacos.api.remote.PushCallBack; @@ -24,6 +25,9 @@ import com.alibaba.nacos.naming.misc.GlobalExecutor; import com.alibaba.nacos.naming.pojo.Subscriber; import com.alibaba.nacos.naming.push.v2.PushDataWrapper; +import com.alibaba.nacos.naming.selector.SelectorManager; +import com.alibaba.nacos.sys.env.EnvUtil; +import com.alibaba.nacos.sys.utils.ApplicationUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,7 +35,10 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.Answer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.mock.env.MockEnvironment; +import java.util.List; import java.util.UUID; import static org.junit.Assert.assertEquals; @@ -39,6 +46,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class PushExecutorRpcImplTest { @@ -54,6 +62,12 @@ public class PushExecutorRpcImplTest { @Mock private PushCallBack pushCallBack; + @Mock + private SelectorManager selectorManager; + + @Mock + private ConfigurableApplicationContext context; + private PushDataWrapper pushData; private PushExecutorRpcImpl pushExecutor; @@ -65,9 +79,14 @@ public void setUp() throws Exception { serviceMetadata = new ServiceMetadata(); pushData = new PushDataWrapper(serviceMetadata, new ServiceInfo("G@@S")); pushExecutor = new PushExecutorRpcImpl(pushService); + EnvUtil.setEnvironment(new MockEnvironment()); doAnswer(new CallbackAnswer()).when(pushService) .pushWithCallback(eq(rpcClientId), any(NotifySubscriberRequest.class), eq(pushCallBack), eq(GlobalExecutor.getCallbackExecutor())); + ApplicationUtils.injectContext(context); + when(context.getBean(SelectorManager.class)).thenReturn(selectorManager); + when(selectorManager.select(any(), any(), any())).then( + (Answer>) invocationOnMock -> invocationOnMock.getArgument(2)); } @Test @@ -87,7 +106,7 @@ private class CallbackAnswer implements Answer { @Override public Void answer(InvocationOnMock invocationOnMock) throws Throwable { NotifySubscriberRequest pushRequest = invocationOnMock.getArgument(1); - assertEquals(pushData.getOriginalData(), pushRequest.getServiceInfo()); + assertEquals(pushData.getOriginalData().toString(), pushRequest.getServiceInfo().toString()); PushCallBack callBack = invocationOnMock.getArgument(2); callBack.onSuccess(); return null; diff --git a/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorUdpImplTest.java b/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorUdpImplTest.java index 6c2f9bef79f..fca833f4c46 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorUdpImplTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/push/v2/executor/PushExecutorUdpImplTest.java @@ -16,12 +16,15 @@ package com.alibaba.nacos.naming.push.v2.executor; +import com.alibaba.nacos.api.naming.pojo.Instance; import com.alibaba.nacos.api.naming.pojo.ServiceInfo; import com.alibaba.nacos.api.remote.PushCallBack; import com.alibaba.nacos.naming.core.v2.metadata.ServiceMetadata; import com.alibaba.nacos.naming.pojo.Subscriber; import com.alibaba.nacos.naming.push.UdpPushService; import com.alibaba.nacos.naming.push.v2.PushDataWrapper; +import com.alibaba.nacos.naming.selector.SelectorManager; +import com.alibaba.nacos.sys.utils.ApplicationUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -29,12 +32,16 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.Answer; +import org.springframework.context.ConfigurableApplicationContext; + +import java.util.List; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class PushExecutorUdpImplTest { @@ -50,6 +57,12 @@ public class PushExecutorUdpImplTest { @Mock private PushCallBack pushCallBack; + @Mock + private SelectorManager selectorManager; + + @Mock + private ConfigurableApplicationContext context; + private PushDataWrapper pushData; private PushExecutorUdpImpl pushExecutor; @@ -63,6 +76,10 @@ public void setUp() throws Exception { pushExecutor = new PushExecutorUdpImpl(pushService); doAnswer(new CallbackAnswer()).when(pushService) .pushDataWithCallback(eq(subscriber), any(ServiceInfo.class), eq(pushCallBack)); + ApplicationUtils.injectContext(context); + when(context.getBean(SelectorManager.class)).thenReturn(selectorManager); + when(selectorManager.select(any(), any(), any())).then( + (Answer>) invocationOnMock -> invocationOnMock.getArgument(2)); } @Test diff --git a/naming/src/test/java/com/alibaba/nacos/naming/raft/RaftStoreTest.java b/naming/src/test/java/com/alibaba/nacos/naming/raft/RaftStoreTest.java index a6ff01ed6a0..ef57578501a 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/raft/RaftStoreTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/raft/RaftStoreTest.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.naming.raft; +import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.naming.BaseTest; import com.alibaba.nacos.naming.consistency.Datum; import com.alibaba.nacos.naming.consistency.KeyBuilder; @@ -24,21 +25,17 @@ import com.alibaba.nacos.naming.consistency.persistent.raft.RaftStore; import com.alibaba.nacos.naming.core.Instance; import com.alibaba.nacos.naming.core.Instances; +import com.alibaba.nacos.sys.env.Constants; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.test.util.ReflectionTestUtils; public class RaftStoreTest extends BaseTest { - @InjectMocks - @Spy public RaftCore raftCore; - @Spy public RaftStore raftStore; @Mock @@ -46,7 +43,16 @@ public class RaftStoreTest extends BaseTest { @Before public void setUp() { - ReflectionTestUtils.setField(raftCore, "versionJudgement", versionJudgement); + super.before(); + environment.setProperty(Constants.SUPPORT_UPGRADE_FROM_1X, "true"); + raftStore = new RaftStore(); + raftCore = new RaftCore(peerSet, switchDomain, null, null, raftStore, versionJudgement, null); + } + + @After + public void tearDown() throws NacosException { + raftCore.shutdown(); + raftStore.shutdown(); } @Test diff --git a/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java b/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java index fba77e26a10..6659f1db76a 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java @@ -36,6 +36,11 @@ import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.when; /** * {@link UdpConnector} unit tests. @@ -64,21 +69,28 @@ public static void setEnv() { } @Before - public void setUp() { + public void setUp() throws IOException, InterruptedException { ReflectionTestUtils.setField(udpConnector, "ackMap", ackMap); ReflectionTestUtils.setField(udpConnector, "callbackMap", callbackMap); + DatagramSocket oldSocket = (DatagramSocket) ReflectionTestUtils.getField(udpConnector, "udpSocket"); ReflectionTestUtils.setField(udpConnector, "udpSocket", udpSocket); + doAnswer(invocationOnMock -> { + TimeUnit.MINUTES.sleep(1); + return null; + }).when(udpSocket).receive(any(DatagramPacket.class)); + oldSocket.close(); + TimeUnit.SECONDS.sleep(1); } @Test public void testContainAck() { - Mockito.when(ackMap.containsKey(Mockito.anyString())).thenReturn(true); + when(ackMap.containsKey(Mockito.anyString())).thenReturn(true); Assert.assertTrue(udpConnector.containAck("1111")); } @Test public void testSendData() throws NacosException, IOException { - Mockito.when(udpSocket.isClosed()).thenReturn(false); + when(udpSocket.isClosed()).thenReturn(false); AckEntry ackEntry = new AckEntry("A", new DatagramPacket(new byte[2], 2)); udpConnector.sendData(ackEntry); Mockito.verify(udpSocket).send(ackEntry.getOrigin()); @@ -86,19 +98,19 @@ public void testSendData() throws NacosException, IOException { @Test public void testSendDataWithCallback() throws IOException, InterruptedException { - Mockito.when(udpSocket.isClosed()).thenReturn(false); + when(udpSocket.isClosed()).thenReturn(false); AckEntry ackEntry = new AckEntry("A", new DatagramPacket(new byte[2], 2)); udpConnector.sendDataWithCallback(ackEntry, new PushCallBack() { @Override public long getTimeout() { return 0; } - + @Override public void onSuccess() { } - + @Override public void onFail(Throwable e) { Assert.fail(e.getMessage()); diff --git a/pom.xml b/pom.xml index 67c66d10fb5..25339b4a1c1 100644 --- a/pom.xml +++ b/pom.xml @@ -97,9 +97,7 @@ false true - jacoco - ${project.basedir}/../test/target/jacoco-it.exec file:**/generated-sources/**,**/test/** @@ -113,8 +111,7 @@ 3.8 0.12 3.0.2 - 4.3.0 - 0.7.8 + 0.8.7 2.20 3.0.4 3.0.2 @@ -368,48 +365,31 @@ ${project.build.sourceEncoding} - - org.eluder.coveralls - coveralls-maven-plugin - ${coveralls-maven-plugin.version} - org.jacoco jacoco-maven-plugin ${jacoco-maven-plugin.version} + + ${maven.test.skip} + ${project.build.directory}/coverage-reports/jacoco-unit.exec + ${project.build.directory}/coverage-reports/jacoco-unit.exec + file + true + default-prepare-agent prepare-agent - - ${project.build.directory}/jacoco.exec - - - - default-prepare-agent-integration - pre-integration-test - - prepare-agent-integration - - - ${project.build.directory}/jacoco-it.exec - failsafeArgLine - default-report + test report - - default-report-integration - - report-integration - - From 409d393f139af44eeed3f95d0c2c7dcbee1106d6 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 11 May 2022 11:19:56 +0800 Subject: [PATCH 011/133] fix: update comment (#8340) --- api/src/main/proto/nacos_grpc_service.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/proto/nacos_grpc_service.proto b/api/src/main/proto/nacos_grpc_service.proto index 797cce1d723..adf2a30a1d3 100644 --- a/api/src/main/proto/nacos_grpc_service.proto +++ b/api/src/main/proto/nacos_grpc_service.proto @@ -41,7 +41,7 @@ service Request { } service BiRequestStream { - // Sends a commonRequest + // Sends a biStreamRequest rpc requestBiStream (stream Payload) returns (stream Payload) { } } From ed999d9522b1fa73d43a0f1663ce78541d810dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BF=8A=20SionYang?= Date: Wed, 11 May 2022 16:20:28 +0800 Subject: [PATCH 012/133] Add codeCov report after CI finish (#8344) * Try add codecov * Try add codecov * Try scan all jacoco.xml * Try to add all jacoco.xml * Add codecov.yml * Fix copyright check for codecov.yml * Fix copyright check for codecov.yml --- .github/workflows/ci.yml | 4 ++++ codecov.yml | 4 ++++ pom.xml | 1 + 3 files changed, 9 insertions(+) create mode 100644 codecov.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 368d2f0ad85..f6ba539a682 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,3 +35,7 @@ jobs: run: mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U - name: Test With Maven run: mvn -Prelease-nacos clean test + - name: Codecov + uses: codecov/codecov-action@v3.1.0 + with: + files: ./address/target/site/jacoco/jacoco.xml,./api/target/site/jacoco/jacoco.xml,./auth/target/site/jacoco/jacoco.xml,./client/target/site/jacoco/jacoco.xml,./common/target/site/jacoco/jacoco.xml,./consistency/target/site/jacoco/jacoco.xml,./console/target/site/jacoco/jacoco.xml,./core/target/site/jacoco/jacoco.xml,./naming/target/site/jacoco/jacoco.xml,./plugin-default-impl/target/site/jacoco/jacoco.xml,./plugin/auth/target/site/jacoco/jacoco.xml,./plugin/encryption/target/site/jacoco/jacoco.xml,./sys/target/site/jacoco/jacoco.xml diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000000..1d6261311b7 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,4 @@ +comment: + behavior: default + layout: reach,diff,flags,files,footer + require_changes: false diff --git a/pom.xml b/pom.xml index 25339b4a1c1..ff55dd3d1be 100644 --- a/pom.xml +++ b/pom.xml @@ -327,6 +327,7 @@ .editorconfig .travis.yml + codecov.yml CONTRIBUTING.md CODE_OF_CONDUCT.md CHANGELOG.md From 399802603ade249c88987d89f9e930e6fee1ac9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BF=8A=20SionYang?= Date: Wed, 11 May 2022 18:00:27 +0800 Subject: [PATCH 013/133] Enhance Unit test stability. (#8346) * Enhance Unit test stability. * print detail stacktrace when unit test error. --- .github/workflows/ci.yml | 2 +- .../com/alibaba/nacos/naming/remote/udp/UdpConnector.java | 8 +++++++- .../nacos/naming/controllers/OperatorControllerTest.java | 2 ++ .../alibaba/nacos/naming/remote/udp/UdpConnectorTest.java | 6 ++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6ba539a682..36e0e079d31 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - name: Build with Maven run: mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U - name: Test With Maven - run: mvn -Prelease-nacos clean test + run: mvn -Prelease-nacos clean test -DtrimStackTrace=false - name: Codecov uses: codecov/codecov-action@v3.1.0 with: diff --git a/naming/src/main/java/com/alibaba/nacos/naming/remote/udp/UdpConnector.java b/naming/src/main/java/com/alibaba/nacos/naming/remote/udp/UdpConnector.java index d85e95f45b0..48a59db2ebf 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/remote/udp/UdpConnector.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/remote/udp/UdpConnector.java @@ -50,6 +50,8 @@ public class UdpConnector { private final DatagramSocket udpSocket; + private volatile boolean running = true; + public UdpConnector() throws SocketException { this.ackMap = new ConcurrentHashMap<>(); this.callbackMap = new ConcurrentHashMap<>(); @@ -57,6 +59,10 @@ public UdpConnector() throws SocketException { GlobalExecutor.scheduleUdpReceiver(new UdpReceiver()); } + public void shutdown() { + running = false; + } + public boolean containAck(String ackId) { return ackMap.containsKey(ackId); } @@ -180,7 +186,7 @@ private class UdpReceiver implements Runnable { @Override public void run() { - while (true) { + while (running) { byte[] buffer = new byte[1024 * 64]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); try { diff --git a/naming/src/test/java/com/alibaba/nacos/naming/controllers/OperatorControllerTest.java b/naming/src/test/java/com/alibaba/nacos/naming/controllers/OperatorControllerTest.java index 9802bd44ca6..fe00746afc6 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/controllers/OperatorControllerTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/controllers/OperatorControllerTest.java @@ -27,6 +27,7 @@ import com.alibaba.nacos.naming.core.v2.client.manager.ClientManager; import com.alibaba.nacos.naming.misc.SwitchDomain; import com.alibaba.nacos.naming.misc.SwitchManager; +import com.alibaba.nacos.naming.monitor.MetricsMonitor; import com.alibaba.nacos.sys.env.Constants; import com.alibaba.nacos.sys.env.EnvUtil; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -86,6 +87,7 @@ public void setUp() { @Test public void testPushState() { + MetricsMonitor.resetPush(); ObjectNode objectNode = operatorController.pushState(true, true); Assert.assertTrue(objectNode.toString().contains("succeed\":0")); } diff --git a/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java b/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java index 6659f1db76a..d420edc157a 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/remote/udp/UdpConnectorTest.java @@ -20,6 +20,7 @@ import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.remote.PushCallBack; import com.alibaba.nacos.sys.env.EnvUtil; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; @@ -82,6 +83,11 @@ public void setUp() throws IOException, InterruptedException { TimeUnit.SECONDS.sleep(1); } + @After + public void tearDown() { + udpConnector.shutdown(); + } + @Test public void testContainAck() { when(ackMap.containsKey(Mockito.anyString())).thenReturn(true); From 4d8a7626aa8740e764f6ea11ac3bf55f4185aaea Mon Sep 17 00:00:00 2001 From: "rui.zhang" Date: Thu, 12 May 2022 18:16:12 +0800 Subject: [PATCH 014/133] Hotfix issue 8350 (#8351) * optimization: in this case, renamed the variable definition * optimization: in this case, renamed the variable definition * optimization: revert the VipServer to Vipserver * optimization: reverse vipServer changes * optimization: recover renamed vipServer --- .../client/config/impl/ClientWorker.java | 2 +- .../alibaba/nacos/client/utils/EnvUtil.java | 22 +++++++++---------- .../nacos/client/utils/EnvUtilTest.java | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/client/src/main/java/com/alibaba/nacos/client/config/impl/ClientWorker.java b/client/src/main/java/com/alibaba/nacos/client/config/impl/ClientWorker.java index 93e48522cf6..c5efb089563 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/impl/ClientWorker.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/impl/ClientWorker.java @@ -580,7 +580,7 @@ private Map getLabels() { labels.put(RemoteConstants.LABEL_MODULE, RemoteConstants.LABEL_MODULE_CONFIG); labels.put(Constants.APPNAME, AppNameUtils.getAppName()); labels.put(Constants.VIPSERVER_TAG, EnvUtil.getSelfVipserverTag()); - labels.put(Constants.AMORY_TAG, EnvUtil.getSelfAmorayTag()); + labels.put(Constants.AMORY_TAG, EnvUtil.getSelfAmoryTag()); labels.put(Constants.LOCATION_TAG, EnvUtil.getSelfLocationTag()); return labels; diff --git a/client/src/main/java/com/alibaba/nacos/client/utils/EnvUtil.java b/client/src/main/java/com/alibaba/nacos/client/utils/EnvUtil.java index 949cc2b005b..cb658b47fb4 100644 --- a/client/src/main/java/com/alibaba/nacos/client/utils/EnvUtil.java +++ b/client/src/main/java/com/alibaba/nacos/client/utils/EnvUtil.java @@ -31,7 +31,7 @@ public class EnvUtil { public static final Logger LOGGER = LogUtils.logger(EnvUtil.class); - private static String selfAmorayTag; + private static String selfAmoryTag; private static String selfVipserverTag; @@ -39,17 +39,17 @@ public class EnvUtil { public static void setSelfEnv(Map> headers) { if (headers != null) { - List amorayTagTmp = headers.get(Constants.AMORY_TAG); - if (amorayTagTmp == null) { - if (selfAmorayTag != null) { - selfAmorayTag = null; + List amoryTagTmp = headers.get(Constants.AMORY_TAG); + if (amoryTagTmp == null) { + if (selfAmoryTag != null) { + selfAmoryTag = null; LOGGER.warn("selfAmoryTag:null"); } } else { - String amorayTagTmpStr = listToString(amorayTagTmp); - if (!amorayTagTmpStr.equals(selfAmorayTag)) { - selfAmorayTag = amorayTagTmpStr; - LOGGER.warn("selfAmoryTag:{}", selfAmorayTag); + String amoryTagTmpStr = listToString(amoryTagTmp); + if (!amoryTagTmpStr.equals(selfAmoryTag)) { + selfAmoryTag = amoryTagTmpStr; + LOGGER.warn("selfAmoryTag:{}", selfAmoryTag); } } @@ -82,8 +82,8 @@ public static void setSelfEnv(Map> headers) { } } - public static String getSelfAmorayTag() { - return selfAmorayTag; + public static String getSelfAmoryTag() { + return selfAmoryTag; } public static String getSelfVipserverTag() { diff --git a/client/src/test/java/com/alibaba/nacos/client/utils/EnvUtilTest.java b/client/src/test/java/com/alibaba/nacos/client/utils/EnvUtilTest.java index 7ec496383ef..231321aafba 100644 --- a/client/src/test/java/com/alibaba/nacos/client/utils/EnvUtilTest.java +++ b/client/src/test/java/com/alibaba/nacos/client/utils/EnvUtilTest.java @@ -36,7 +36,7 @@ public void testSetSelfEnv() { headers.put(Constants.VIPSERVER_TAG, Arrays.asList("b", "2")); headers.put(Constants.LOCATION_TAG, Arrays.asList("c", "3")); EnvUtil.setSelfEnv(headers); - Assert.assertEquals("a,1", EnvUtil.getSelfAmorayTag()); + Assert.assertEquals("a,1", EnvUtil.getSelfAmoryTag()); Assert.assertEquals("b,2", EnvUtil.getSelfVipserverTag()); Assert.assertEquals("c,3", EnvUtil.getSelfLocationTag()); } From c68956b17962560d488cc96c6defa869ad78d434 Mon Sep 17 00:00:00 2001 From: hutt <200714916@qq.com> Date: Thu, 12 May 2022 19:28:27 +0800 Subject: [PATCH 015/133] Add comments about config client failover (#8327) (#8343) --- .../com/alibaba/nacos/client/config/NacosConfigService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java index 9302f9051fd..68b4fd3dfb3 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java @@ -148,7 +148,11 @@ private String getConfigInner(String tenant, String dataId, String group, long t cr.setTenant(tenant); cr.setGroup(group); - // use local config first + // We first try to use local failover content if exists. + // A config content for failover is not created by client program automatically, + // but is maintained by user. + // This is designed for certain scenario like client emergency reboot, + // changing config needed in the same time, while nacos server is down. String content = LocalConfigInfoProcessor.getFailover(worker.getAgentName(), dataId, group, tenant); if (content != null) { LOGGER.warn("[{}] [get-config] get failover ok, dataId={}, group={}, tenant={}, config={}", From eff327d6233f986e05290ee54a3579aa209ab043 Mon Sep 17 00:00:00 2001 From: onewe Date: Fri, 13 May 2022 09:53:52 +0800 Subject: [PATCH 016/133] [ISSUE #8318] fix findAllConfigInfoForDumpAll sql args error (#8319) * [ISSUE #8318] fix findAllConfigInfoForDumpAll sql args error Close #8318 * [ISSUE #8318] remove the unnecessary arg Close #8318 --- .../embedded/EmbeddedStoragePersistServiceImpl.java | 2 +- .../extrnal/ExternalStoragePersistServiceImpl.java | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java index 85e61479afc..1730ed4e6c6 100755 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java @@ -1399,7 +1399,7 @@ public Page findAllConfigInfoForDumpAll(final int pageNo, fin PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, EMPTY_ARRAY, pageNo, pageSize, + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java index aa654d2247a..e452af8fd3a 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java @@ -1435,13 +1435,11 @@ public Page findAllConfigInfoForDumpAll(final int pageNo, fin + " g, config_info t WHERE g.id = t.id "; PaginationHelper helper = createPaginationHelper(); - List params = new ArrayList(); - try { - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error]", e); throw e; } } From d89076b3e6ce01ba3af289e9c214b7199da741fe Mon Sep 17 00:00:00 2001 From: yanhom <1772140053@qq.com> Date: Fri, 13 May 2022 11:03:01 +0800 Subject: [PATCH 017/133] Support for ibm J9 (#8325) * support for ibm J9 * format code, add newline at end of file * format code * use nacos code style format codes --- .../core/ServerLoaderInfoRequestHandler.java | 2 +- .../controllers/OperatorController.java | 2 +- .../com/alibaba/nacos/sys/env/EnvUtil.java | 18 +-- .../sys/env/OperatingSystemBeanManager.java | 116 ++++++++++++++++++ .../alibaba/nacos/sys/utils/MethodUtil.java | 59 +++++++++ 5 files changed, 182 insertions(+), 15 deletions(-) create mode 100644 sys/src/main/java/com/alibaba/nacos/sys/env/OperatingSystemBeanManager.java create mode 100644 sys/src/main/java/com/alibaba/nacos/sys/utils/MethodUtil.java diff --git a/core/src/main/java/com/alibaba/nacos/core/remote/core/ServerLoaderInfoRequestHandler.java b/core/src/main/java/com/alibaba/nacos/core/remote/core/ServerLoaderInfoRequestHandler.java index 0f980bbb347..b7abb4703de 100644 --- a/core/src/main/java/com/alibaba/nacos/core/remote/core/ServerLoaderInfoRequestHandler.java +++ b/core/src/main/java/com/alibaba/nacos/core/remote/core/ServerLoaderInfoRequestHandler.java @@ -53,7 +53,7 @@ public ServerLoaderInfoResponse handle(ServerLoaderInfoRequest request, RequestM .putMetricsValue("sdkConCount", String.valueOf(connectionManager.currentClientsCount(filter))); serverLoaderInfoResponse.putMetricsValue("limitRule", JacksonUtils.toJson(connectionManager.getConnectionLimitRule())); serverLoaderInfoResponse.putMetricsValue("load", String.valueOf(EnvUtil.getLoad())); - serverLoaderInfoResponse.putMetricsValue("cpu", String.valueOf(EnvUtil.getCPU())); + serverLoaderInfoResponse.putMetricsValue("cpu", String.valueOf(EnvUtil.getCpu())); return serverLoaderInfoResponse; } diff --git a/naming/src/main/java/com/alibaba/nacos/naming/controllers/OperatorController.java b/naming/src/main/java/com/alibaba/nacos/naming/controllers/OperatorController.java index 3ad5f5141de..15a36926c27 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/controllers/OperatorController.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/controllers/OperatorController.java @@ -214,7 +214,7 @@ public ObjectNode metrics(HttpServletRequest request) { result.put("ephemeralIpPortClientCount", ephemeralIpPortClient); result.put("persistentIpPortClientCount", persistentIpPortClient); result.put("responsibleClientCount", responsibleClientCount); - result.put("cpu", EnvUtil.getCPU()); + result.put("cpu", EnvUtil.getCpu()); result.put("load", EnvUtil.getLoad()); result.put("mem", EnvUtil.getMem()); return result; diff --git a/sys/src/main/java/com/alibaba/nacos/sys/env/EnvUtil.java b/sys/src/main/java/com/alibaba/nacos/sys/env/EnvUtil.java index 77ce17f3a91..74ffd911392 100644 --- a/sys/src/main/java/com/alibaba/nacos/sys/env/EnvUtil.java +++ b/sys/src/main/java/com/alibaba/nacos/sys/env/EnvUtil.java @@ -23,7 +23,6 @@ import com.alibaba.nacos.common.utils.ThreadUtils; import com.alibaba.nacos.sys.utils.DiskUtils; import com.alibaba.nacos.sys.utils.InetUtils; -import com.sun.management.OperatingSystemMXBean; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.io.InputStreamResource; import org.springframework.core.io.Resource; @@ -35,7 +34,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; -import java.lang.management.ManagementFactory; import java.nio.charset.StandardCharsets; import java.nio.file.Paths; import java.util.ArrayList; @@ -108,9 +106,6 @@ public class EnvUtil { @JustForTest private static String nacosHomePath = null; - private static final OperatingSystemMXBean OPERATING_SYSTEM_MX_BEAN = (com.sun.management.OperatingSystemMXBean) ManagementFactory - .getOperatingSystemMXBean(); - private static ConfigurableEnvironment environment; public static ConfigurableEnvironment getEnvironment() { @@ -284,18 +279,15 @@ public static String getSystemEnv(String key) { } public static float getLoad() { - return (float) OPERATING_SYSTEM_MX_BEAN.getSystemLoadAverage(); + return (float) OperatingSystemBeanManager.getOperatingSystemBean().getSystemLoadAverage(); } - - @SuppressWarnings("checkstyle:AbbreviationAsWordInName") - public static float getCPU() { - return (float) OPERATING_SYSTEM_MX_BEAN.getSystemCpuLoad(); + + public static float getCpu() { + return (float) OperatingSystemBeanManager.getSystemCpuUsage(); } public static float getMem() { - return (float) (1 - - (double) OPERATING_SYSTEM_MX_BEAN.getFreePhysicalMemorySize() / (double) OPERATING_SYSTEM_MX_BEAN - .getTotalPhysicalMemorySize()); + return (float) (1 - OperatingSystemBeanManager.getFreePhysicalMem() / OperatingSystemBeanManager.getTotalPhysicalMem()); } public static String getConfPath() { diff --git a/sys/src/main/java/com/alibaba/nacos/sys/env/OperatingSystemBeanManager.java b/sys/src/main/java/com/alibaba/nacos/sys/env/OperatingSystemBeanManager.java new file mode 100644 index 00000000000..70048ed1f0c --- /dev/null +++ b/sys/src/main/java/com/alibaba/nacos/sys/env/OperatingSystemBeanManager.java @@ -0,0 +1,116 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.nacos.sys.env; + +import com.alibaba.nacos.sys.utils.MethodUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.management.ManagementFactory; +import java.lang.management.OperatingSystemMXBean; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +/** + * OperatingSystemBeanManager related. + * + * @author yanhom + */ +public class OperatingSystemBeanManager { + + private static final Logger LOGGER = LoggerFactory.getLogger(OperatingSystemBeanManager.class); + + /** + * com.ibm for J9 + * com.sun for HotSpot + */ + private static final List OPERATING_SYSTEM_BEAN_CLASS_NAMES = Arrays.asList( + "com.sun.management.OperatingSystemMXBean", "com.ibm.lang.management.OperatingSystemMXBean"); + + private static final OperatingSystemMXBean OPERATING_SYSTEM_BEAN; + + private static final Class OPERATING_SYSTEM_BEAN_CLASS; + + private static final Method SYSTEM_CPU_USAGE_METHOD; + + private static final Method PROCESS_CPU_USAGE_METHOD; + + private static final Method FREE_PHYSICAL_MEM_METHOD; + + private static final Method TOTAL_PHYSICAL_MEM_METHOD; + + static { + OPERATING_SYSTEM_BEAN = ManagementFactory.getOperatingSystemMXBean(); + OPERATING_SYSTEM_BEAN_CLASS = loadOne(OPERATING_SYSTEM_BEAN_CLASS_NAMES); + SYSTEM_CPU_USAGE_METHOD = deduceMethod("getSystemCpuLoad"); + PROCESS_CPU_USAGE_METHOD = deduceMethod("getProcessCpuLoad"); + + Method totalPhysicalMem = deduceMethod("getTotalPhysicalMemorySize"); + // getTotalPhysicalMemory for ibm jdk 7. + TOTAL_PHYSICAL_MEM_METHOD = totalPhysicalMem != null ? totalPhysicalMem : + deduceMethod("getTotalPhysicalMemory"); + + FREE_PHYSICAL_MEM_METHOD = deduceMethod("getFreePhysicalMemorySize"); + } + + private OperatingSystemBeanManager() {} + + public static OperatingSystemMXBean getOperatingSystemBean() { + return OPERATING_SYSTEM_BEAN; + } + + public static double getSystemCpuUsage() { + return MethodUtil.invokeAndReturnDouble(SYSTEM_CPU_USAGE_METHOD, OPERATING_SYSTEM_BEAN); + } + + public static double getProcessCpuUsage() { + return MethodUtil.invokeAndReturnDouble(PROCESS_CPU_USAGE_METHOD, OPERATING_SYSTEM_BEAN); + } + + public static long getTotalPhysicalMem() { + return MethodUtil.invokeAndReturnLong(TOTAL_PHYSICAL_MEM_METHOD, OPERATING_SYSTEM_BEAN); + } + + public static long getFreePhysicalMem() { + return MethodUtil.invokeAndReturnLong(FREE_PHYSICAL_MEM_METHOD, OPERATING_SYSTEM_BEAN); + } + + private static Class loadOne(List classNames) { + for (String className : classNames) { + try { + return Class.forName(className); + } catch (ClassNotFoundException e) { + LOGGER.warn("[OperatingSystemBeanManager] Failed to load operating system bean class.", e); + } + } + return null; + } + + private static Method deduceMethod(String name) { + if (Objects.isNull(OPERATING_SYSTEM_BEAN_CLASS)) { + return null; + } + try { + OPERATING_SYSTEM_BEAN_CLASS.cast(OPERATING_SYSTEM_BEAN); + return OPERATING_SYSTEM_BEAN_CLASS.getDeclaredMethod(name); + } catch (Exception e) { + return null; + } + } +} diff --git a/sys/src/main/java/com/alibaba/nacos/sys/utils/MethodUtil.java b/sys/src/main/java/com/alibaba/nacos/sys/utils/MethodUtil.java new file mode 100644 index 00000000000..c4883f82622 --- /dev/null +++ b/sys/src/main/java/com/alibaba/nacos/sys/utils/MethodUtil.java @@ -0,0 +1,59 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.nacos.sys.utils; + +import java.lang.reflect.Method; + +/** + * MethodUtil related. + * + * @author yanhom + */ +public final class MethodUtil { + + private MethodUtil() {} + + /** + * Invoke method and return double value. + * + * @param method target method + * @param targetObj the object the underlying method is invoked from + * @return result + */ + public static double invokeAndReturnDouble(Method method, Object targetObj) { + try { + return method != null ? (double) method.invoke(targetObj) : Double.NaN; + } catch (Exception e) { + return Double.NaN; + } + } + + /** + * Invoke method and return long value. + * + * @param method target method + * @param targetObj the object the underlying method is invoked from + * @return result + */ + public static long invokeAndReturnLong(Method method, Object targetObj) { + try { + return method != null ? (long) method.invoke(targetObj) : -1; + } catch (Exception e) { + return -1; + } + } +} From eb57028ba638e9e86aaedd7dc94b3a62ad8606a3 Mon Sep 17 00:00:00 2001 From: david6969xin <86217945+david6969xin@users.noreply.github.com> Date: Fri, 13 May 2022 11:32:21 +0800 Subject: [PATCH 018/133] [ISSUE#8358] make this anonymous inner class a lambda (#8365) --- .../alibaba/nacos/api/remote/RpcScheduledExecutor.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/api/src/main/java/com/alibaba/nacos/api/remote/RpcScheduledExecutor.java b/api/src/main/java/com/alibaba/nacos/api/remote/RpcScheduledExecutor.java index 5d124d54f74..5fb8dd3b870 100644 --- a/api/src/main/java/com/alibaba/nacos/api/remote/RpcScheduledExecutor.java +++ b/api/src/main/java/com/alibaba/nacos/api/remote/RpcScheduledExecutor.java @@ -17,7 +17,6 @@ package com.alibaba.nacos.api.remote; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; /** * rpc scheduler executor . @@ -34,12 +33,7 @@ public class RpcScheduledExecutor extends ScheduledThreadPoolExecutor { "com.alibaba.nacos.remote.ServerCommonScheduler"); public RpcScheduledExecutor(int corePoolSize, final String threadName) { - super(corePoolSize, new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - return new Thread(r, threadName); - } - }); + super(corePoolSize, r -> new Thread(r, threadName)); } } From 6de92e40c5a0b4503414e105dda26eef683534b1 Mon Sep 17 00:00:00 2001 From: onewe Date: Mon, 16 May 2022 10:12:04 +0800 Subject: [PATCH 019/133] Fix some failing unit tests in nacos config module (#8379) * [ISSUE #8348] fix mockito's mockStatic method error * [ISSUE #8348] fix all the unit test's error Close #8348 --- .../ConditionDistributedEmbedStorageTest.java | 28 +++--- .../ConditionOnEmbeddedStorageTest.java | 11 ++- .../ConditionOnExternalStorageTest.java | 12 ++- .../ConditionStandaloneEmbedStorageTest.java | 31 ++++--- .../controller/ConfigControllerTest.java | 9 +- .../controller/ConfigOpsControllerTest.java | 25 +++--- .../controller/ConfigServletInnerTest.java | 88 +++++++++---------- .../controller/HealthControllerTest.java | 1 + .../controller/HistoryControllerTest.java | 2 + ...igChangeBatchListenRequestHandlerTest.java | 16 ++-- .../remote/ConfigQueryRequestHandlerTest.java | 44 ++++++---- .../GroupCapacityPersistServiceTest.java | 7 +- .../TenantCapacityPersistServiceTest.java | 8 +- .../datasource/DynamicDataSourceTest.java | 12 +-- .../server/service/dump/DumpServiceTest.java | 10 +++ .../config/server/utils/DiskUtilsTest.java | 19 ++-- .../config/server/utils/MD5UtilTest.java | 35 ++++---- .../config/server/utils/ParamUtilsTest.java | 3 - .../config/server/utils/PropertyUtilTest.java | 14 +-- .../config/server/utils/ResponseUtilTest.java | 5 +- 20 files changed, 219 insertions(+), 161 deletions(-) diff --git a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionDistributedEmbedStorageTest.java b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionDistributedEmbedStorageTest.java index 11a24ad20c9..c77430bf6a4 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionDistributedEmbedStorageTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionDistributedEmbedStorageTest.java @@ -22,6 +22,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -39,27 +40,34 @@ public class ConditionDistributedEmbedStorageTest { @Before public void init() { conditionDistributedEmbedStorage = new ConditionDistributedEmbedStorage(); - Mockito.mockStatic(PropertyUtil.class); - Mockito.mockStatic(EnvUtil.class); + } @Test public void testMatches() { - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); - Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(true); + MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); + MockedStatic envUtilMockedStatic = Mockito.mockStatic(EnvUtil.class); + + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(true); Assert.assertFalse(conditionDistributedEmbedStorage.matches(context, metadata)); Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(false); + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(false); Assert.assertTrue(conditionDistributedEmbedStorage.matches(context, metadata)); - - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(false); - Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(true); + + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(false); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(true); Assert.assertFalse(conditionDistributedEmbedStorage.matches(context, metadata)); - - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(false); - Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(false); + + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(false); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(false); Assert.assertFalse(conditionDistributedEmbedStorage.matches(context, metadata)); + + propertyUtilMockedStatic.close(); + envUtilMockedStatic.close(); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnEmbeddedStorageTest.java b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnEmbeddedStorageTest.java index 97342c36986..36ec69a000c 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnEmbeddedStorageTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnEmbeddedStorageTest.java @@ -21,6 +21,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -38,16 +39,18 @@ public class ConditionOnEmbeddedStorageTest { @Before public void init() { conditionOnEmbeddedStorage = new ConditionOnEmbeddedStorage(); - Mockito.mockStatic(PropertyUtil.class); } @Test public void testMatches() { - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); + MockedStatic mockedStatic = Mockito.mockStatic(PropertyUtil.class); + mockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); Assert.assertTrue(conditionOnEmbeddedStorage.matches(context, metadata)); - - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(false); + + mockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(false); Assert.assertFalse(conditionOnEmbeddedStorage.matches(context, metadata)); + + mockedStatic.close(); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnExternalStorageTest.java b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnExternalStorageTest.java index 8b3c456d6f8..8698ccc8061 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnExternalStorageTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionOnExternalStorageTest.java @@ -21,6 +21,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -38,16 +39,19 @@ public class ConditionOnExternalStorageTest { @Before public void init() { conditionOnExternalStorage = new ConditionOnExternalStorage(); - Mockito.mockStatic(PropertyUtil.class); } @Test public void testMatches() { - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); - Assert.assertFalse(conditionOnExternalStorage.matches(context, metadata)); + MockedStatic mockedStatic = Mockito.mockStatic(PropertyUtil.class); - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(false); + mockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); + Assert.assertFalse(conditionOnExternalStorage.matches(context, metadata)); + + mockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(false); Assert.assertTrue(conditionOnExternalStorage.matches(context, metadata)); + + mockedStatic.close(); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionStandaloneEmbedStorageTest.java b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionStandaloneEmbedStorageTest.java index bd634f6b1f2..29222df3ea0 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionStandaloneEmbedStorageTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/configuration/ConditionStandaloneEmbedStorageTest.java @@ -22,6 +22,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -39,27 +40,31 @@ public class ConditionStandaloneEmbedStorageTest { @Before public void init() { conditionStandaloneEmbedStorage = new ConditionStandaloneEmbedStorage(); - Mockito.mockStatic(PropertyUtil.class); - Mockito.mockStatic(EnvUtil.class); } @Test public void testMatches() { - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); - Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(true); - Assert.assertTrue(conditionStandaloneEmbedStorage.matches(context, metadata)); + MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); + MockedStatic envUtilMockedStatic = Mockito.mockStatic(EnvUtil.class); - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); - Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(false); + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(true); + Assert.assertTrue(conditionStandaloneEmbedStorage.matches(context, metadata)); + + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(false); Assert.assertFalse(conditionStandaloneEmbedStorage.matches(context, metadata)); - - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(false); - Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(true); + + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(false); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(true); Assert.assertFalse(conditionStandaloneEmbedStorage.matches(context, metadata)); - - Mockito.when(PropertyUtil.isEmbeddedStorage()).thenReturn(false); - Mockito.when(EnvUtil.getStandaloneMode()).thenReturn(false); + + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(false); + envUtilMockedStatic.when(EnvUtil::getStandaloneMode).thenReturn(false); Assert.assertFalse(conditionStandaloneEmbedStorage.matches(context, metadata)); + + propertyUtilMockedStatic.close(); + envUtilMockedStatic.close(); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigControllerTest.java b/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigControllerTest.java index 3de08f98509..e8e537c888d 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigControllerTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigControllerTest.java @@ -38,6 +38,7 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.springframework.core.env.StandardEnvironment; import org.springframework.mock.web.MockMultipartFile; @@ -389,15 +390,15 @@ public void testExportConfigV2() throws Exception { @Test public void testImportAndPublishConfig() throws Exception { - - Mockito.mockStatic(ZipUtils.class); + + MockedStatic zipUtilsMockedStatic = Mockito.mockStatic(ZipUtils.class); List zipItems = new ArrayList<>(); ZipUtils.ZipItem zipItem = new ZipUtils.ZipItem("test/test", "test"); zipItems.add(zipItem); ZipUtils.UnZipResult unziped = new ZipUtils.UnZipResult(zipItems, null); MockMultipartFile file = new MockMultipartFile("file", "test.zip", "application/zip", "test".getBytes()); - when(ZipUtils.unzip(file.getBytes())).thenReturn(unziped); + zipUtilsMockedStatic.when(() -> ZipUtils.unzip(file.getBytes())).thenReturn(unziped); when(persistService.tenantInfoCountByTenantId("public")).thenReturn(1); Map map = new HashMap<>(); map.put("test", "test"); @@ -416,6 +417,8 @@ public void testImportAndPublishConfig() throws Exception { Assert.assertEquals("200", code); Map resultMap = JacksonUtils.toObj(JacksonUtils.toObj(actualValue).get("data").toString(), Map.class); Assert.assertEquals(map.get("test"), resultMap.get("test").toString()); + + zipUtilsMockedStatic.close(); } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigOpsControllerTest.java b/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigOpsControllerTest.java index 047a6ad7328..a368db61af0 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigOpsControllerTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigOpsControllerTest.java @@ -100,13 +100,12 @@ public void testSetLogLevel() throws Exception { @Test public void testDerbyOps() throws Exception { - - MockedStatic propertyUtil = Mockito.mockStatic(PropertyUtil.class); - when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); - propertyUtil.close(); - Mockito.mockStatic(DynamicDataSource.class); + MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); + MockedStatic dynamicDataSourceMockedStatic = Mockito.mockStatic(DynamicDataSource.class); + + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); DynamicDataSource dataSource = Mockito.mock(DynamicDataSource.class); - when(DynamicDataSource.getInstance()).thenReturn(dataSource); + dynamicDataSourceMockedStatic.when(DynamicDataSource::getInstance).thenReturn(dataSource); LocalDataSourceServiceImpl dataSourceService = Mockito.mock(LocalDataSourceServiceImpl.class); when(dataSource.getDataSource()).thenReturn(dataSourceService); JdbcTemplate template = Mockito.mock(JdbcTemplate.class); @@ -118,23 +117,27 @@ public void testDerbyOps() throws Exception { .param("sql", "SELECT * FROM TEST"); String actualValue = mockMvc.perform(builder).andReturn().getResponse().getContentAsString(); Assert.assertEquals("200", JacksonUtils.toObj(actualValue).get("code").toString()); + propertyUtilMockedStatic.close(); + dynamicDataSourceMockedStatic.close(); } @Test public void testImportDerby() throws Exception { + MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); + MockedStatic applicationUtilsMockedStatic = Mockito.mockStatic(ApplicationUtils.class); - MockedStatic propertyUtil = Mockito.mockStatic(PropertyUtil.class); - when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); - propertyUtil.close(); - Mockito.mockStatic(ApplicationUtils.class); - when(ApplicationUtils.getBean(DatabaseOperate.class)).thenReturn(Mockito.mock(DatabaseOperate.class)); + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); + applicationUtilsMockedStatic.when(() -> ApplicationUtils.getBean(DatabaseOperate.class)) + .thenReturn(Mockito.mock(DatabaseOperate.class)); MockMultipartFile file = new MockMultipartFile("file", "test.zip", "application/zip", "test".getBytes()); MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(Constants.OPS_CONTROLLER_PATH + "/data/removal").file(file); int actualValue = mockMvc.perform(builder).andReturn().getResponse().getStatus(); Assert.assertEquals(200, actualValue); + propertyUtilMockedStatic.close(); + applicationUtilsMockedStatic.close(); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigServletInnerTest.java b/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigServletInnerTest.java index d60beabe2b7..d1df6f5931a 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigServletInnerTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/controller/ConfigServletInnerTest.java @@ -82,8 +82,8 @@ public void setUp() { @Test public void testDoPollingConfig() throws Exception { + MockedStatic md5UtilMockedStatic = Mockito.mockStatic(MD5Util.class); - final MockedStatic md5Util = Mockito.mockStatic(MD5Util.class); Map clientMd5Map = new HashMap<>(); MockHttpServletRequest request = new MockHttpServletRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -91,9 +91,9 @@ public void testDoPollingConfig() throws Exception { changedGroups.add("1"); changedGroups.add("2"); - when(MD5Util.compareMd5(request, response, clientMd5Map)).thenReturn(changedGroups); - when(MD5Util.compareMd5OldResult(changedGroups)).thenReturn("test-old"); - when(MD5Util.compareMd5ResultString(changedGroups)).thenReturn("test-new"); + md5UtilMockedStatic.when(() -> MD5Util.compareMd5(request, response, clientMd5Map)).thenReturn(changedGroups); + md5UtilMockedStatic.when(() -> MD5Util.compareMd5OldResult(changedGroups)).thenReturn("test-old"); + md5UtilMockedStatic.when(() -> MD5Util.compareMd5ResultString(changedGroups)).thenReturn("test-new"); String actualValue = configServletInner.doPollingConfig(request, response, clientMd5Map, 1); @@ -101,19 +101,18 @@ public void testDoPollingConfig() throws Exception { Assert.assertEquals("test-old", response.getHeader(Constants.PROBE_MODIFY_RESPONSE)); Assert.assertEquals("test-new", response.getHeader(Constants.PROBE_MODIFY_RESPONSE_NEW)); Assert.assertEquals("no-cache,no-store", response.getHeader("Cache-Control")); - - md5Util.close(); + + md5UtilMockedStatic.close(); } @Test public void testDoGetConfigV1() throws Exception { + final MockedStatic configCacheServiceMockedStatic = Mockito.mockStatic(ConfigCacheService.class); + final MockedStatic diskUtilMockedStatic = Mockito.mockStatic(DiskUtil.class); + final MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); - final MockedStatic diskUtil = Mockito.mockStatic(DiskUtil.class); - final MockedStatic configCacheService = Mockito.mockStatic(ConfigCacheService.class); - final MockedStatic propertyUtil = Mockito.mockStatic(PropertyUtil.class); - - when(ConfigCacheService.tryReadLock(anyString())).thenReturn(1); + configCacheServiceMockedStatic.when(() -> ConfigCacheService.tryReadLock(anyString())).thenReturn(1); // isBeta: true CacheItem cacheItem = new CacheItem("test"); @@ -121,10 +120,10 @@ public void testDoGetConfigV1() throws Exception { List ips4Beta = new ArrayList<>(); ips4Beta.add("localhost"); cacheItem.setIps4Beta(ips4Beta); - when(ConfigCacheService.getContentCache(anyString())).thenReturn(cacheItem); + configCacheServiceMockedStatic.when(() -> ConfigCacheService.getContentCache(anyString())).thenReturn(cacheItem); // if direct read is true - when(PropertyUtil.isDirectRead()).thenReturn(true); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(true); ConfigInfoBetaWrapper configInfoBetaWrapper = new ConfigInfoBetaWrapper(); configInfoBetaWrapper.setDataId("test"); configInfoBetaWrapper.setGroup("test"); @@ -141,29 +140,28 @@ public void testDoGetConfigV1() throws Exception { Assert.assertEquals("isBeta:true, direct read: true", response.getContentAsString()); // if direct read is false - when(PropertyUtil.isDirectRead()).thenReturn(false); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(false); File file = tempFolder.newFile("test.txt"); - when(DiskUtil.targetBetaFile(anyString(), anyString(), anyString())).thenReturn(file); + diskUtilMockedStatic.when(() -> DiskUtil.targetBetaFile(anyString(), anyString(), anyString())).thenReturn(file); response = new MockHttpServletResponse(); actualValue = configServletInner.doGetConfig(request, response, "test", "test", "test", "", "true", "localhost"); Assert.assertEquals(HttpServletResponse.SC_OK + "", actualValue); Assert.assertEquals("true", response.getHeader("isBeta")); Assert.assertEquals("", response.getContentAsString()); - - diskUtil.close(); - configCacheService.close(); - propertyUtil.close(); - + + configCacheServiceMockedStatic.close(); + diskUtilMockedStatic.close(); + propertyUtilMockedStatic.close(); } @Test public void testDoGetConfigV2() throws Exception { + + final MockedStatic configCacheServiceMockedStatic = Mockito.mockStatic(ConfigCacheService.class); + final MockedStatic diskUtilMockedStatic = Mockito.mockStatic(DiskUtil.class); + final MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); - final MockedStatic diskUtil = Mockito.mockStatic(DiskUtil.class); - final MockedStatic configCacheService = Mockito.mockStatic(ConfigCacheService.class); - final MockedStatic propertyUtil = Mockito.mockStatic(PropertyUtil.class); - - when(ConfigCacheService.tryReadLock(anyString())).thenReturn(1); + configCacheServiceMockedStatic.when(() -> ConfigCacheService.tryReadLock(anyString())).thenReturn(1); // isBeta: false CacheItem cacheItem = new CacheItem("test"); @@ -171,10 +169,10 @@ public void testDoGetConfigV2() throws Exception { List ips4Beta = new ArrayList<>(); ips4Beta.add("localhost"); cacheItem.setIps4Beta(ips4Beta); - when(ConfigCacheService.getContentCache(anyString())).thenReturn(cacheItem); + configCacheServiceMockedStatic.when(() -> ConfigCacheService.getContentCache(anyString())).thenReturn(cacheItem); // if tag is blank and direct read is true - when(PropertyUtil.isDirectRead()).thenReturn(true); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(true); ConfigInfoWrapper configInfoWrapper = new ConfigInfoWrapper(); configInfoWrapper.setDataId("test"); configInfoWrapper.setGroup("test"); @@ -189,16 +187,16 @@ public void testDoGetConfigV2() throws Exception { Assert.assertEquals("tag is blank and direct read is true", response.getContentAsString()); // if tag is blank and direct read is false - when(PropertyUtil.isDirectRead()).thenReturn(false); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(false); response = new MockHttpServletResponse(); File file = tempFolder.newFile("test.txt"); - when(DiskUtil.targetFile(anyString(), anyString(), anyString())).thenReturn(file); + diskUtilMockedStatic.when(() -> DiskUtil.targetFile(anyString(), anyString(), anyString())).thenReturn(file); actualValue = configServletInner.doGetConfig(request, response, "test", "test", "test", "", "true", "localhost"); Assert.assertEquals(HttpServletResponse.SC_OK + "", actualValue); Assert.assertEquals("", response.getContentAsString()); // if tag is not blank and direct read is true - when(PropertyUtil.isDirectRead()).thenReturn(true); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(true); ConfigInfoTagWrapper configInfoTagWrapper = new ConfigInfoTagWrapper(); configInfoTagWrapper.setDataId("test"); configInfoTagWrapper.setGroup("test"); @@ -210,15 +208,15 @@ public void testDoGetConfigV2() throws Exception { Assert.assertEquals("tag is not blank and direct read is true", response.getContentAsString()); // if tag is not blank and direct read is false - when(PropertyUtil.isDirectRead()).thenReturn(false); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(false); response = new MockHttpServletResponse(); - when(DiskUtil.targetTagFile(anyString(), anyString(), anyString(), anyString())).thenReturn(file); + diskUtilMockedStatic.when(() -> DiskUtil.targetTagFile(anyString(), anyString(), anyString(), anyString())).thenReturn(file); actualValue = configServletInner.doGetConfig(request, response, "test", "test", "test", "test", "true", "localhost"); Assert.assertEquals(HttpServletResponse.SC_OK + "", actualValue); Assert.assertEquals("", response.getContentAsString()); // if use auto tag and direct read is true - when(PropertyUtil.isDirectRead()).thenReturn(true); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(true); Map tagMd5 = new HashMap<>(); tagMd5.put("auto-tag-test", "auto-tag-test"); cacheItem.setTagMd5(tagMd5); @@ -231,36 +229,34 @@ public void testDoGetConfigV2() throws Exception { Assert.assertEquals("auto tag mode and direct read is true", response.getContentAsString()); // if use auto tag and direct read is false - when(PropertyUtil.isDirectRead()).thenReturn(false); + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(false); response = new MockHttpServletResponse(); actualValue = configServletInner.doGetConfig(request, response, "test", "test", "test", "", "true", "localhost"); Assert.assertEquals(HttpServletResponse.SC_OK + "", actualValue); Assert.assertEquals("", response.getContentAsString()); - - diskUtil.close(); - configCacheService.close(); - propertyUtil.close(); - + + configCacheServiceMockedStatic.close(); + diskUtilMockedStatic.close(); + propertyUtilMockedStatic.close(); } @Test public void testDoGetConfigV3() throws Exception { + + final MockedStatic configCacheServiceMockedStatic = Mockito.mockStatic(ConfigCacheService.class); - final MockedStatic configCacheService = Mockito.mockStatic(ConfigCacheService.class); - // if lockResult equals 0 - when(ConfigCacheService.tryReadLock(anyString())).thenReturn(0); + configCacheServiceMockedStatic.when(() -> ConfigCacheService.tryReadLock(anyString())).thenReturn(0); MockHttpServletRequest request = new MockHttpServletRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); String actualValue = configServletInner.doGetConfig(request, response, "test", "test", "test", "test", "true", "localhost"); Assert.assertEquals(HttpServletResponse.SC_NOT_FOUND + "", actualValue); // if lockResult less than 0 - when(ConfigCacheService.tryReadLock(anyString())).thenReturn(-1); + configCacheServiceMockedStatic.when(() -> ConfigCacheService.tryReadLock(anyString())).thenReturn(-1); actualValue = configServletInner.doGetConfig(request, response, "test", "test", "test", "test", "true", "localhost"); Assert.assertEquals(HttpServletResponse.SC_CONFLICT + "", actualValue); - - configCacheService.close(); - + + configCacheServiceMockedStatic.close(); } } \ No newline at end of file diff --git a/config/src/test/java/com/alibaba/nacos/config/server/controller/HealthControllerTest.java b/config/src/test/java/com/alibaba/nacos/config/server/controller/HealthControllerTest.java index 5fce7da1dbf..8b36886a75c 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/controller/HealthControllerTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/controller/HealthControllerTest.java @@ -75,6 +75,7 @@ public void setUp() { when(memberManager.getLookup()).thenReturn(memberLookup); when(servletContext.getContextPath()).thenReturn("/nacos"); ReflectionTestUtils.setField(healthController, "memberManager", memberManager); + ReflectionTestUtils.setField(healthController, "dataSourceService", dataSourceService); mockmvc = MockMvcBuilders.standaloneSetup(healthController).build(); } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/controller/HistoryControllerTest.java b/config/src/test/java/com/alibaba/nacos/config/server/controller/HistoryControllerTest.java index e2210c7a374..c4698e5aed1 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/controller/HistoryControllerTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/controller/HistoryControllerTest.java @@ -122,6 +122,7 @@ public void testGetConfigHistoryInfo() throws Exception { configHistoryInfo.setDataId("test"); configHistoryInfo.setGroup("test"); configHistoryInfo.setContent("test"); + configHistoryInfo.setTenant(""); configHistoryInfo.setCreatedTime(new Timestamp(new Date().getTime())); configHistoryInfo.setLastModifiedTime(new Timestamp(new Date().getTime())); @@ -149,6 +150,7 @@ public void testGetPreviousConfigHistoryInfo() throws Exception { configHistoryInfo.setDataId("test"); configHistoryInfo.setGroup("test"); configHistoryInfo.setContent("test"); + configHistoryInfo.setTenant(""); configHistoryInfo.setCreatedTime(new Timestamp(new Date().getTime())); configHistoryInfo.setLastModifiedTime(new Timestamp(new Date().getTime())); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigChangeBatchListenRequestHandlerTest.java b/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigChangeBatchListenRequestHandlerTest.java index ac9e6373f6a..af522752cd3 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigChangeBatchListenRequestHandlerTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigChangeBatchListenRequestHandlerTest.java @@ -28,12 +28,12 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.test.util.ReflectionTestUtils; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ConfigChangeBatchListenRequestHandlerTest extends TestCase { @@ -52,18 +52,22 @@ public void setUp() { ReflectionTestUtils.setField(configQueryRequestHandler, "configChangeListenContext", configChangeListenContext); requestMeta = new RequestMeta(); requestMeta.setClientIp("1.1.1.1"); - Mockito.mockStatic(ConfigCacheService.class); } @Test public void testHandle() { + MockedStatic configCacheServiceMockedStatic = Mockito.mockStatic(ConfigCacheService.class); + String dataId = "dataId"; String group = "group"; String tenant = "tenant"; - String groupKey = GroupKey2 - .getKey(dataId, group, tenant); + String groupKey = GroupKey2.getKey(dataId, group, tenant); groupKey = StringPool.get(groupKey); - when(ConfigCacheService.isUptodate(eq(groupKey), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(false); + + final String groupKeyCopy = groupKey; + configCacheServiceMockedStatic.when( + () -> ConfigCacheService.isUptodate(eq(groupKeyCopy), Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(false); ConfigBatchListenRequest configChangeListenRequest = new ConfigBatchListenRequest(); configChangeListenRequest.addConfigListenContext(group, dataId, tenant, " "); try { @@ -79,6 +83,8 @@ public void testHandle() { assertTrue(hasChange); } catch (NacosException e) { e.printStackTrace(); + } finally { + configCacheServiceMockedStatic.close(); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigQueryRequestHandlerTest.java b/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigQueryRequestHandlerTest.java index c4f13b9c6b8..85a5abd82d9 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigQueryRequestHandlerTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/remote/ConfigQueryRequestHandlerTest.java @@ -34,6 +34,7 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.core.env.StandardEnvironment; @@ -47,37 +48,43 @@ @RunWith(MockitoJUnitRunner.class) public class ConfigQueryRequestHandlerTest { - + @InjectMocks private ConfigQueryRequestHandler configQueryRequestHandler; - + @Mock private PersistService persistService; - + @Mock private File file; - + @Before public void setUp() throws IOException { EnvUtil.setEnvironment(new StandardEnvironment()); - Mockito.mockStatic(ConfigCacheService.class); - Mockito.mockStatic(PropertyUtil.class); - Mockito.mockStatic(FileUtils.class); - Mockito.mockStatic(DiskUtil.class); + } + + @Test + public void testHandle() throws NacosException { + final MockedStatic configCacheServiceMockedStatic = Mockito.mockStatic(ConfigCacheService.class); + final MockedStatic fileUtilsMockedStatic = Mockito.mockStatic(FileUtils.class); + final MockedStatic diskUtilMockedStatic = Mockito.mockStatic(DiskUtil.class); + MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); + + propertyUtilMockedStatic.when(PropertyUtil::isDirectRead).thenReturn(false); + ReflectionTestUtils.setField(configQueryRequestHandler, "persistService", persistService); final String groupKey = GroupKey2.getKey("dataId", "group", ""); - when(ConfigCacheService.tryReadLock(groupKey)).thenReturn(1); - when(DiskUtil.targetFile(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(file); - when(FileUtils.readFileToString(file, ENCODE)).thenReturn("content"); + configCacheServiceMockedStatic.when(() -> ConfigCacheService.tryReadLock(groupKey)).thenReturn(1); + diskUtilMockedStatic.when(() -> DiskUtil.targetFile(Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(file); + fileUtilsMockedStatic.when(() -> FileUtils.readFileToString(file, ENCODE)).thenReturn("content"); when(file.exists()).thenReturn(true); CacheItem cacheItem = new CacheItem(groupKey); cacheItem.setMd5("1"); cacheItem.setLastModifiedTs(1L); - when(ConfigCacheService.getContentCache(Mockito.any())).thenReturn(cacheItem); - } - - @Test - public void testHandle() throws NacosException { + configCacheServiceMockedStatic.when(() -> ConfigCacheService.getContentCache(Mockito.any())) + .thenReturn(cacheItem); + ConfigQueryRequest configQueryRequest = new ConfigQueryRequest(); configQueryRequest.setDataId("dataId"); configQueryRequest.setGroup("group"); @@ -85,6 +92,11 @@ public void testHandle() throws NacosException { requestMeta.setClientIp("127.0.0.1"); ConfigQueryResponse response = configQueryRequestHandler.handle(configQueryRequest, requestMeta); Assert.assertEquals(response.getContent(), "content"); + + configCacheServiceMockedStatic.close(); + fileUtilsMockedStatic.close(); + diskUtilMockedStatic.close(); + propertyUtilMockedStatic.close(); } } \ No newline at end of file diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistServiceTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistServiceTest.java index b4098032b2c..018f8ce2bcb 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistServiceTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistServiceTest.java @@ -28,6 +28,7 @@ import org.mockito.ArgumentMatcher; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.stubbing.Answer; import org.springframework.jdbc.core.JdbcTemplate; @@ -194,6 +195,7 @@ public void testDecrementUsage() { @Test public void testUpdateGroupCapacity() { + final MockedStatic timeUtilsMockedStatic = Mockito.mockStatic(TimeUtils.class); List argList = CollectionUtils.list(); @@ -210,8 +212,8 @@ public void testUpdateGroupCapacity() { argList.add(maxAggrSize); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - Mockito.mockStatic(TimeUtils.class); - when(TimeUtils.getCurrentTime()).thenReturn(timestamp); + + timeUtilsMockedStatic.when(TimeUtils::getCurrentTime).thenReturn(timestamp); argList.add(timestamp); String group = "test"; @@ -230,6 +232,7 @@ public void testUpdateGroupCapacity() { return 0; }); Assert.assertTrue(service.updateGroupCapacity(group, quota, maxSize, maxAggrCount, maxAggrSize)); + timeUtilsMockedStatic.close(); } @Test diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistServiceTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistServiceTest.java index 793e81a2434..17cc4a6ed0c 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistServiceTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistServiceTest.java @@ -27,6 +27,7 @@ import org.mockito.ArgumentMatcher; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.stubbing.Answer; import org.springframework.jdbc.core.JdbcTemplate; @@ -157,6 +158,7 @@ public void testDecrementUsage() { @Test public void testUpdateTenantCapacity() { + final MockedStatic timeUtilsMockedStatic = Mockito.mockStatic(TimeUtils.class); List argList = CollectionUtils.list(); @@ -173,8 +175,7 @@ public void testUpdateTenantCapacity() { argList.add(maxAggrSize); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - Mockito.mockStatic(TimeUtils.class); - when(TimeUtils.getCurrentTime()).thenReturn(timestamp); + timeUtilsMockedStatic.when(TimeUtils::getCurrentTime).thenReturn(timestamp); argList.add(timestamp); String tenant = "test"; @@ -193,11 +194,12 @@ public void testUpdateTenantCapacity() { return 0; }); Assert.assertTrue(service.updateTenantCapacity(tenant, quota, maxSize, maxAggrCount, maxAggrSize)); + + timeUtilsMockedStatic.close(); } @Test public void testUpdateQuota() { - List argList = CollectionUtils.list(); Integer quota = 2; diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/datasource/DynamicDataSourceTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/datasource/DynamicDataSourceTest.java index 0899240e0bc..1893f00c529 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/datasource/DynamicDataSourceTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/datasource/DynamicDataSourceTest.java @@ -23,14 +23,13 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.springframework.mock.web.MockServletContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.util.ReflectionTestUtils; -import static org.mockito.Mockito.when; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = MockServletContext.class) public class DynamicDataSourceTest { @@ -53,14 +52,15 @@ public void setUp() { @Test public void testGetDataSource() { + MockedStatic propertyUtilMockedStatic = Mockito.mockStatic(PropertyUtil.class); - Mockito.mockStatic(PropertyUtil.class); - - when(PropertyUtil.isEmbeddedStorage()).thenReturn(true); + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(true); Assert.assertTrue(dataSource.getDataSource() instanceof LocalDataSourceServiceImpl); - when(PropertyUtil.isEmbeddedStorage()).thenReturn(false); + propertyUtilMockedStatic.when(PropertyUtil::isEmbeddedStorage).thenReturn(false); Assert.assertTrue(dataSource.getDataSource() instanceof ExternalDataSourceServiceImpl); + + propertyUtilMockedStatic.close(); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/dump/DumpServiceTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/dump/DumpServiceTest.java index fb4756b579a..fb476af286a 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/dump/DumpServiceTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/dump/DumpServiceTest.java @@ -16,6 +16,8 @@ package com.alibaba.nacos.config.server.service.dump; +import com.alibaba.nacos.config.server.service.datasource.DynamicDataSource; +import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +25,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.util.ReflectionTestUtils; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest @@ -33,6 +36,13 @@ public class DumpServiceTest { @Autowired DumpService service; + @BeforeClass + public static void setUp() { + + ReflectionTestUtils.setField(DynamicDataSource.getInstance(), "localDataSourceService", null); + ReflectionTestUtils.setField(DynamicDataSource.getInstance(), "basicDataSourceService", null); + } + @Test public void init() throws Throwable { service.init(); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/utils/DiskUtilsTest.java b/config/src/test/java/com/alibaba/nacos/config/server/utils/DiskUtilsTest.java index 57c90c4dcff..cb61c9a8ac6 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/utils/DiskUtilsTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/utils/DiskUtilsTest.java @@ -23,15 +23,12 @@ import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; -import org.junit.runner.RunWith; import org.mockito.MockedStatic; import org.mockito.Mockito; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.io.File; import java.io.IOException; -@RunWith(SpringJUnit4ClassRunner.class) public class DiskUtilsTest { static MockedStatic fileUtils; @@ -100,13 +97,13 @@ public void testRemoveHeartHeat() { @Test public void testTargetFile() { File file = DiskUtil.targetFile("test1", "test2", "test3"); - String[] arr = file.getPath().split("\\\\"); + String[] arr = file.getPath().split(File.separator); Assert.assertEquals("test1", arr[arr.length - 1]); Assert.assertEquals("test2", arr[arr.length - 2]); Assert.assertEquals("test3", arr[arr.length - 3]); File file2 = DiskUtil.targetFile("test1", "test2", ""); - String[] arr2 = file2.getPath().split("\\\\"); + String[] arr2 = file2.getPath().split(File.separator); Assert.assertEquals("test1", arr2[arr2.length - 1]); Assert.assertEquals("test2", arr2[arr2.length - 2]); Assert.assertEquals("config-data", arr2[arr2.length - 3]); @@ -115,13 +112,13 @@ public void testTargetFile() { @Test public void testTargetBetaFile() { File file = DiskUtil.targetBetaFile("test1", "test2", "test3"); - String[] arr = file.getPath().split("\\\\"); + String[] arr = file.getPath().split(File.separator); Assert.assertEquals("test1", arr[arr.length - 1]); Assert.assertEquals("test2", arr[arr.length - 2]); Assert.assertEquals("test3", arr[arr.length - 3]); File file2 = DiskUtil.targetBetaFile("test1", "test2", ""); - String[] arr2 = file2.getPath().split("\\\\"); + String[] arr2 = file2.getPath().split(File.separator); Assert.assertEquals("test1", arr2[arr2.length - 1]); Assert.assertEquals("test2", arr2[arr2.length - 2]); Assert.assertEquals("beta-data", arr2[arr2.length - 3]); @@ -130,14 +127,14 @@ public void testTargetBetaFile() { @Test public void testTargetTagFile() { File file = DiskUtil.targetTagFile("test1", "test2", "test3", "tag"); - String[] arr = file.getPath().split("\\\\"); + String[] arr = file.getPath().split(File.separator); Assert.assertEquals("tag", arr[arr.length - 1]); Assert.assertEquals("test1", arr[arr.length - 2]); Assert.assertEquals("test2", arr[arr.length - 3]); Assert.assertEquals("test3", arr[arr.length - 4]); File file2 = DiskUtil.targetTagFile("test1", "test2", "", "tag"); - String[] arr2 = file2.getPath().split("\\\\"); + String[] arr2 = file2.getPath().split(File.separator); Assert.assertEquals("tag", arr2[arr2.length - 1]); Assert.assertEquals("test1", arr2[arr2.length - 2]); Assert.assertEquals("test2", arr2[arr2.length - 3]); @@ -162,7 +159,7 @@ public void testGetLocalConfigMd5() throws IOException { @Test public void testHeartBeatFile() { File file = DiskUtil.heartBeatFile(); - String[] arr = file.getPath().split("\\\\"); + String[] arr = file.getPath().split(File.separator); Assert.assertEquals("heartBeat.txt", arr[arr.length - 1]); Assert.assertEquals("status", arr[arr.length - 2]); Assert.assertEquals("nacos", arr[arr.length - 3]); @@ -171,7 +168,7 @@ public void testHeartBeatFile() { @Test public void testRelativePath() { String relativePath = DiskUtil.relativePath("test1", "test2"); - String[] arr = relativePath.split("/"); + String[] arr = relativePath.split(File.separator); Assert.assertEquals("test2", arr[arr.length - 1]); Assert.assertEquals("test1", arr[arr.length - 2]); } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/utils/MD5UtilTest.java b/config/src/test/java/com/alibaba/nacos/config/server/utils/MD5UtilTest.java index a66f4f3c691..72e628aef06 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/utils/MD5UtilTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/utils/MD5UtilTest.java @@ -38,18 +38,17 @@ import java.util.Map; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; public class MD5UtilTest { @Test public void testCompareMd5() { - - final MockedStatic configCacheServiceMockedStatic = Mockito - .mockStatic(ConfigCacheService.class); - - when(ConfigCacheService.isUptodate(anyString(), anyString(), anyString(), anyString())).thenReturn(false); - + final MockedStatic configCacheServiceMockedStatic = Mockito.mockStatic(ConfigCacheService.class); + + configCacheServiceMockedStatic.when( + () -> ConfigCacheService.isUptodate(anyString(), anyString(), anyString(), anyString())) + .thenReturn(false); + Map clientMd5Map = new HashMap<>(); clientMd5Map.put("test", "test"); @@ -61,13 +60,13 @@ public void testCompareMd5() { Assert.assertEquals(1, changedGroupKeys.size()); Assert.assertEquals("test", changedGroupKeys.get(0)); - + configCacheServiceMockedStatic.close(); + } @Test public void testCompareMd5OldResult() { - final MockedStatic groupKey2MockedStatic = Mockito.mockStatic(GroupKey2.class); List changedGroupKeys = new ArrayList<>(); @@ -77,18 +76,18 @@ public void testCompareMd5OldResult() { arr[0] = "test0"; arr[1] = "test1"; arr[2] = "test2"; - when(GroupKey2.parseKey(anyString())).thenReturn(arr); + groupKey2MockedStatic.when(() -> GroupKey2.parseKey(anyString())).thenReturn(arr); String actualValue = MD5Util.compareMd5OldResult(changedGroupKeys); Assert.assertEquals("test0:test1;", actualValue); - + groupKey2MockedStatic.close(); + } @Test public void testCompareMd5ResultString() { - final MockedStatic groupKey2MockedStatic = Mockito.mockStatic(GroupKey2.class); List changedGroupKeys = new ArrayList<>(); @@ -98,15 +97,15 @@ public void testCompareMd5ResultString() { arr[0] = "test0"; arr[1] = "test1"; arr[2] = "test2"; - when(GroupKey2.parseKey(anyString())).thenReturn(arr); + groupKey2MockedStatic.when(() -> GroupKey2.parseKey(anyString())).thenReturn(arr); try { String actualValue = MD5Util.compareMd5ResultString(changedGroupKeys); Assert.assertEquals("test0%02test1%02test2%01", actualValue); } catch (IOException e) { - System.out.println(e.toString()); + System.out.println(e); } - + groupKey2MockedStatic.close(); } @@ -142,7 +141,7 @@ public void testToStringV1() { String actualValue = MD5Util.toString(input, "UTF-8"); Assert.assertEquals("test", actualValue); } catch (IOException e) { - System.out.println(e.toString()); + System.out.println(e); } } @@ -154,7 +153,7 @@ public void testToStringV2() { String actualValue = MD5Util.toString(reader); Assert.assertEquals("test", actualValue); } catch (IOException e) { - System.out.println(e.toString()); + System.out.println(e); } } @@ -171,7 +170,7 @@ public void testCopy() { Assert.assertEquals(content, output.toString()); } catch (IOException e) { - System.out.println(e.toString()); + System.out.println(e); } } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/utils/ParamUtilsTest.java b/config/src/test/java/com/alibaba/nacos/config/server/utils/ParamUtilsTest.java index a20fd5c8249..7672dca5d53 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/utils/ParamUtilsTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/utils/ParamUtilsTest.java @@ -19,13 +19,10 @@ import com.alibaba.nacos.api.exception.NacosException; import org.junit.Assert; import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.HashMap; import java.util.Map; -@RunWith(SpringJUnit4ClassRunner.class) public class ParamUtilsTest { @Test diff --git a/config/src/test/java/com/alibaba/nacos/config/server/utils/PropertyUtilTest.java b/config/src/test/java/com/alibaba/nacos/config/server/utils/PropertyUtilTest.java index 0a907383ec3..721c4ab18f6 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/utils/PropertyUtilTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/utils/PropertyUtilTest.java @@ -27,7 +27,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; @RunWith(SpringJUnit4ClassRunner.class) public class PropertyUtilTest { @@ -37,19 +36,24 @@ public class PropertyUtilTest { @Test public void testGetPropertyV1() { - final MockedStatic envUtilMockedStatic = Mockito.mockStatic(EnvUtil.class); + MockedStatic envUtilMockedStatic = Mockito.mockStatic(EnvUtil.class); + EnvUtil.setEnvironment(configurableEnvironment); - when(EnvUtil.getProperty(eq("test"))).thenReturn("test"); + envUtilMockedStatic.when(() -> EnvUtil.getProperty(eq("test"))).thenReturn("test"); Assert.assertEquals("test", new PropertyUtil().getProperty("test")); + envUtilMockedStatic.close(); } @Test public void testGetPropertyV2() { - final MockedStatic envUtilMockedStatic = Mockito.mockStatic(EnvUtil.class); + MockedStatic envUtilMockedStatic = Mockito.mockStatic(EnvUtil.class); + EnvUtil.setEnvironment(configurableEnvironment); - when(EnvUtil.getProperty(eq("test"), eq("default"))).thenReturn("default"); + envUtilMockedStatic.when(() -> EnvUtil.getProperty(eq("test"), eq("default"))).thenReturn("default"); Assert.assertEquals("default", new PropertyUtil().getProperty("test", "default")); + envUtilMockedStatic.close(); } + } diff --git a/config/src/test/java/com/alibaba/nacos/config/server/utils/ResponseUtilTest.java b/config/src/test/java/com/alibaba/nacos/config/server/utils/ResponseUtilTest.java index 0d00d62b34d..abb7e6efca3 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/utils/ResponseUtilTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/utils/ResponseUtilTest.java @@ -24,13 +24,16 @@ public class ResponseUtilTest { + String lineSeparator = java.security.AccessController.doPrivileged( + new sun.security.action.GetPropertyAction("line.separator")); + @Test public void testWriteErrMsg() { MockHttpServletResponse response = new MockHttpServletResponse(); ResponseUtil.writeErrMsg(response, 404, "test"); Assert.assertEquals(404, response.getStatus()); try { - Assert.assertEquals("test\r\n", response.getContentAsString()); + Assert.assertEquals("test" + lineSeparator, response.getContentAsString()); } catch (UnsupportedEncodingException e) { System.out.println(e.toString()); } From 2bef9b60201de361f6704412daebecf4a6740747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=99=93=E5=8F=8C=20Li=20Xiao=20Shuang?= <644968328@qq.com> Date: Mon, 16 May 2022 10:12:44 +0800 Subject: [PATCH 020/133] =?UTF-8?q?=E6=98=BE=E5=BC=8F=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=8F=AF=E6=9B=BF=E6=8D=A2=E4=B8=BA=20<>=20(#8378)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/datasource/ExternalDataSourceServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/datasource/ExternalDataSourceServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/datasource/ExternalDataSourceServiceImpl.java index 7968e256a1f..78cf2a493c7 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/datasource/ExternalDataSourceServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/datasource/ExternalDataSourceServiceImpl.java @@ -93,8 +93,8 @@ public void init() { // Database health check - testJtList = new ArrayList(); - isHealthList = new ArrayList(); + testJtList = new ArrayList<>(); + isHealthList = new ArrayList<>(); tm = new DataSourceTransactionManager(); tjt = new TransactionTemplate(tm); From 646ea61cabf6123598da8320a2e2bd93e8409f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BF=8A=20SionYang?= Date: Mon, 16 May 2022 10:14:58 +0800 Subject: [PATCH 021/133] Remove mina dependency. (#8369) --- naming/pom.xml | 4 ---- pom.xml | 6 ------ 2 files changed, 10 deletions(-) diff --git a/naming/pom.xml b/naming/pom.xml index e457a2710f3..dce4f5e6914 100644 --- a/naming/pom.xml +++ b/naming/pom.xml @@ -92,10 +92,6 @@ logback-core - - org.apache.mina - mina-core - org.javatuples javatuples diff --git a/pom.xml b/pom.xml index ff55dd3d1be..94783c4fe64 100644 --- a/pom.xml +++ b/pom.xml @@ -938,12 +938,6 @@ 1.3.2 - - org.apache.mina - mina-core - ${mina-core.version} - - com.google.guava guava From e17ea65954934f9e36b02a710d9874cde6b57448 Mon Sep 17 00:00:00 2001 From: david6969xin <86217945+david6969xin@users.noreply.github.com> Date: Mon, 16 May 2022 10:18:01 +0800 Subject: [PATCH 022/133] [ISSUE#8358] make this anonymous inner class a lambda (common module) (#8368) --- .../nacos/common/executor/ThreadPoolManager.java | 11 ++++------- .../common/http/AbstractHttpClientFactory.java | 16 ++++------------ .../nacos/common/http/HttpClientBeanHolder.java | 7 +------ 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java b/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java index ce3d0985d69..e030f7c336c 100644 --- a/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java +++ b/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java @@ -52,13 +52,10 @@ public final class ThreadPoolManager { static { INSTANCE.init(); - ThreadUtils.addShutdownHook(new Thread(new Runnable() { - @Override - public void run() { - LOGGER.warn("[ThreadPoolManager] Start destroying ThreadPool"); - shutdown(); - LOGGER.warn("[ThreadPoolManager] Destruction of the end"); - } + ThreadUtils.addShutdownHook(new Thread(() -> { + LOGGER.warn("[ThreadPoolManager] Start destroying ThreadPool"); + shutdown(); + LOGGER.warn("[ThreadPoolManager] Destruction of the end"); })); } diff --git a/common/src/main/java/com/alibaba/nacos/common/http/AbstractHttpClientFactory.java b/common/src/main/java/com/alibaba/nacos/common/http/AbstractHttpClientFactory.java index 7db59c6bf53..6ffd23483b2 100644 --- a/common/src/main/java/com/alibaba/nacos/common/http/AbstractHttpClientFactory.java +++ b/common/src/main/java/com/alibaba/nacos/common/http/AbstractHttpClientFactory.java @@ -64,18 +64,10 @@ public NacosRestTemplate createNacosRestTemplate() { final JdkHttpClientRequest clientRequest = new JdkHttpClientRequest(httpClientConfig); // enable ssl - initTls(new BiConsumer() { - @Override - public void accept(SSLContext sslContext, HostnameVerifier hostnameVerifier) { - clientRequest.setSSLContext(loadSSLContext()); - clientRequest.replaceSSLHostnameVerifier(hostnameVerifier); - } - }, new TlsFileWatcher.FileChangeListener() { - @Override - public void onChanged(String filePath) { - clientRequest.setSSLContext(loadSSLContext()); - } - }); + initTls((sslContext, hostnameVerifier) -> { + clientRequest.setSSLContext(loadSSLContext()); + clientRequest.replaceSSLHostnameVerifier(hostnameVerifier); + }, filePath -> clientRequest.setSSLContext(loadSSLContext())); return new NacosRestTemplate(assignLogger(), clientRequest); } diff --git a/common/src/main/java/com/alibaba/nacos/common/http/HttpClientBeanHolder.java b/common/src/main/java/com/alibaba/nacos/common/http/HttpClientBeanHolder.java index 2842906bd25..f29b5d438a5 100644 --- a/common/src/main/java/com/alibaba/nacos/common/http/HttpClientBeanHolder.java +++ b/common/src/main/java/com/alibaba/nacos/common/http/HttpClientBeanHolder.java @@ -44,12 +44,7 @@ public final class HttpClientBeanHolder { private static final AtomicBoolean ALREADY_SHUTDOWN = new AtomicBoolean(false); static { - ThreadUtils.addShutdownHook(new Runnable() { - @Override - public void run() { - shutdown(); - } - }); + ThreadUtils.addShutdownHook(HttpClientBeanHolder::shutdown); } public static NacosRestTemplate getNacosRestTemplate(Logger logger) { From 5938b7f50fca2c574f9c4947dcc5b0db81fd2274 Mon Sep 17 00:00:00 2001 From: david6969xin <86217945+david6969xin@users.noreply.github.com> Date: Mon, 16 May 2022 10:18:57 +0800 Subject: [PATCH 023/133] [ISSUE#8358] make this anonymous inner class a lambda (client module) (#8367) --- .../naming/backups/FailoverReactor.java | 45 ++++++++----------- .../nacos/client/naming/beat/BeatReactor.java | 14 +++--- .../client/naming/core/PushReceiver.java | 14 +++--- 3 files changed, 29 insertions(+), 44 deletions(-) diff --git a/client/src/main/java/com/alibaba/nacos/client/naming/backups/FailoverReactor.java b/client/src/main/java/com/alibaba/nacos/client/naming/backups/FailoverReactor.java index 58a3c754761..b6897f7bf69 100644 --- a/client/src/main/java/com/alibaba/nacos/client/naming/backups/FailoverReactor.java +++ b/client/src/main/java/com/alibaba/nacos/client/naming/backups/FailoverReactor.java @@ -40,7 +40,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import static com.alibaba.nacos.client.utils.LogUtils.NAMING_LOGGER; @@ -76,14 +75,11 @@ public FailoverReactor(ServiceInfoHolder serviceInfoHolder, String cacheDir) { this.serviceInfoHolder = serviceInfoHolder; this.failoverDir = cacheDir + FAILOVER_DIR; // init executorService - this.executorService = new ScheduledThreadPoolExecutor(1, new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - Thread thread = new Thread(r); - thread.setDaemon(true); - thread.setName("com.alibaba.nacos.naming.failover"); - return thread; - } + this.executorService = new ScheduledThreadPoolExecutor(1, r -> { + Thread thread = new Thread(r); + thread.setDaemon(true); + thread.setName("com.alibaba.nacos.naming.failover"); + return thread; }); this.init(); } @@ -98,25 +94,22 @@ public void init() { executorService.scheduleWithFixedDelay(new DiskFileWriter(), 30, DAY_PERIOD_MINUTES, TimeUnit.MINUTES); // backup file on startup if failover directory is empty. - executorService.schedule(new Runnable() { - @Override - public void run() { - try { - File cacheDir = new File(failoverDir); - - if (!cacheDir.exists() && !cacheDir.mkdirs()) { - throw new IllegalStateException("failed to create cache dir: " + failoverDir); - } - - File[] files = cacheDir.listFiles(); - if (files == null || files.length <= 0) { - new DiskFileWriter().run(); - } - } catch (Throwable e) { - NAMING_LOGGER.error("[NA] failed to backup file on startup.", e); + executorService.schedule(() -> { + try { + File cacheDir = new File(failoverDir); + + if (!cacheDir.exists() && !cacheDir.mkdirs()) { + throw new IllegalStateException("failed to create cache dir: " + failoverDir); } - + + File[] files = cacheDir.listFiles(); + if (files == null || files.length <= 0) { + new DiskFileWriter().run(); + } + } catch (Throwable e) { + NAMING_LOGGER.error("[NA] failed to backup file on startup.", e); } + }, 10000L, TimeUnit.MILLISECONDS); } diff --git a/client/src/main/java/com/alibaba/nacos/client/naming/beat/BeatReactor.java b/client/src/main/java/com/alibaba/nacos/client/naming/beat/BeatReactor.java index 922777f3c83..848edf3a667 100644 --- a/client/src/main/java/com/alibaba/nacos/client/naming/beat/BeatReactor.java +++ b/client/src/main/java/com/alibaba/nacos/client/naming/beat/BeatReactor.java @@ -37,7 +37,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import static com.alibaba.nacos.client.utils.LogUtils.NAMING_LOGGER; @@ -66,14 +65,11 @@ public BeatReactor(NamingHttpClientProxy serverProxy) { public BeatReactor(NamingHttpClientProxy serverProxy, Properties properties) { this.serverProxy = serverProxy; int threadCount = initClientBeatThreadCount(properties); - this.executorService = new ScheduledThreadPoolExecutor(threadCount, new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - Thread thread = new Thread(r); - thread.setDaemon(true); - thread.setName("com.alibaba.nacos.naming.beat.sender"); - return thread; - } + this.executorService = new ScheduledThreadPoolExecutor(threadCount, r -> { + Thread thread = new Thread(r); + thread.setDaemon(true); + thread.setName("com.alibaba.nacos.naming.beat.sender"); + return thread; }); } diff --git a/client/src/main/java/com/alibaba/nacos/client/naming/core/PushReceiver.java b/client/src/main/java/com/alibaba/nacos/client/naming/core/PushReceiver.java index 3e9f36c2628..78fc8eb9328 100644 --- a/client/src/main/java/com/alibaba/nacos/client/naming/core/PushReceiver.java +++ b/client/src/main/java/com/alibaba/nacos/client/naming/core/PushReceiver.java @@ -32,7 +32,6 @@ import java.nio.charset.StandardCharsets; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import static com.alibaba.nacos.client.utils.LogUtils.NAMING_LOGGER; @@ -74,14 +73,11 @@ public PushReceiver(ServiceInfoHolder serviceInfoHolder) { } else { this.udpSocket = new DatagramSocket(new InetSocketAddress(Integer.parseInt(udpPort))); } - this.executorService = new ScheduledThreadPoolExecutor(1, new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - Thread thread = new Thread(r); - thread.setDaemon(true); - thread.setName("com.alibaba.nacos.naming.push.receiver"); - return thread; - } + this.executorService = new ScheduledThreadPoolExecutor(1, r -> { + Thread thread = new Thread(r); + thread.setDaemon(true); + thread.setName("com.alibaba.nacos.naming.push.receiver"); + return thread; }); this.executorService.execute(this); From b928568ce83b1343165344fb51140125be7810e3 Mon Sep 17 00:00:00 2001 From: Endwas <42268315+Endwas@users.noreply.github.com> Date: Mon, 16 May 2022 10:36:04 +0800 Subject: [PATCH 024/133] [ISSUE #7315] Unfiy Map's get and put methods by computeIfAbsent In ThreadPoolManager (#7304) * Unfiy Map's get and put methods by computeIfAbsent In ThreadPoolManager What is the purpose of the change Optimization and tidy codes. Brief changelog Unfiy get/put by computeIfAbsent. Verifying this change eclipse-pmd was used to verify the changes * Unfiy Map's get and put methods by computeIfAbsent In ThreadPoolManager What is the purpose of the change Optimization and tidy codes. Brief changelog Unfiy get/put by computeIfAbsent. Verifying this change eclipse-pmd was used to verify the changes --- .../alibaba/nacos/common/executor/ThreadPoolManager.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java b/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java index e030f7c336c..74bd862ffff 100644 --- a/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java +++ b/common/src/main/java/com/alibaba/nacos/common/executor/ThreadPoolManager.java @@ -86,15 +86,11 @@ public void register(String namespace, String group, ExecutorService executor) { Map> map = resourcesManager.get(namespace); if (map == null) { map = new HashMap>(8); - map.put(group, new HashSet()); - map.get(group).add(executor); + map.computeIfAbsent(group, key -> new HashSet<>()).add(executor); resourcesManager.put(namespace, map); return; } - if (!map.containsKey(group)) { - map.put(group, new HashSet()); - } - map.get(group).add(executor); + map.computeIfAbsent(group, key -> new HashSet<>()).add(executor); } } From f21b332f98617d3b487916b57659e33a309b2d66 Mon Sep 17 00:00:00 2001 From: lpaz010 <39051367+lpaz010@users.noreply.github.com> Date: Wed, 18 May 2022 10:16:33 +0800 Subject: [PATCH 025/133] reduce magic value (#8395) --- .../nacos/core/cluster/lookup/StandaloneMemberLookup.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/main/java/com/alibaba/nacos/core/cluster/lookup/StandaloneMemberLookup.java b/core/src/main/java/com/alibaba/nacos/core/cluster/lookup/StandaloneMemberLookup.java index 65ef71e7214..70deb5b2cb2 100644 --- a/core/src/main/java/com/alibaba/nacos/core/cluster/lookup/StandaloneMemberLookup.java +++ b/core/src/main/java/com/alibaba/nacos/core/cluster/lookup/StandaloneMemberLookup.java @@ -20,7 +20,6 @@ import com.alibaba.nacos.core.cluster.AbstractMemberLookup; import com.alibaba.nacos.core.cluster.MemberUtil; import com.alibaba.nacos.sys.env.EnvUtil; -import com.alibaba.nacos.sys.utils.InetUtils; import java.util.Collections; @@ -33,7 +32,7 @@ public class StandaloneMemberLookup extends AbstractMemberLookup { @Override public void doStart() { - String url = InetUtils.getSelfIP() + ":" + EnvUtil.getPort(); + String url = EnvUtil.getLocalAddress(); afterLookup(MemberUtil.readServerConf(Collections.singletonList(url))); } From f8d307521ccc558ba2200e616c51291e4f75dbff Mon Sep 17 00:00:00 2001 From: david6969xin <86217945+david6969xin@users.noreply.github.com> Date: Wed, 18 May 2022 10:23:51 +0800 Subject: [PATCH 026/133] [ISSUE#8358] make this anonymous inner class a lambda (config module) (#8388) --- .../server/service/LongPollingService.java | 60 +++++++++---------- .../service/notify/HttpClientManager.java | 7 +-- .../ExternalStoragePersistServiceImpl.java | 44 ++++++-------- 3 files changed, 48 insertions(+), 63 deletions(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/LongPollingService.java b/config/src/main/java/com/alibaba/nacos/config/server/service/LongPollingService.java index f42225a0933..53fc6e3f57e 100755 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/LongPollingService.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/LongPollingService.java @@ -392,45 +392,41 @@ class ClientLongPolling implements Runnable { @Override public void run() { - asyncTimeoutFuture = ConfigExecutor.scheduleLongPolling(new Runnable() { - @Override - public void run() { - try { - getRetainIps().put(ClientLongPolling.this.ip, System.currentTimeMillis()); - - // Delete subscriber's relations. - boolean removeFlag = allSubs.remove(ClientLongPolling.this); - - if (removeFlag) { - if (isFixedPolling()) { - LogUtil.CLIENT_LOG - .info("{}|{}|{}|{}|{}|{}", (System.currentTimeMillis() - createTime), "fix", - RequestUtil.getRemoteIp((HttpServletRequest) asyncContext.getRequest()), - "polling", clientMd5Map.size(), probeRequestSize); - List changedGroups = MD5Util - .compareMd5((HttpServletRequest) asyncContext.getRequest(), - (HttpServletResponse) asyncContext.getResponse(), clientMd5Map); - if (changedGroups.size() > 0) { - sendResponse(changedGroups); - } else { - sendResponse(null); - } + asyncTimeoutFuture = ConfigExecutor.scheduleLongPolling(() -> { + try { + getRetainIps().put(ClientLongPolling.this.ip, System.currentTimeMillis()); + + // Delete subscriber's relations. + boolean removeFlag = allSubs.remove(ClientLongPolling.this); + + if (removeFlag) { + if (isFixedPolling()) { + LogUtil.CLIENT_LOG + .info("{}|{}|{}|{}|{}|{}", (System.currentTimeMillis() - createTime), "fix", + RequestUtil.getRemoteIp((HttpServletRequest) asyncContext.getRequest()), + "polling", clientMd5Map.size(), probeRequestSize); + List changedGroups = MD5Util + .compareMd5((HttpServletRequest) asyncContext.getRequest(), + (HttpServletResponse) asyncContext.getResponse(), clientMd5Map); + if (changedGroups.size() > 0) { + sendResponse(changedGroups); } else { - LogUtil.CLIENT_LOG - .info("{}|{}|{}|{}|{}|{}", (System.currentTimeMillis() - createTime), "timeout", - RequestUtil.getRemoteIp((HttpServletRequest) asyncContext.getRequest()), - "polling", clientMd5Map.size(), probeRequestSize); sendResponse(null); } } else { - LogUtil.DEFAULT_LOG.warn("client subsciber's relations delete fail."); + LogUtil.CLIENT_LOG + .info("{}|{}|{}|{}|{}|{}", (System.currentTimeMillis() - createTime), "timeout", + RequestUtil.getRemoteIp((HttpServletRequest) asyncContext.getRequest()), + "polling", clientMd5Map.size(), probeRequestSize); + sendResponse(null); } - } catch (Throwable t) { - LogUtil.DEFAULT_LOG.error("long polling error:" + t.getMessage(), t.getCause()); + } else { + LogUtil.DEFAULT_LOG.warn("client subsciber's relations delete fail."); } - + } catch (Throwable t) { + LogUtil.DEFAULT_LOG.error("long polling error:" + t.getMessage(), t.getCause()); } - + }, timeoutTime, TimeUnit.MILLISECONDS); allSubs.add(this); diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/notify/HttpClientManager.java b/config/src/main/java/com/alibaba/nacos/config/server/service/notify/HttpClientManager.java index 9a9f447745e..953a3606d7c 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/notify/HttpClientManager.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/notify/HttpClientManager.java @@ -52,12 +52,7 @@ public final class HttpClientManager { new ConfigHttpClientFactory(PropertyUtil.getNotifyConnectTimeout(), PropertyUtil.getNotifySocketTimeout())); - ThreadUtils.addShutdownHook(new Runnable() { - @Override - public void run() { - shutdown(); - } - }); + ThreadUtils.addShutdownHook(HttpClientManager::shutdown); } public static NacosRestTemplate getNacosRestTemplate() { diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java index e452af8fd3a..ad0d61a0c28 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java @@ -681,20 +681,17 @@ public long findConfigMaxId() { public boolean batchPublishAggr(final String dataId, final String group, final String tenant, final Map datumMap, final String appName) { try { - Boolean isPublishOk = tjt.execute(new TransactionCallback() { - @Override - public Boolean doInTransaction(TransactionStatus status) { - for (Map.Entry entry : datumMap.entrySet()) { - try { - if (!addAggrConfigInfo(dataId, group, tenant, entry.getKey(), appName, entry.getValue())) { - throw new TransactionSystemException("error in addAggrConfigInfo"); - } - } catch (Throwable e) { + Boolean isPublishOk = tjt.execute(status -> { + for (Map.Entry entry : datumMap.entrySet()) { + try { + if (!addAggrConfigInfo(dataId, group, tenant, entry.getKey(), appName, entry.getValue())) { throw new TransactionSystemException("error in addAggrConfigInfo"); } + } catch (Throwable e) { + throw new TransactionSystemException("error in addAggrConfigInfo"); } - return Boolean.TRUE; } + return Boolean.TRUE; }); if (isPublishOk == null) { return false; @@ -710,23 +707,20 @@ public Boolean doInTransaction(TransactionStatus status) { public boolean replaceAggr(final String dataId, final String group, final String tenant, final Map datumMap, final String appName) { try { - Boolean isReplaceOk = tjt.execute(new TransactionCallback() { - @Override - public Boolean doInTransaction(TransactionStatus status) { - try { - String appNameTmp = appName == null ? "" : appName; - removeAggrConfigInfo(dataId, group, tenant); - String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = "INSERT INTO config_info_aggr(data_id, group_id, tenant_id, datum_id, app_name, content, gmt_modified) VALUES(?,?,?,?,?,?,?) "; - for (Map.Entry datumEntry : datumMap.entrySet()) { - jt.update(sql, dataId, group, tenantTmp, datumEntry.getKey(), appNameTmp, - datumEntry.getValue(), new Timestamp(System.currentTimeMillis())); - } - } catch (Throwable e) { - throw new TransactionSystemException("error in addAggrConfigInfo"); + Boolean isReplaceOk = tjt.execute(status -> { + try { + String appNameTmp = appName == null ? "" : appName; + removeAggrConfigInfo(dataId, group, tenant); + String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; + String sql = "INSERT INTO config_info_aggr(data_id, group_id, tenant_id, datum_id, app_name, content, gmt_modified) VALUES(?,?,?,?,?,?,?) "; + for (Map.Entry datumEntry : datumMap.entrySet()) { + jt.update(sql, dataId, group, tenantTmp, datumEntry.getKey(), appNameTmp, + datumEntry.getValue(), new Timestamp(System.currentTimeMillis())); } - return Boolean.TRUE; + } catch (Throwable e) { + throw new TransactionSystemException("error in addAggrConfigInfo"); } + return Boolean.TRUE; }); if (isReplaceOk == null) { return false; From ceb7fa078a86c0af5e3f6bf629cde8f1c46c944d Mon Sep 17 00:00:00 2001 From: david6969xin <86217945+david6969xin@users.noreply.github.com> Date: Wed, 18 May 2022 10:25:55 +0800 Subject: [PATCH 027/133] [ISSUE#8358] make this anonymous inner class a lambda (core module) (#8387) --- .../nacos/core/remote/ConnectionManager.java | 335 +++++++++--------- .../remote/RpcAckCallbackSynchronizer.java | 16 +- 2 files changed, 168 insertions(+), 183 deletions(-) diff --git a/core/src/main/java/com/alibaba/nacos/core/remote/ConnectionManager.java b/core/src/main/java/com/alibaba/nacos/core/remote/ConnectionManager.java index 9925bd19813..6f4e2c1a3c8 100644 --- a/core/src/main/java/com/alibaba/nacos/core/remote/ConnectionManager.java +++ b/core/src/main/java/com/alibaba/nacos/core/remote/ConnectionManager.java @@ -289,198 +289,195 @@ public void refreshActiveTime(String connectionId) { public void start() { // Start UnHealthy Connection Expel Task. - RpcScheduledExecutor.COMMON_SERVER_EXECUTOR.scheduleWithFixedDelay(new Runnable() { - @Override - public void run() { - try { - - int totalCount = connections.size(); - Loggers.REMOTE_DIGEST.info("Connection check task start"); - MetricsMonitor.getLongConnectionMonitor().set(totalCount); - Set> entries = connections.entrySet(); - int currentSdkClientCount = currentSdkClientCount(); - boolean isLoaderClient = loadClient >= 0; - int currentMaxClient = isLoaderClient ? loadClient : connectionLimitRule.countLimit; - int expelCount = currentMaxClient < 0 ? 0 : Math.max(currentSdkClientCount - currentMaxClient, 0); - - Loggers.REMOTE_DIGEST - .info("Total count ={}, sdkCount={},clusterCount={}, currentLimit={}, toExpelCount={}", - totalCount, currentSdkClientCount, (totalCount - currentSdkClientCount), - currentMaxClient + (isLoaderClient ? "(loaderCount)" : ""), expelCount); - - List expelClient = new LinkedList<>(); - - Map expelForIp = new HashMap<>(16); - - //1. calculate expel count of ip. - for (Map.Entry entry : entries) { - - Connection client = entry.getValue(); - String appName = client.getMetaInfo().getAppName(); - String clientIp = client.getMetaInfo().getClientIp(); - if (client.getMetaInfo().isSdkSource() && !expelForIp.containsKey(clientIp)) { - //get limit for current ip. - int countLimitOfIp = connectionLimitRule.getCountLimitOfIp(clientIp); - if (countLimitOfIp < 0) { - int countLimitOfApp = connectionLimitRule.getCountLimitOfApp(appName); - countLimitOfIp = countLimitOfApp < 0 ? countLimitOfIp : countLimitOfApp; - } - if (countLimitOfIp < 0) { - countLimitOfIp = connectionLimitRule.getCountLimitPerClientIpDefault(); - } - - if (countLimitOfIp >= 0 && connectionForClientIp.containsKey(clientIp)) { - AtomicInteger currentCountIp = connectionForClientIp.get(clientIp); - if (currentCountIp != null && currentCountIp.get() > countLimitOfIp) { - expelForIp.put(clientIp, new AtomicInteger(currentCountIp.get() - countLimitOfIp)); - } + RpcScheduledExecutor.COMMON_SERVER_EXECUTOR.scheduleWithFixedDelay(() -> { + try { + + int totalCount = connections.size(); + Loggers.REMOTE_DIGEST.info("Connection check task start"); + MetricsMonitor.getLongConnectionMonitor().set(totalCount); + Set> entries = connections.entrySet(); + int currentSdkClientCount = currentSdkClientCount(); + boolean isLoaderClient = loadClient >= 0; + int currentMaxClient = isLoaderClient ? loadClient : connectionLimitRule.countLimit; + int expelCount = currentMaxClient < 0 ? 0 : Math.max(currentSdkClientCount - currentMaxClient, 0); + + Loggers.REMOTE_DIGEST + .info("Total count ={}, sdkCount={},clusterCount={}, currentLimit={}, toExpelCount={}", + totalCount, currentSdkClientCount, (totalCount - currentSdkClientCount), + currentMaxClient + (isLoaderClient ? "(loaderCount)" : ""), expelCount); + + List expelClient = new LinkedList<>(); + + Map expelForIp = new HashMap<>(16); + + //1. calculate expel count of ip. + for (Map.Entry entry : entries) { + + Connection client = entry.getValue(); + String appName = client.getMetaInfo().getAppName(); + String clientIp = client.getMetaInfo().getClientIp(); + if (client.getMetaInfo().isSdkSource() && !expelForIp.containsKey(clientIp)) { + //get limit for current ip. + int countLimitOfIp = connectionLimitRule.getCountLimitOfIp(clientIp); + if (countLimitOfIp < 0) { + int countLimitOfApp = connectionLimitRule.getCountLimitOfApp(appName); + countLimitOfIp = countLimitOfApp < 0 ? countLimitOfIp : countLimitOfApp; + } + if (countLimitOfIp < 0) { + countLimitOfIp = connectionLimitRule.getCountLimitPerClientIpDefault(); + } + + if (countLimitOfIp >= 0 && connectionForClientIp.containsKey(clientIp)) { + AtomicInteger currentCountIp = connectionForClientIp.get(clientIp); + if (currentCountIp != null && currentCountIp.get() > countLimitOfIp) { + expelForIp.put(clientIp, new AtomicInteger(currentCountIp.get() - countLimitOfIp)); } } } - - Loggers.REMOTE_DIGEST - .info("Check over limit for ip limit rule, over limit ip count={}", expelForIp.size()); - - if (expelForIp.size() > 0) { - Loggers.REMOTE_DIGEST.info("Over limit ip expel info, {}", expelForIp); + } + + Loggers.REMOTE_DIGEST + .info("Check over limit for ip limit rule, over limit ip count={}", expelForIp.size()); + + if (expelForIp.size() > 0) { + Loggers.REMOTE_DIGEST.info("Over limit ip expel info, {}", expelForIp); + } + + Set outDatedConnections = new HashSet<>(); + long now = System.currentTimeMillis(); + //2.get expel connection for ip limit. + for (Map.Entry entry : entries) { + Connection client = entry.getValue(); + String clientIp = client.getMetaInfo().getClientIp(); + AtomicInteger integer = expelForIp.get(clientIp); + if (integer != null && integer.intValue() > 0) { + integer.decrementAndGet(); + expelClient.add(client.getMetaInfo().getConnectionId()); + expelCount--; + } else if (now - client.getMetaInfo().getLastActiveTime() >= KEEP_ALIVE_TIME) { + outDatedConnections.add(client.getMetaInfo().getConnectionId()); } - - Set outDatedConnections = new HashSet<>(); - long now = System.currentTimeMillis(); - //2.get expel connection for ip limit. + + } + + //3. if total count is still over limit. + if (expelCount > 0) { for (Map.Entry entry : entries) { Connection client = entry.getValue(); - String clientIp = client.getMetaInfo().getClientIp(); - AtomicInteger integer = expelForIp.get(clientIp); - if (integer != null && integer.intValue() > 0) { - integer.decrementAndGet(); + if (!expelForIp.containsKey(client.getMetaInfo().clientIp) && client.getMetaInfo() + .isSdkSource() && expelCount > 0) { expelClient.add(client.getMetaInfo().getConnectionId()); expelCount--; - } else if (now - client.getMetaInfo().getLastActiveTime() >= KEEP_ALIVE_TIME) { - outDatedConnections.add(client.getMetaInfo().getConnectionId()); + outDatedConnections.remove(client.getMetaInfo().getConnectionId()); } - } - - //3. if total count is still over limit. - if (expelCount > 0) { - for (Map.Entry entry : entries) { - Connection client = entry.getValue(); - if (!expelForIp.containsKey(client.getMetaInfo().clientIp) && client.getMetaInfo() - .isSdkSource() && expelCount > 0) { - expelClient.add(client.getMetaInfo().getConnectionId()); - expelCount--; - outDatedConnections.remove(client.getMetaInfo().getConnectionId()); - } + } + + String serverIp = null; + String serverPort = null; + if (StringUtils.isNotBlank(redirectAddress) && redirectAddress.contains(Constants.COLON)) { + String[] split = redirectAddress.split(Constants.COLON); + serverIp = split[0]; + serverPort = split[1]; + } + + for (String expelledClientId : expelClient) { + try { + Connection connection = getConnection(expelledClientId); + if (connection != null) { + ConnectResetRequest connectResetRequest = new ConnectResetRequest(); + connectResetRequest.setServerIp(serverIp); + connectResetRequest.setServerPort(serverPort); + connection.asyncRequest(connectResetRequest, null); + Loggers.REMOTE_DIGEST + .info("Send connection reset request , connection id = {},recommendServerIp={}, recommendServerPort={}", + expelledClientId, connectResetRequest.getServerIp(), + connectResetRequest.getServerPort()); } + + } catch (ConnectionAlreadyClosedException e) { + unregister(expelledClientId); + } catch (Exception e) { + Loggers.REMOTE_DIGEST.error("Error occurs when expel connection, expelledClientId:{}", expelledClientId, e); } - - String serverIp = null; - String serverPort = null; - if (StringUtils.isNotBlank(redirectAddress) && redirectAddress.contains(Constants.COLON)) { - String[] split = redirectAddress.split(Constants.COLON); - serverIp = split[0]; - serverPort = split[1]; - } - - for (String expelledClientId : expelClient) { + } + + //4.client active detection. + Loggers.REMOTE_DIGEST.info("Out dated connection ,size={}", outDatedConnections.size()); + if (CollectionUtils.isNotEmpty(outDatedConnections)) { + Set successConnections = new HashSet<>(); + final CountDownLatch latch = new CountDownLatch(outDatedConnections.size()); + for (String outDateConnectionId : outDatedConnections) { try { - Connection connection = getConnection(expelledClientId); + Connection connection = getConnection(outDateConnectionId); if (connection != null) { - ConnectResetRequest connectResetRequest = new ConnectResetRequest(); - connectResetRequest.setServerIp(serverIp); - connectResetRequest.setServerPort(serverPort); - connection.asyncRequest(connectResetRequest, null); + ClientDetectionRequest clientDetectionRequest = new ClientDetectionRequest(); + connection.asyncRequest(clientDetectionRequest, new RequestCallBack() { + @Override + public Executor getExecutor() { + return null; + } + + @Override + public long getTimeout() { + return 1000L; + } + + @Override + public void onResponse(Response response) { + latch.countDown(); + if (response != null && response.isSuccess()) { + connection.freshActiveTime(); + successConnections.add(outDateConnectionId); + } + } + + @Override + public void onException(Throwable e) { + latch.countDown(); + } + }); + Loggers.REMOTE_DIGEST - .info("Send connection reset request , connection id = {},recommendServerIp={}, recommendServerPort={}", - expelledClientId, connectResetRequest.getServerIp(), - connectResetRequest.getServerPort()); + .info("[{}]send connection active request ", outDateConnectionId); + } else { + latch.countDown(); } - + } catch (ConnectionAlreadyClosedException e) { - unregister(expelledClientId); + latch.countDown(); } catch (Exception e) { - Loggers.REMOTE_DIGEST.error("Error occurs when expel connection, expelledClientId:{}", expelledClientId, e); + Loggers.REMOTE_DIGEST + .error("[{}]Error occurs when check client active detection ,error={}", + outDateConnectionId, e); + latch.countDown(); } } - - //4.client active detection. - Loggers.REMOTE_DIGEST.info("Out dated connection ,size={}", outDatedConnections.size()); - if (CollectionUtils.isNotEmpty(outDatedConnections)) { - Set successConnections = new HashSet<>(); - final CountDownLatch latch = new CountDownLatch(outDatedConnections.size()); - for (String outDateConnectionId : outDatedConnections) { - try { - Connection connection = getConnection(outDateConnectionId); - if (connection != null) { - ClientDetectionRequest clientDetectionRequest = new ClientDetectionRequest(); - connection.asyncRequest(clientDetectionRequest, new RequestCallBack() { - @Override - public Executor getExecutor() { - return null; - } - - @Override - public long getTimeout() { - return 1000L; - } - - @Override - public void onResponse(Response response) { - latch.countDown(); - if (response != null && response.isSuccess()) { - connection.freshActiveTime(); - successConnections.add(outDateConnectionId); - } - } - - @Override - public void onException(Throwable e) { - latch.countDown(); - } - }); - - Loggers.REMOTE_DIGEST - .info("[{}]send connection active request ", outDateConnectionId); - } else { - latch.countDown(); - } - - } catch (ConnectionAlreadyClosedException e) { - latch.countDown(); - } catch (Exception e) { - Loggers.REMOTE_DIGEST - .error("[{}]Error occurs when check client active detection ,error={}", - outDateConnectionId, e); - latch.countDown(); - } - } - - latch.await(3000L, TimeUnit.MILLISECONDS); - Loggers.REMOTE_DIGEST - .info("Out dated connection check successCount={}", successConnections.size()); - - for (String outDateConnectionId : outDatedConnections) { - if (!successConnections.contains(outDateConnectionId)) { - Loggers.REMOTE_DIGEST - .info("[{}]Unregister Out dated connection....", outDateConnectionId); - unregister(outDateConnectionId); - } + + latch.await(3000L, TimeUnit.MILLISECONDS); + Loggers.REMOTE_DIGEST + .info("Out dated connection check successCount={}", successConnections.size()); + + for (String outDateConnectionId : outDatedConnections) { + if (!successConnections.contains(outDateConnectionId)) { + Loggers.REMOTE_DIGEST + .info("[{}]Unregister Out dated connection....", outDateConnectionId); + unregister(outDateConnectionId); } } - - //reset loader client - - if (isLoaderClient) { - loadClient = -1; - redirectAddress = null; - } - - Loggers.REMOTE_DIGEST.info("Connection check task end"); - - } catch (Throwable e) { - Loggers.REMOTE.error("Error occurs during connection check... ", e); } + + //reset loader client + + if (isLoaderClient) { + loadClient = -1; + redirectAddress = null; + } + + Loggers.REMOTE_DIGEST.info("Connection check task end"); + + } catch (Throwable e) { + Loggers.REMOTE.error("Error occurs during connection check... ", e); } }, 1000L, 3000L, TimeUnit.MILLISECONDS); diff --git a/core/src/main/java/com/alibaba/nacos/core/remote/RpcAckCallbackSynchronizer.java b/core/src/main/java/com/alibaba/nacos/core/remote/RpcAckCallbackSynchronizer.java index fa4bb9d3679..20e9820ba03 100644 --- a/core/src/main/java/com/alibaba/nacos/core/remote/RpcAckCallbackSynchronizer.java +++ b/core/src/main/java/com/alibaba/nacos/core/remote/RpcAckCallbackSynchronizer.java @@ -21,12 +21,10 @@ import com.alibaba.nacos.api.remote.response.Response; import com.alibaba.nacos.core.utils.Loggers; import com.alipay.hessian.clhm.ConcurrentLinkedHashMap; -import com.alipay.hessian.clhm.EvictionListener; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeoutException; -import java.util.function.Consumer; /** * server push ack synchronier. @@ -39,18 +37,8 @@ public class RpcAckCallbackSynchronizer { @SuppressWarnings("checkstyle:linelength") public static final Map> CALLBACK_CONTEXT = new ConcurrentLinkedHashMap.Builder>() .maximumWeightedCapacity(1000000) - .listener(new EvictionListener>() { - @Override - public void onEviction(String s, Map pushCallBack) { - - pushCallBack.entrySet().forEach(new Consumer>() { - @Override - public void accept(Map.Entry stringDefaultPushFutureEntry) { - stringDefaultPushFutureEntry.getValue().setFailResult(new TimeoutException()); - } - }); - } - }).build(); + .listener((s, pushCallBack) -> pushCallBack.entrySet().forEach( + stringDefaultPushFutureEntry -> stringDefaultPushFutureEntry.getValue().setFailResult(new TimeoutException()))).build(); /** * notify ack. From 47b0150dc1555586af83fb2e588e1e1688afa966 Mon Sep 17 00:00:00 2001 From: david6969xin <86217945+david6969xin@users.noreply.github.com> Date: Wed, 18 May 2022 10:50:30 +0800 Subject: [PATCH 028/133] [ISSUE#8358] make this anonymous inner class a lambda (example module) (#8386) --- .../com/alibaba/nacos/example/NamingExample.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/example/src/main/java/com/alibaba/nacos/example/NamingExample.java b/example/src/main/java/com/alibaba/nacos/example/NamingExample.java index b112a3ad119..6e958d31643 100644 --- a/example/src/main/java/com/alibaba/nacos/example/NamingExample.java +++ b/example/src/main/java/com/alibaba/nacos/example/NamingExample.java @@ -26,7 +26,6 @@ import java.util.Properties; import java.util.concurrent.Executor; import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -52,13 +51,10 @@ public static void main(String[] args) throws NacosException, InterruptedExcepti System.out.println("instances after register: " + naming.getAllInstances("nacos.test.3")); Executor executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), - new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - Thread thread = new Thread(r); - thread.setName("test-thread"); - return thread; - } + runnable -> { + Thread thread = new Thread(runnable); + thread.setName("test-thread"); + return thread; }); naming.subscribe("nacos.test.3", new AbstractEventListener() { From 3a37290a015de3611991af1b8461ad1aa7469da0 Mon Sep 17 00:00:00 2001 From: david6969xin <86217945+david6969xin@users.noreply.github.com> Date: Wed, 18 May 2022 10:51:14 +0800 Subject: [PATCH 029/133] [ISSUE#8358] make this anonymous inner class a lambda (sys module) (#8385) --- .../nacos/sys/file/WatchFileCenter.java | 35 +++----- .../alibaba/nacos/sys/utils/InetUtils.java | 87 +++++++++---------- 2 files changed, 53 insertions(+), 69 deletions(-) diff --git a/sys/src/main/java/com/alibaba/nacos/sys/file/WatchFileCenter.java b/sys/src/main/java/com/alibaba/nacos/sys/file/WatchFileCenter.java index fe1f5e02057..71d6e1c58fa 100644 --- a/sys/src/main/java/com/alibaba/nacos/sys/file/WatchFileCenter.java +++ b/sys/src/main/java/com/alibaba/nacos/sys/file/WatchFileCenter.java @@ -65,12 +65,7 @@ public class WatchFileCenter { private static final AtomicBoolean CLOSED = new AtomicBoolean(false); static { - ThreadUtils.addShutdownHook(new Runnable() { - @Override - public void run() { - shutdown(); - } - }); + ThreadUtils.addShutdownHook(WatchFileCenter::shutdown); } /** @@ -212,18 +207,15 @@ public void run() { if (events.isEmpty()) { continue; } - callBackExecutor.execute(new Runnable() { - @Override - public void run() { - for (WatchEvent event : events) { - WatchEvent.Kind kind = event.kind(); - - // Since the OS's event cache may be overflow, a backstop is needed - if (StandardWatchEventKinds.OVERFLOW.equals(kind)) { - eventOverflow(); - } else { - eventProcess(event.context()); - } + callBackExecutor.execute(() -> { + for (WatchEvent event : events) { + WatchEvent.Kind kind = event.kind(); + + // Since the OS's event cache may be overflow, a backstop is needed + if (StandardWatchEventKinds.OVERFLOW.equals(kind)) { + eventOverflow(); + } else { + eventProcess(event.context()); } } }); @@ -240,12 +232,7 @@ private void eventProcess(Object context) { final String str = String.valueOf(context); for (final FileWatcher watcher : watchers) { if (watcher.interest(str)) { - Runnable job = new Runnable() { - @Override - public void run() { - watcher.onChange(fileChangeEvent); - } - }; + Runnable job = () -> watcher.onChange(fileChangeEvent); Executor executor = watcher.executor(); if (executor == null) { try { diff --git a/sys/src/main/java/com/alibaba/nacos/sys/utils/InetUtils.java b/sys/src/main/java/com/alibaba/nacos/sys/utils/InetUtils.java index 4a28aa11eaf..b9f648cc5bf 100644 --- a/sys/src/main/java/com/alibaba/nacos/sys/utils/InetUtils.java +++ b/sys/src/main/java/com/alibaba/nacos/sys/utils/InetUtils.java @@ -74,58 +74,55 @@ public class InetUtils { final long delayMs = Long.getLong("nacos.core.inet.auto-refresh", 30_000L); - Runnable ipAutoRefresh = new Runnable() { - @Override - public void run() { - String nacosIP = System.getProperty(NACOS_SERVER_IP); - if (StringUtils.isBlank(nacosIP)) { - nacosIP = EnvUtil.getProperty(IP_ADDRESS); + Runnable ipAutoRefresh = () -> { + String nacosIP = System.getProperty(NACOS_SERVER_IP); + if (StringUtils.isBlank(nacosIP)) { + nacosIP = EnvUtil.getProperty(IP_ADDRESS); + } + if (!StringUtils.isBlank(nacosIP)) { + if (!(InternetAddressUtil.isIP(nacosIP) || InternetAddressUtil.isDomain(nacosIP))) { + throw new RuntimeException("nacos address " + nacosIP + " is not ip"); } - if (!StringUtils.isBlank(nacosIP)) { - if (!(InternetAddressUtil.isIP(nacosIP) || InternetAddressUtil.isDomain(nacosIP))) { - throw new RuntimeException("nacos address " + nacosIP + " is not ip"); - } + } + String tmpSelfIP = nacosIP; + if (StringUtils.isBlank(tmpSelfIP)) { + preferHostnameOverIP = Boolean.getBoolean(SYSTEM_PREFER_HOSTNAME_OVER_IP); + + if (!preferHostnameOverIP) { + preferHostnameOverIP = Boolean.parseBoolean(EnvUtil.getProperty(PREFER_HOSTNAME_OVER_IP)); } - String tmpSelfIP = nacosIP; - if (StringUtils.isBlank(tmpSelfIP)) { - preferHostnameOverIP = Boolean.getBoolean(SYSTEM_PREFER_HOSTNAME_OVER_IP); - - if (!preferHostnameOverIP) { - preferHostnameOverIP = Boolean.parseBoolean(EnvUtil.getProperty(PREFER_HOSTNAME_OVER_IP)); - } - - if (preferHostnameOverIP) { - InetAddress inetAddress; - try { - inetAddress = InetAddress.getLocalHost(); - if (inetAddress.getHostName().equals(inetAddress.getCanonicalHostName())) { - tmpSelfIP = inetAddress.getHostName(); - } else { - tmpSelfIP = inetAddress.getCanonicalHostName(); - } - } catch (UnknownHostException ignore) { - LOG.warn("Unable to retrieve localhost"); + + if (preferHostnameOverIP) { + InetAddress inetAddress; + try { + inetAddress = InetAddress.getLocalHost(); + if (inetAddress.getHostName().equals(inetAddress.getCanonicalHostName())) { + tmpSelfIP = inetAddress.getHostName(); + } else { + tmpSelfIP = inetAddress.getCanonicalHostName(); } - } else { - tmpSelfIP = Objects.requireNonNull(findFirstNonLoopbackAddress()).getHostAddress(); + } catch (UnknownHostException ignore) { + LOG.warn("Unable to retrieve localhost"); } + } else { + tmpSelfIP = Objects.requireNonNull(findFirstNonLoopbackAddress()).getHostAddress(); } - if (InternetAddressUtil.PREFER_IPV6_ADDRESSES && !tmpSelfIP.startsWith(InternetAddressUtil.IPV6_START_MARK) && !tmpSelfIP - .endsWith(InternetAddressUtil.IPV6_END_MARK)) { - tmpSelfIP = InternetAddressUtil.IPV6_START_MARK + tmpSelfIP + InternetAddressUtil.IPV6_END_MARK; - if (StringUtils.contains(tmpSelfIP, InternetAddressUtil.PERCENT_SIGN_IN_IPV6)) { - tmpSelfIP = tmpSelfIP.substring(0, tmpSelfIP.indexOf(InternetAddressUtil.PERCENT_SIGN_IN_IPV6)) - + InternetAddressUtil.IPV6_END_MARK; - } - } - if (!Objects.equals(selfIP, tmpSelfIP) && Objects.nonNull(selfIP)) { - IPChangeEvent event = new IPChangeEvent(); - event.setOldIP(selfIP); - event.setNewIP(tmpSelfIP); - NotifyCenter.publishEvent(event); + } + if (InternetAddressUtil.PREFER_IPV6_ADDRESSES && !tmpSelfIP.startsWith(InternetAddressUtil.IPV6_START_MARK) && !tmpSelfIP + .endsWith(InternetAddressUtil.IPV6_END_MARK)) { + tmpSelfIP = InternetAddressUtil.IPV6_START_MARK + tmpSelfIP + InternetAddressUtil.IPV6_END_MARK; + if (StringUtils.contains(tmpSelfIP, InternetAddressUtil.PERCENT_SIGN_IN_IPV6)) { + tmpSelfIP = tmpSelfIP.substring(0, tmpSelfIP.indexOf(InternetAddressUtil.PERCENT_SIGN_IN_IPV6)) + + InternetAddressUtil.IPV6_END_MARK; } - selfIP = tmpSelfIP; } + if (!Objects.equals(selfIP, tmpSelfIP) && Objects.nonNull(selfIP)) { + IPChangeEvent event = new IPChangeEvent(); + event.setOldIP(selfIP); + event.setNewIP(tmpSelfIP); + NotifyCenter.publishEvent(event); + } + selfIP = tmpSelfIP; }; ipAutoRefresh.run(); From dbcdbb725d23036d3a52dfe5ca40dd7bdd9c40fe Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 18 May 2022 10:52:21 +0800 Subject: [PATCH 030/133] [ISSUE #8372] Fix https connection (#8380) * Fix #8372 * add unit test and remove set serverAddrsStr null * restore judgement and UT * add UT * split UT --- .../nacos/client/config/impl/ServerListManager.java | 2 +- .../client/config/impl/ServerListManagerTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/client/src/main/java/com/alibaba/nacos/client/config/impl/ServerListManager.java b/client/src/main/java/com/alibaba/nacos/client/config/impl/ServerListManager.java index 72467fa1108..85149fea636 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/impl/ServerListManager.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/impl/ServerListManager.java @@ -196,7 +196,7 @@ public ServerListManager(Properties properties) throws NacosException { StringTokenizer serverAddrsTokens = new StringTokenizer(this.serverAddrsStr, ",;"); while (serverAddrsTokens.hasMoreTokens()) { String serverAddr = serverAddrsTokens.nextToken().trim(); - if (serverAddr.startsWith(HTTP_PREFIX) || serverAddr.startsWith(HTTP_PREFIX)) { + if (serverAddr.startsWith(HTTP_PREFIX) || serverAddr.startsWith(HTTPS_PREFIX)) { serverAddrs.add(serverAddr); } else { String[] serverAddrArr = InternetAddressUtil.splitIPPortStr(serverAddr); diff --git a/client/src/test/java/com/alibaba/nacos/client/config/impl/ServerListManagerTest.java b/client/src/test/java/com/alibaba/nacos/client/config/impl/ServerListManagerTest.java index 600f725d7cc..5363bb20a36 100644 --- a/client/src/test/java/com/alibaba/nacos/client/config/impl/ServerListManagerTest.java +++ b/client/src/test/java/com/alibaba/nacos/client/config/impl/ServerListManagerTest.java @@ -60,6 +60,16 @@ public void testGetter() throws NacosException { final ServerListManager mgr2 = new ServerListManager(properties); Assert.assertEquals("aaa", mgr2.getContentPath()); } + + // Test https + { + Properties properties = new Properties(); + properties.put(PropertyKeyConst.CONTEXT_PATH, "aaa"); + properties.put(PropertyKeyConst.SERVER_ADDR, "https://1.1.1.1:8848"); + final ServerListManager mgr2 = new ServerListManager(properties); + Assert.assertEquals("aaa", mgr2.getContentPath()); + Assert.assertEquals("[https://1.1.1.1:8848]", mgr2.getServerUrls().toString()); + } { Properties properties2 = new Properties(); From 39015341afad8698402af84a79df2f88bdf12dbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BF=8A=20SionYang?= Date: Wed, 18 May 2022 10:53:16 +0800 Subject: [PATCH 031/133] Upgrade jackson version to 2.12.6.1 (#8383) --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 94783c4fe64..25d2245de11 100644 --- a/pom.xml +++ b/pom.xml @@ -141,9 +141,9 @@ 10.14.2.0 2.1 1.0 - 2.12.2 - 2.12.2 - 2.12.2 + 2.12.6 + 2.12.6.1 + 2.12.6 1.9.13 0.11.2 4.1.59.Final From 0a74419c50ef1ea272d0470924bdfc3903b8b2e1 Mon Sep 17 00:00:00 2001 From: bangbang2333 <43024629+bangbang2333@users.noreply.github.com> Date: Wed, 18 May 2022 10:57:06 +0800 Subject: [PATCH 032/133] =?UTF-8?q?[TMFB-4547]nacos=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=AF=B9clusterName=E8=BF=9B=E8=A1=8C=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E3=80=82=E5=87=BA=E7=8E=B0=E5=AE=9E=E4=BE=8B=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=EF=BC=8C=E4=BD=86=E5=AE=9E=E4=BE=8B=E6=9F=A5?= =?UTF-8?q?=E4=B8=8D=E5=87=BA=E6=9D=A5=E7=9A=84=E6=83=85=E5=86=B5=20(#8371?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NacosDeserializationException.java | 6 ++-- .../nacos/api/naming/pojo/Instance.java | 17 +++++++++ .../nacos/api/naming/pojo/InstanceTest.java | 35 +++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 api/src/test/java/com/alibaba/nacos/api/naming/pojo/InstanceTest.java diff --git a/api/src/main/java/com/alibaba/nacos/api/exception/runtime/NacosDeserializationException.java b/api/src/main/java/com/alibaba/nacos/api/exception/runtime/NacosDeserializationException.java index 73c01eda832..e5c52a9bb92 100644 --- a/api/src/main/java/com/alibaba/nacos/api/exception/runtime/NacosDeserializationException.java +++ b/api/src/main/java/com/alibaba/nacos/api/exception/runtime/NacosDeserializationException.java @@ -33,6 +33,8 @@ public class NacosDeserializationException extends NacosRuntimeException { private static final String MSG_FOR_SPECIFIED_CLASS = "Nacos deserialize for class [%s] failed. "; + private static final String ERROR_MSG_FOR_SPECIFIED_CLASS = "Nacos deserialize for class [%s] failed, cause error[%s]. "; + private Class targetClass; public NacosDeserializationException() { @@ -53,12 +55,12 @@ public NacosDeserializationException(Throwable throwable) { } public NacosDeserializationException(Class targetClass, Throwable throwable) { - super(DESERIALIZE_ERROR_CODE, String.format(MSG_FOR_SPECIFIED_CLASS, targetClass.getName()), throwable); + super(DESERIALIZE_ERROR_CODE, String.format(ERROR_MSG_FOR_SPECIFIED_CLASS, targetClass.getName(), throwable.getMessage()), throwable); this.targetClass = targetClass; } public NacosDeserializationException(Type targetType, Throwable throwable) { - super(DESERIALIZE_ERROR_CODE, String.format(MSG_FOR_SPECIFIED_CLASS, targetType.toString()), throwable); + super(DESERIALIZE_ERROR_CODE, String.format(ERROR_MSG_FOR_SPECIFIED_CLASS, targetType.toString(), throwable.getMessage()), throwable); } public Class getTargetClass() { diff --git a/api/src/main/java/com/alibaba/nacos/api/naming/pojo/Instance.java b/api/src/main/java/com/alibaba/nacos/api/naming/pojo/Instance.java index 15a5d0d0ece..5c92b1bcf49 100644 --- a/api/src/main/java/com/alibaba/nacos/api/naming/pojo/Instance.java +++ b/api/src/main/java/com/alibaba/nacos/api/naming/pojo/Instance.java @@ -37,6 +37,8 @@ public class Instance implements Serializable { private static final long serialVersionUID = -742906310567291979L; + + private static final String CLUSTER_NAME_SYNTAX = "[0-9a-zA-Z-]+"; /** * unique id of this instance. @@ -136,6 +138,7 @@ public String getClusterName() { public void setClusterName(final String clusterName) { this.clusterName = clusterName; + checkClusterNameFormat(); } public String getServiceName() { @@ -264,5 +267,19 @@ private String getMetaDataByKeyWithDefault(final String key, final String defaul } return getMetadata().get(key); } + + /** + * validate the cluster name. + * + *

the cluster name only the arabic numerals, letters and endashes are allowed. + * + * @throws IllegalArgumentException the cluster name is null, or the cluster name is + * illegal + */ + public void checkClusterNameFormat() { + if (!StringUtils.isEmpty(clusterName) && !clusterName.matches(CLUSTER_NAME_SYNTAX)) { + throw new IllegalArgumentException("cluster name can only have these characters: 0-9a-zA-Z-, current: " + clusterName); + } + } } diff --git a/api/src/test/java/com/alibaba/nacos/api/naming/pojo/InstanceTest.java b/api/src/test/java/com/alibaba/nacos/api/naming/pojo/InstanceTest.java new file mode 100644 index 00000000000..92b7b73b1d7 --- /dev/null +++ b/api/src/test/java/com/alibaba/nacos/api/naming/pojo/InstanceTest.java @@ -0,0 +1,35 @@ +/* + * Copyright 1999-2020 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.nacos.api.naming.pojo; + +import junit.framework.TestCase; +import org.junit.Test; + +public class InstanceTest extends TestCase { + + @Test + public void testCheckClusterNameFormat() { + Instance instance = new Instance(); + instance.setClusterName("demo"); + assertEquals("demo", instance.getClusterName()); + try { + instance.setClusterName("demo,demo1,demo2"); + } catch (Exception e) { + assertEquals("cluster name can only have these characters: 0-9a-zA-Z-, current: demo,demo1,demo2", e.getMessage()); + } + } +} \ No newline at end of file From 50d7b204fffa741e23ef47b2c6c5ae9b337bc6b5 Mon Sep 17 00:00:00 2001 From: drgnchan <40224023+drgnchan@users.noreply.github.com> Date: Wed, 18 May 2022 11:20:41 +0800 Subject: [PATCH 033/133] change logging order by logging after invoking getSnapshot (#8094) --- .../alibaba/nacos/client/config/NacosConfigService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java index 68b4fd3dfb3..85e87232e8d 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java @@ -181,10 +181,12 @@ private String getConfigInner(String tenant, String dataId, String group, long t LOGGER.warn("[{}] [get-config] get from server error, dataId={}, group={}, tenant={}, msg={}", worker.getAgentName(), dataId, group, tenant, ioe.toString()); } - - LOGGER.warn("[{}] [get-config] get snapshot ok, dataId={}, group={}, tenant={}, config={}", - worker.getAgentName(), dataId, group, tenant, ContentUtils.truncateContent(content)); + content = LocalConfigInfoProcessor.getSnapshot(worker.getAgentName(), dataId, group, tenant); + if (content != null) { + LOGGER.warn("[{}] [get-config] get snapshot ok, dataId={}, group={}, tenant={}, config={}", + worker.getAgentName(), dataId, group, tenant, ContentUtils.truncateContent(content)); + } cr.setContent(content); String encryptedDataKey = LocalEncryptedDataKeyProcessor .getEncryptDataKeySnapshot(agent.getName(), dataId, group, tenant); From dbc1be8d8d88c7c897461cdbd0361b66159f66b4 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 20 May 2022 14:52:26 +0800 Subject: [PATCH 034/133] [ISSUE #8153]Fix AutoExpireCache NPE (#8162) * Fix AutoExpireCache NPE * add synchronized * restore test * add Null verification * restore variable definition * Fix NPE * Add UT * checkstyle --- .../nacos/common/cache/decorators/AutoExpireCache.java | 3 +++ .../common/cache/decorators/AutoExpireCacheTest.java | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/common/src/main/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCache.java b/common/src/main/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCache.java index c8884c87284..fd3e9a5344d 100644 --- a/common/src/main/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCache.java +++ b/common/src/main/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCache.java @@ -87,6 +87,9 @@ public int getSize() { } private boolean isExpire(CacheItemProperties itemProperties) { + if (itemProperties == null) { + return true; + } return expireNanos != -1 && (System.nanoTime() - itemProperties.getExpireNanos() > expireNanos); } diff --git a/common/src/test/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCacheTest.java b/common/src/test/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCacheTest.java index 6fc69d1bbb4..a75b70c98c1 100644 --- a/common/src/test/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCacheTest.java +++ b/common/src/test/java/com/alibaba/nacos/common/cache/decorators/AutoExpireCacheTest.java @@ -53,4 +53,12 @@ public void testExpire() throws Exception { TimeUnit.SECONDS.sleep(2); Assert.assertNull(cache.get("a")); } + + @Test + public void testGetCache() { + Cache cache = CacheBuilder.builder().expireNanos(1, TimeUnit.MINUTES).build(); + cache.put("test", "test"); + Assert.assertNotNull(cache.get("test")); + Assert.assertNull(cache.get("test2")); + } } From 74c3355b712e74e8274ac038470dc3db411b7c9e Mon Sep 17 00:00:00 2001 From: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> Date: Mon, 23 May 2022 09:53:08 +0800 Subject: [PATCH 035/133] fix spring cycle dependence JwtTokenManager (#8418) * fix spring cycle dependence JwtTokenManager * remove unuse code * check code style * update test metrhod * remove unuse code * remove NacosAuthConfig logic from jwttoken * fix testUpgradeCheckSucc test --- .../core/v2/upgrade/UpgradeJudgement.java | 1 + .../core/v2/upgrade/UpgradeJudgementTest.java | 2 + .../plugin/auth/impl/JwtTokenManager.java | 65 +++++++++++++++++-- .../plugin/auth/impl/NacosAuthConfig.java | 45 ------------- .../auth/impl/controller/UserController.java | 6 +- .../plugin/auth/impl/JwtTokenManagerTest.java | 30 +-------- .../impl/controller/UserControllerTest.java | 22 +++++-- 7 files changed, 79 insertions(+), 92 deletions(-) diff --git a/naming/src/main/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgement.java b/naming/src/main/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgement.java index 2112afa7c92..8f2d8e44ae8 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgement.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgement.java @@ -241,6 +241,7 @@ public void shutdown() { if (null != upgradeChecker) { upgradeChecker.shutdownNow(); } + NotifyCenter.deregisterSubscriber(this); } /** diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java index 2c66d49f632..89f059d5e66 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.naming.core.v2.upgrade; +import com.alibaba.nacos.common.notify.NotifyCenter; import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.core.cluster.Member; import com.alibaba.nacos.core.cluster.MemberMetaDataConstants; @@ -96,6 +97,7 @@ public void setUp() throws Exception { ApplicationUtils.injectContext(context); upgradeJudgement = new UpgradeJudgement(raftPeerSet, raftCore, versionJudgement, memberManager, serviceManager, upgradeStates, doubleWriteDelayTaskEngine); + NotifyCenter.deregisterSubscriber(upgradeJudgement); } @After diff --git a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManager.java b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManager.java index b3ed7123fd9..43308e82104 100644 --- a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManager.java +++ b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManager.java @@ -16,11 +16,14 @@ package com.alibaba.nacos.plugin.auth.impl; +import com.alibaba.nacos.auth.config.AuthConfigs; +import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import io.jsonwebtoken.io.Decoders; +import io.jsonwebtoken.io.DecodingException; import io.jsonwebtoken.security.Keys; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; @@ -28,8 +31,11 @@ import org.springframework.security.core.userdetails.User; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.List; +import java.util.Properties; /** * JWT token manager. @@ -42,8 +48,38 @@ public class JwtTokenManager { private static final String AUTHORITIES_KEY = "auth"; - @Autowired - private NacosAuthConfig nacosAuthConfig; + private final AuthConfigs authConfigs; + + /** + * secret key. + */ + private String secretKey; + + /** + * secret key byte array. + */ + private byte[] secretKeyBytes; + + /** + * Token validity time(seconds). + */ + private long tokenValidityInSeconds; + + public JwtTokenManager(AuthConfigs authConfigs) { + this.authConfigs = authConfigs; + } + + /** + * init tokenValidityInSeconds and secretKey properties. + */ + @PostConstruct + public void initProperties() { + Properties properties = authConfigs.getAuthPluginProperties(AuthConstants.AUTH_PLUGIN_TYPE); + String validitySeconds = properties + .getProperty(AuthConstants.TOKEN_EXPIRE_SECONDS, AuthConstants.DEFAULT_TOKEN_EXPIRE_SECONDS); + tokenValidityInSeconds = Long.parseLong(validitySeconds); + secretKey = properties.getProperty(AuthConstants.TOKEN_SECRET_KEY, AuthConstants.DEFAULT_TOKEN_SECRET_KEY); + } /** * Create token. @@ -67,11 +103,11 @@ public String createToken(String userName) { Date validity; - validity = new Date(now + nacosAuthConfig.getTokenValidityInSeconds() * 1000L); + validity = new Date(now + this.getTokenValidityInSeconds() * 1000L); Claims claims = Jwts.claims().setSubject(userName); return Jwts.builder().setClaims(claims).setExpiration(validity) - .signWith(Keys.hmacShaKeyFor(nacosAuthConfig.getSecretKeyBytes()), SignatureAlgorithm.HS256).compact(); + .signWith(Keys.hmacShaKeyFor(this.getSecretKeyBytes()), SignatureAlgorithm.HS256).compact(); } /** @@ -81,7 +117,7 @@ public String createToken(String userName) { * @return auth info */ public Authentication getAuthentication(String token) { - Claims claims = Jwts.parserBuilder().setSigningKey(nacosAuthConfig.getSecretKeyBytes()).build() + Claims claims = Jwts.parserBuilder().setSigningKey(this.getSecretKeyBytes()).build() .parseClaimsJws(token).getBody(); List authorities = AuthorityUtils @@ -97,7 +133,22 @@ public Authentication getAuthentication(String token) { * @param token token */ public void validateToken(String token) { - Jwts.parserBuilder().setSigningKey(nacosAuthConfig.getSecretKeyBytes()).build().parseClaimsJws(token); + Jwts.parserBuilder().setSigningKey(this.getSecretKeyBytes()).build().parseClaimsJws(token); + } + + public byte[] getSecretKeyBytes() { + if (secretKeyBytes == null) { + try { + secretKeyBytes = Decoders.BASE64.decode(secretKey); + } catch (DecodingException e) { + secretKeyBytes = secretKey.getBytes(StandardCharsets.UTF_8); + } + + } + return secretKeyBytes; } + public long getTokenValidityInSeconds() { + return tokenValidityInSeconds; + } } diff --git a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/NacosAuthConfig.java b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/NacosAuthConfig.java index d314e7a943a..d7dfff2ea0e 100644 --- a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/NacosAuthConfig.java +++ b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/NacosAuthConfig.java @@ -19,12 +19,9 @@ import com.alibaba.nacos.auth.config.AuthConfigs; import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.core.code.ControllerMethodsCache; -import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants; import com.alibaba.nacos.plugin.auth.impl.constant.AuthSystemTypes; import com.alibaba.nacos.plugin.auth.impl.filter.JwtAuthenticationTokenFilter; import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetailsServiceImpl; -import io.jsonwebtoken.io.Decoders; -import io.jsonwebtoken.io.DecodingException; import org.springframework.beans.factory.ObjectProvider; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; @@ -42,8 +39,6 @@ import org.springframework.web.cors.CorsUtils; import javax.annotation.PostConstruct; -import java.nio.charset.StandardCharsets; -import java.util.Properties; /** * Spring security config. @@ -75,21 +70,6 @@ public class NacosAuthConfig extends WebSecurityConfigurerAdapter { private final ControllerMethodsCache methodsCache; - /** - * secret key. - */ - private String secretKey; - - /** - * secret key byte array. - */ - private byte[] secretKeyBytes; - - /** - * Token validity time(seconds). - */ - private long tokenValidityInSeconds; - public NacosAuthConfig(Environment env, JwtTokenManager tokenProvider, AuthConfigs authConfigs, NacosUserDetailsServiceImpl userDetailsService, ObjectProvider ldapAuthenticationProvider, @@ -110,15 +90,6 @@ public NacosAuthConfig(Environment env, JwtTokenManager tokenProvider, AuthConfi @PostConstruct public void init() { methodsCache.initClassMethod("com.alibaba.nacos.plugin.auth.impl.controller"); - initProperties(); - } - - private void initProperties() { - Properties properties = authConfigs.getAuthPluginProperties(AuthConstants.AUTH_PLUGIN_TYPE); - String validitySeconds = properties - .getProperty(AuthConstants.TOKEN_EXPIRE_SECONDS, AuthConstants.DEFAULT_TOKEN_EXPIRE_SECONDS); - tokenValidityInSeconds = Long.parseLong(validitySeconds); - secretKey = properties.getProperty(AuthConstants.TOKEN_SECRET_KEY, AuthConstants.DEFAULT_TOKEN_SECRET_KEY); } @Bean(name = BeanIds.AUTHENTICATION_MANAGER) @@ -177,20 +148,4 @@ protected void configure(HttpSecurity http) throws Exception { public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } - - public byte[] getSecretKeyBytes() { - if (secretKeyBytes == null) { - try { - secretKeyBytes = Decoders.BASE64.decode(secretKey); - } catch (DecodingException e) { - secretKeyBytes = secretKey.getBytes(StandardCharsets.UTF_8); - } - - } - return secretKeyBytes; - } - - public long getTokenValidityInSeconds() { - return tokenValidityInSeconds; - } } diff --git a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/controller/UserController.java b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/controller/UserController.java index 38dc9e9c5d6..44691848b4b 100644 --- a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/controller/UserController.java +++ b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/controller/UserController.java @@ -25,7 +25,6 @@ import com.alibaba.nacos.plugin.auth.constant.ActionTypes; import com.alibaba.nacos.plugin.auth.exception.AccessException; import com.alibaba.nacos.plugin.auth.impl.JwtTokenManager; -import com.alibaba.nacos.plugin.auth.impl.NacosAuthConfig; import com.alibaba.nacos.plugin.auth.impl.NacosAuthManager; import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants; import com.alibaba.nacos.plugin.auth.impl.constant.AuthSystemTypes; @@ -83,9 +82,6 @@ public class UserController { @Autowired private AuthConfigs authConfigs; - @Autowired - private NacosAuthConfig nacosAuthConfig; - @Autowired private NacosAuthManager authManager; @@ -218,7 +214,7 @@ public Object login(@RequestParam String username, @RequestParam String password ObjectNode result = JacksonUtils.createEmptyJsonNode(); result.put(Constants.ACCESS_TOKEN, user.getToken()); - result.put(Constants.TOKEN_TTL, nacosAuthConfig.getTokenValidityInSeconds()); + result.put(Constants.TOKEN_TTL, jwtTokenManager.getTokenValidityInSeconds()); result.put(Constants.GLOBAL_ADMIN, user.isGlobalAdmin()); result.put(Constants.USERNAME, user.getUserName()); return result; diff --git a/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManagerTest.java b/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManagerTest.java index 872e81d1a7d..506e1e4c9b3 100644 --- a/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManagerTest.java +++ b/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/JwtTokenManagerTest.java @@ -17,16 +17,12 @@ package com.alibaba.nacos.plugin.auth.impl; import com.alibaba.nacos.auth.config.AuthConfigs; -import com.alibaba.nacos.core.code.ControllerMethodsCache; import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants; import io.jsonwebtoken.lang.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.beans.factory.ObjectProvider; - -import java.lang.reflect.Field; import java.util.Properties; import static org.mockito.Mockito.when; @@ -37,18 +33,9 @@ public class JwtTokenManagerTest { @Mock private AuthConfigs authConfigs; - @Mock - private ControllerMethodsCache methodsCache; - - @Mock - private ObjectProvider ldapAuthenticationProvider; - - private NacosAuthConfig nacosAuthConfig; - @Test public void testCreateTokenAndSecretKeyWithoutSpecialSymbol() throws NoSuchFieldException, IllegalAccessException { createToken("SecretKey0123$567890$234567890123456789012345678901234567890123456789"); - } @Test @@ -61,23 +48,10 @@ private void createToken(String secretKey) throws NoSuchFieldException, IllegalA properties.setProperty(AuthConstants.TOKEN_SECRET_KEY, secretKey); properties.setProperty(AuthConstants.TOKEN_EXPIRE_SECONDS, "300"); when(authConfigs.getAuthPluginProperties(AuthConstants.AUTH_PLUGIN_TYPE)).thenReturn(properties); - - nacosAuthConfig = new NacosAuthConfig(null, null, authConfigs, null, - ldapAuthenticationProvider, methodsCache); - nacosAuthConfig.init(); - JwtTokenManager jwtTokenManager = new JwtTokenManager(); - injectProperty(jwtTokenManager, "nacosAuthConfig", nacosAuthConfig); + JwtTokenManager jwtTokenManager = new JwtTokenManager(authConfigs); + jwtTokenManager.initProperties(); String nacosToken = jwtTokenManager.createToken("nacos"); Assert.notNull(nacosToken); jwtTokenManager.validateToken(nacosToken); } - - private void injectProperty(Object o, String propertyName, Object value) - throws NoSuchFieldException, IllegalAccessException { - Class aClass = o.getClass(); - Field declaredField = aClass.getDeclaredField(propertyName); - declaredField.setAccessible(true); - declaredField.set(o, value); - } - } diff --git a/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/controller/UserControllerTest.java b/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/controller/UserControllerTest.java index 209f77bf37d..be791b3610f 100644 --- a/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/controller/UserControllerTest.java +++ b/plugin-default-impl/src/test/java/com/alibaba/nacos/plugin/auth/impl/controller/UserControllerTest.java @@ -18,8 +18,9 @@ import com.alibaba.nacos.auth.config.AuthConfigs; import com.alibaba.nacos.plugin.auth.exception.AccessException; -import com.alibaba.nacos.plugin.auth.impl.NacosAuthConfig; +import com.alibaba.nacos.plugin.auth.impl.JwtTokenManager; import com.alibaba.nacos.plugin.auth.impl.NacosAuthManager; +import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants; import com.alibaba.nacos.plugin.auth.impl.constant.AuthSystemTypes; import com.alibaba.nacos.plugin.auth.impl.users.NacosUser; import com.fasterxml.jackson.databind.JsonNode; @@ -32,6 +33,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Field; +import java.util.Properties; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertThat; @@ -41,6 +43,9 @@ @RunWith(MockitoJUnitRunner.class) public class UserControllerTest { + @Mock(lenient = true) + JwtTokenManager jwtTokenManager; + @Mock private HttpServletRequest request; @@ -50,9 +55,6 @@ public class UserControllerTest { @Mock private AuthConfigs authConfigs; - @Mock - private NacosAuthConfig nacosAuthConfig; - @Mock private NacosAuthManager authManager; @@ -69,19 +71,25 @@ public void setUp() throws Exception { user.setToken("1234567890"); injectObject("authConfigs", authConfigs); injectObject("authManager", authManager); - injectObject("nacosAuthConfig", nacosAuthConfig); + Properties properties = new Properties(); + properties.setProperty(AuthConstants.TOKEN_SECRET_KEY, "SecretKey012345678901234567890123456789012345678901234567890123456789"); + properties.setProperty(AuthConstants.TOKEN_EXPIRE_SECONDS, "300"); + when(authConfigs.getAuthPluginProperties(AuthConstants.AUTH_PLUGIN_TYPE)).thenReturn(properties); + JwtTokenManager jwtTokenManager = new JwtTokenManager(authConfigs); + jwtTokenManager.initProperties(); + injectObject("jwtTokenManager", jwtTokenManager); } @Test public void testLoginWithAuthedUser() throws AccessException { when(authManager.login(request)).thenReturn(user); when(authConfigs.getNacosAuthSystemType()).thenReturn(AuthSystemTypes.NACOS.name()); - when(nacosAuthConfig.getTokenValidityInSeconds()).thenReturn(18000L); + when(jwtTokenManager.getTokenValidityInSeconds()).thenReturn(18000L); Object actual = userController.login("nacos", "nacos", response, request); assertThat(actual, instanceOf(JsonNode.class)); String actualString = actual.toString(); assertTrue(actualString.contains("\"accessToken\":\"1234567890\"")); - assertTrue(actualString.contains("\"tokenTtl\":18000")); + assertTrue(actualString.contains("\"tokenTtl\":300")); assertTrue(actualString.contains("\"globalAdmin\":true")); } From 58968f98e25b01145165612318fe4fabd499565b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BF=8A=20SionYang?= Date: Mon, 23 May 2022 11:07:02 +0800 Subject: [PATCH 036/133] [ISSUE#8405] Fix istio module cycle dependency problem. (#8440) * Get ResourceManager when runtime to resolve cycle dependence temp. * Fix Ut problem. * Rollback changes for ClusterControllerTest * Fix UT problem. --- .../alibaba/nacos/istio/common/EventProcessor.java | 14 ++++++++++++-- .../core/v2/upgrade/UpgradeJudgementTest.java | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/istio/src/main/java/com/alibaba/nacos/istio/common/EventProcessor.java b/istio/src/main/java/com/alibaba/nacos/istio/common/EventProcessor.java index 25921eabf5b..d3f0b3cf7b6 100644 --- a/istio/src/main/java/com/alibaba/nacos/istio/common/EventProcessor.java +++ b/istio/src/main/java/com/alibaba/nacos/istio/common/EventProcessor.java @@ -20,6 +20,7 @@ import com.alibaba.nacos.istio.misc.Loggers; import com.alibaba.nacos.istio.util.IstioExecutor; import com.alibaba.nacos.istio.xds.NacosXdsService; +import com.alibaba.nacos.sys.utils.ApplicationUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -31,6 +32,8 @@ import java.util.concurrent.TimeUnit; /** + * EventProcessor. + * * @author special.fy */ @Component @@ -44,7 +47,6 @@ public class EventProcessor { @Autowired private NacosXdsService nacosXdsService; - @Autowired private NacosResourceManager resourceManager; private final BlockingQueue events; @@ -52,7 +54,12 @@ public class EventProcessor { public EventProcessor() { events = new ArrayBlockingQueue<>(20); } - + + /** + * notify. + * + * @param event event + */ public void notify(Event event) { try { events.put(event); @@ -121,6 +128,9 @@ private class EventHandleTask implements Callable { @Override public Void call() throws Exception { + if (null == resourceManager) { + resourceManager = ApplicationUtils.getBean(NacosResourceManager.class); + } ResourceSnapshot snapshot = resourceManager.createResourceSnapshot(); nacosXdsService.handleEvent(snapshot, event); nacosMcpService.handleEvent(snapshot, event); diff --git a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java index 89f059d5e66..f92d49d8398 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/core/v2/upgrade/UpgradeJudgementTest.java @@ -28,6 +28,7 @@ import com.alibaba.nacos.naming.core.ServiceManager; import com.alibaba.nacos.naming.core.v2.index.ServiceStorage; import com.alibaba.nacos.naming.core.v2.upgrade.doublewrite.delay.DoubleWriteDelayTaskEngine; +import com.alibaba.nacos.naming.monitor.MetricsMonitor; import com.alibaba.nacos.sys.env.Constants; import com.alibaba.nacos.sys.env.EnvUtil; import com.alibaba.nacos.sys.utils.ApplicationUtils; @@ -98,6 +99,8 @@ public void setUp() throws Exception { upgradeJudgement = new UpgradeJudgement(raftPeerSet, raftCore, versionJudgement, memberManager, serviceManager, upgradeStates, doubleWriteDelayTaskEngine); NotifyCenter.deregisterSubscriber(upgradeJudgement); + MetricsMonitor.getIpCountMonitor().set(0); + MetricsMonitor.getDomCountMonitor().set(0); } @After From 84644e07f371bf32e68c948ad0aa723f64024942 Mon Sep 17 00:00:00 2001 From: liqipeng Date: Mon, 23 May 2022 15:03:40 +0800 Subject: [PATCH 037/133] remove `commonOkHttp` dependency to solve okHttp3 compatibility after upgrade spring-boot to 2.6.6 (#8422) --- pom.xml | 8 - .../ConfigExportAndImportAPI_CITCase.java | 375 +++++++++++------- test/pom.xml | 11 +- 3 files changed, 242 insertions(+), 152 deletions(-) diff --git a/pom.xml b/pom.xml index 25d2245de11..ded32761a23 100644 --- a/pom.xml +++ b/pom.xml @@ -150,7 +150,6 @@ 2.0.0-RC1 30.1-jre 1.2 - 0.4.1 1.26.0 1.17.0 3.16.1 @@ -950,13 +949,6 @@ ${javatuples.version} - - com.github.keran213539 - commonOkHttp - ${commonOkHttp.version} - test - - io.grpc diff --git a/test/config-test/src/test/java/com/alibaba/nacos/test/config/ConfigExportAndImportAPI_CITCase.java b/test/config-test/src/test/java/com/alibaba/nacos/test/config/ConfigExportAndImportAPI_CITCase.java index f0a6749da49..6db145e91fd 100644 --- a/test/config-test/src/test/java/com/alibaba/nacos/test/config/ConfigExportAndImportAPI_CITCase.java +++ b/test/config-test/src/test/java/com/alibaba/nacos/test/config/ConfigExportAndImportAPI_CITCase.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package com.alibaba.nacos.test.config; import com.alibaba.nacos.Nacos; @@ -20,7 +21,13 @@ import com.alibaba.nacos.client.config.http.HttpAgent; import com.alibaba.nacos.client.config.http.MetricsHttpAgent; import com.alibaba.nacos.client.config.http.ServerHttpAgent; +import com.alibaba.nacos.client.config.impl.ConfigHttpClientManager; import com.alibaba.nacos.common.http.HttpRestResult; +import com.alibaba.nacos.common.http.client.NacosRestTemplate; +import com.alibaba.nacos.common.http.client.handler.AbstractResponseHandler; +import com.alibaba.nacos.common.http.client.response.HttpClientResponse; +import com.alibaba.nacos.common.http.param.Header; +import com.alibaba.nacos.common.http.param.Query; import com.alibaba.nacos.common.utils.JacksonUtils; import com.alibaba.nacos.config.server.constant.Constants; import com.alibaba.nacos.config.server.model.ConfigMetadata; @@ -29,9 +36,18 @@ import com.alibaba.nacos.config.server.utils.ZipUtils; import com.alibaba.nacos.test.base.ConfigCleanUtils; import com.fasterxml.jackson.databind.JsonNode; -import com.github.keran213539.commonOkHttp.CommonOkHttpClient; -import com.github.keran213539.commonOkHttp.CommonOkHttpClientBuilder; -import com.github.keran213539.commonOkHttp.UploadByteFile; +import org.apache.commons.collections.MapUtils; +import org.apache.commons.io.IOUtils; +import org.apache.http.HttpEntity; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.entity.mime.content.ByteArrayBody; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -43,75 +59,91 @@ import org.springframework.boot.web.server.LocalServerPort; import org.springframework.test.context.junit4.SpringRunner; +import java.io.IOException; +import java.lang.reflect.Type; import java.net.HttpURLConnection; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; /** + * CITCase for ConfigExportAndImportAPI. + * * @author klw * @date 2019/5/23 15:26 */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = Nacos.class, properties = {"server.servlet.context-path=/nacos"}, - webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +@SpringBootTest(classes = Nacos.class, properties = { + "server.servlet.context-path=/nacos"}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +@SuppressWarnings({"checkstyle:TypeName", "checkstyle:AbbreviationAsWordInName"}) public class ConfigExportAndImportAPI_CITCase { - + private static final long TIME_OUT = 2000; + private static final String CONFIG_CONTROLLER_PATH = "/v1/cs/configs"; - - private CommonOkHttpClient httpClient = new CommonOkHttpClientBuilder().build(); - + @LocalServerPort private int port; - - private String SERVER_ADDR = null; - + + private String serverAddr = null; + private HttpAgent agent = null; + private NacosRestTemplate nacosRestTemplate; + @BeforeClass @AfterClass public static void cleanClientCache() throws Exception { ConfigCleanUtils.cleanClientCache(); ConfigCleanUtils.changeToNewTestNacosHome(ConfigExportAndImportAPI_CITCase.class.getSimpleName()); } - + @Before public void setUp() throws Exception { - SERVER_ADDR = "http://127.0.0.1"+":"+ port + "/nacos"; - + nacosRestTemplate = ConfigHttpClientManager.getInstance().getNacosRestTemplate(); + // register a handler to process byte[] result + nacosRestTemplate.registerResponseHandler(byte[].class.getName(), new AbstractResponseHandler() { + @Override + public HttpRestResult convertResult(HttpClientResponse response, Type responseType) + throws Exception { + return new HttpRestResult(response.getHeaders(), response.getStatusCode(), + IOUtils.toByteArray(response.getBody()), null); + } + }); + + serverAddr = "http://127.0.0.1" + ":" + port + "/nacos"; + Properties properties = new Properties(); - properties.put(PropertyKeyConst.SERVER_ADDR, "127.0.0.1"+":"+port); + properties.put(PropertyKeyConst.SERVER_ADDR, "127.0.0.1" + ":" + port); agent = new MetricsHttpAgent(new ServerHttpAgent(properties)); agent.start(); - + Map prarm = new HashMap<>(7); prarm.put("dataId", "testNoAppname1.yml"); prarm.put("group", "EXPORT_IMPORT_TEST_GROUP"); prarm.put("content", "test: test"); prarm.put("desc", "testNoAppname1"); prarm.put("type", "yaml"); - Assert.assertEquals("true", httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH , prarm,null)); + Assert.assertEquals("true", httpPost(serverAddr + CONFIG_CONTROLLER_PATH, prarm)); prarm.put("dataId", "testNoAppname2.txt"); prarm.put("group", "TEST1_GROUP"); prarm.put("content", "test: test"); prarm.put("desc", "testNoAppname2"); prarm.put("type", "text"); - Assert.assertEquals("true", httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH , prarm,null)); + Assert.assertEquals("true", httpPost(serverAddr + CONFIG_CONTROLLER_PATH, prarm)); prarm.put("dataId", "testHasAppname1.properties"); prarm.put("group", "EXPORT_IMPORT_TEST_GROUP"); prarm.put("content", "test.test1.value=test"); prarm.put("desc", "testHasAppname1"); prarm.put("type", "properties"); prarm.put("appName", "testApp1"); - Assert.assertEquals("true", httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH , prarm,null)); + Assert.assertEquals("true", httpPost(serverAddr + CONFIG_CONTROLLER_PATH, prarm)); } - + @After - public void cleanup() throws Exception{ + public void cleanup() throws Exception { HttpRestResult result; try { Map params = new HashMap<>(); @@ -120,7 +152,7 @@ public void cleanup() throws Exception{ params.put("beta", "false"); result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT); Assert.assertEquals(HttpURLConnection.HTTP_OK, result.getCode()); - + params.put("dataId", "testNoAppname2.txt"); params.put("group", "TEST1_GROUP"); params.put("beta", "false"); @@ -132,37 +164,37 @@ public void cleanup() throws Exception{ params.put("beta", "false"); result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT); Assert.assertEquals(HttpURLConnection.HTTP_OK, result.getCode()); - + params.put("dataId", "test1.yml"); params.put("group", "TEST_IMPORT"); params.put("beta", "false"); result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT); Assert.assertEquals(HttpURLConnection.HTTP_OK, result.getCode()); - + params.put("dataId", "test2.txt"); params.put("group", "TEST_IMPORT"); params.put("beta", "false"); result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT); Assert.assertEquals(HttpURLConnection.HTTP_OK, result.getCode()); - + params.put("dataId", "test3.properties"); params.put("group", "TEST_IMPORT"); params.put("beta", "false"); result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT); Assert.assertEquals(HttpURLConnection.HTTP_OK, result.getCode()); - + params.put("dataId", "test1"); params.put("group", "TEST_IMPORT2"); params.put("beta", "false"); result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT); Assert.assertEquals(HttpURLConnection.HTTP_OK, result.getCode()); - + params.put("dataId", "test3"); params.put("group", "TEST_IMPORT2"); params.put("beta", "false"); result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT); Assert.assertEquals(HttpURLConnection.HTTP_OK, result.getCode()); - + params.put("dataId", "test4"); params.put("group", "TEST_IMPORT2"); params.put("beta", "false"); @@ -173,11 +205,11 @@ public void cleanup() throws Exception{ } agent.shutdown(); } - + @Test() - public void testExportByIds(){ + public void testExportByIds() { String getDataUrl = "?search=accurate&dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=10&tenant=&namespaceId="; - String queryResult = httpClient.get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + getDataUrl, null); + String queryResult = httpGetString(serverAddr + CONFIG_CONTROLLER_PATH + getDataUrl, null); JsonNode resultObj = JacksonUtils.toObj(queryResult); JsonNode resultConfigs = resultObj.get("pageItems"); JsonNode config1 = resultConfigs.get(0); @@ -186,39 +218,38 @@ public void testExportByIds(){ String id2 = config2.get("id").asText(); String exportByIdsUrl = "?export=true&tenant=&group=&appName=&ids=" + id1 + "," + id2; System.out.println(exportByIdsUrl); - byte[] zipData = httpClient.download(SERVER_ADDR + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); + byte[] zipData = httpGetBytes(serverAddr + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); ZipUtils.UnZipResult unZiped = ZipUtils.unzip(zipData); List zipItemList = unZiped.getZipItemList(); Assert.assertEquals(2, zipItemList.size()); String config1Name = config1.get("group").textValue() + "/" + config1.get("dataId").textValue(); String config2Name = config2.get("group").textValue() + "/" + config2.get("dataId").textValue(); - for(ZipUtils.ZipItem zipItem : zipItemList){ - if(!(config1Name.equals(zipItem.getItemName()) || config2Name.equals(zipItem.getItemName()))){ + for (ZipUtils.ZipItem zipItem : zipItemList) { + if (!(config1Name.equals(zipItem.getItemName()) || config2Name.equals(zipItem.getItemName()))) { Assert.fail(); } } } - - @Test(timeout = 3*TIME_OUT) - public void testExportByGroup(){ + + @Test(timeout = 3 * TIME_OUT) + public void testExportByGroup() { String getDataUrl = "?search=accurate&dataId=&group=EXPORT_IMPORT_TEST_GROUP&appName=&config_tags=&pageNo=1&pageSize=10&tenant=&namespaceId="; - String queryResult = httpClient.get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + getDataUrl, null); + String queryResult = httpGetString(serverAddr + CONFIG_CONTROLLER_PATH + getDataUrl, null); JsonNode resultObj = JacksonUtils.toObj(queryResult); JsonNode resultConfigs = resultObj.get("pageItems"); Assert.assertEquals(2, resultConfigs.size()); JsonNode config1 = resultConfigs.get(0); JsonNode config2 = resultConfigs.get(1); String exportByIdsUrl = "?export=true&tenant=&group=EXPORT_IMPORT_TEST_GROUP&appName=&ids="; - byte[] zipData = httpClient.download(SERVER_ADDR + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); + byte[] zipData = httpGetBytes(serverAddr + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); ZipUtils.UnZipResult unZiped = ZipUtils.unzip(zipData); List zipItemList = unZiped.getZipItemList(); Assert.assertEquals(2, zipItemList.size()); String config1Name = config1.get("group").textValue() + "/" + config1.get("dataId").textValue(); String config2Name = config2.get("group").textValue() + "/" + config2.get("dataId").textValue(); - - for(ZipUtils.ZipItem zipItem : zipItemList){ - if(!(config1Name.equals(zipItem.getItemName()) - || config2Name.equals(zipItem.getItemName()))){ + + for (ZipUtils.ZipItem zipItem : zipItemList) { + if (!(config1Name.equals(zipItem.getItemName()) || config2Name.equals(zipItem.getItemName()))) { Assert.fail(); } } @@ -229,23 +260,24 @@ public void testExportByGroup(){ Assert.assertNotNull(appName); Assert.assertEquals("testApp1", appName); } - - @Test(timeout = 3*TIME_OUT) - public void testExportByGroupAndApp(){ - String getDataUrl = "?search=accurate&dataId=&group=EXPORT_IMPORT_TEST_GROUP&appName=testApp1&config_tags=&pageNo=1&pageSize=10&tenant=&namespaceId="; - String queryResult = httpClient.get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + getDataUrl, null); + + @Test(timeout = 3 * TIME_OUT) + public void testExportByGroupAndApp() { + String getDataUrl = "?search=accurate&dataId=&group=EXPORT_IMPORT_TEST_GROUP&appName=testApp1&config_tags=" + + "&pageNo=1&pageSize=10&tenant=&namespaceId="; + String queryResult = httpGetString(serverAddr + CONFIG_CONTROLLER_PATH + getDataUrl, null); JsonNode resultObj = JacksonUtils.toObj(queryResult); JsonNode resultConfigs = resultObj.get("pageItems"); Assert.assertEquals(1, resultConfigs.size()); JsonNode config1 = resultConfigs.get(0); String exportByIdsUrl = "?export=true&tenant=&group=EXPORT_IMPORT_TEST_GROUP&appName=testApp1&ids="; - byte[] zipData = httpClient.download(SERVER_ADDR + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); + byte[] zipData = httpGetBytes(serverAddr + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); ZipUtils.UnZipResult unZiped = ZipUtils.unzip(zipData); List zipItemList = unZiped.getZipItemList(); Assert.assertEquals(1, zipItemList.size()); String config1Name = config1.get("group").textValue() + "/" + config1.get("dataId").textValue(); - for(ZipUtils.ZipItem zipItem : zipItemList){ - if(!config1Name.equals(zipItem.getItemName())){ + for (ZipUtils.ZipItem zipItem : zipItemList) { + if (!config1Name.equals(zipItem.getItemName())) { Assert.fail(); } } @@ -256,20 +288,20 @@ public void testExportByGroupAndApp(){ Assert.assertNotNull(appName); Assert.assertEquals("testApp1", appName); } - - @Test(timeout = 3*TIME_OUT) - public void testExportAll(){ + + @Test(timeout = 3 * TIME_OUT) + public void testExportAll() { String exportByIdsUrl = "?export=true&tenant=&group=&appName=&ids="; - byte[] zipData = httpClient.download(SERVER_ADDR + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); + byte[] zipData = httpGetBytes(serverAddr + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); ZipUtils.UnZipResult unZiped = ZipUtils.unzip(zipData); List zipItemList = unZiped.getZipItemList(); String config1Name = "EXPORT_IMPORT_TEST_GROUP/testNoAppname1.yml"; String config2Name = "TEST1_GROUP/testNoAppname2.txt"; String config3Name = "EXPORT_IMPORT_TEST_GROUP/testHasAppname1.properties"; int successCount = 0; - for(ZipUtils.ZipItem zipItem : zipItemList){ - if(config1Name.equals(zipItem.getItemName()) || config2Name.equals(zipItem.getItemName()) || - config3Name.equals(zipItem.getItemName())){ + for (ZipUtils.ZipItem zipItem : zipItemList) { + if (config1Name.equals(zipItem.getItemName()) || config2Name.equals(zipItem.getItemName()) + || config3Name.equals(zipItem.getItemName())) { successCount++; } } @@ -281,45 +313,43 @@ public void testExportAll(){ Assert.assertNotNull(appName); Assert.assertEquals("testApp1", appName); } - - @Test(timeout = 3*TIME_OUT) - public void testImport(){ + + @Test(timeout = 3 * TIME_OUT) + public void testImport() { List zipItemList = new ArrayList<>(3); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT/test1.yml", "test: test1")); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT/test2.txt", "test: test1")); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT/test3.properties", "test.test1.value=test")); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT_2/test4.properties", "test.test4.value=test")); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT/SUB_GROUP/test5.properties", "test.test5.value=test")); - String metaDataStr = "TEST_IMPORT.test1~yml.app=testApp1\rTEST_IMPORT.test2~txt.app=testApp2\r\nTEST_IMPORT.test3~properties.app=testApp3\nTEST_IMPORT_2.test4~properties.app=testApp4"; + String metaDataStr = "TEST_IMPORT.test1~yml.app=testApp1\rTEST_IMPORT.test2~txt.app=testApp2\r\n" + + "TEST_IMPORT.test3~properties.app=testApp3\nTEST_IMPORT_2.test4~properties.app=testApp4"; zipItemList.add(new ZipUtils.ZipItem(".meta.yml", metaDataStr)); - String importUrl = "?import=true&namespace="; + final String importUrl = "?import=true&namespace="; Map importPrarm = new HashMap<>(1); importPrarm.put("policy", "OVERWRITE"); - UploadByteFile uploadByteFile = new UploadByteFile(); - uploadByteFile.setFileName("testImport.zip"); - uploadByteFile.setFileBytes(ZipUtils.zip(zipItemList)); - uploadByteFile.setMediaType("application/zip"); - uploadByteFile.setPrarmName("file"); - String importResult = httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, Collections.singletonList(uploadByteFile), null); - + String importResult = uploadZipFile(serverAddr + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, + "testImport.zip", ZipUtils.zip(zipItemList)); + System.out.println("importResult: " + importResult); + // test unrecognizedData JsonNode importResObj = JacksonUtils.toObj(importResult); int unrecognizedCount = importResObj.get("data").get("unrecognizedCount").intValue(); Assert.assertEquals(1, unrecognizedCount); JsonNode unrecognizedData = importResObj.get("data").get("unrecognizedData").get(0); Assert.assertEquals("TEST_IMPORT/SUB_GROUP/test5.properties", unrecognizedData.get("itemName").textValue()); - + String getDataUrl = "?search=accurate&dataId=&group=TEST_IMPORT&appName=&config_tags=&pageNo=1&pageSize=10&tenant=&namespaceId="; - String queryResult = httpClient.get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + getDataUrl, null); + String queryResult = httpGetString(serverAddr + CONFIG_CONTROLLER_PATH + getDataUrl, null); JsonNode resultObj = JacksonUtils.toObj(queryResult); JsonNode resultConfigs = resultObj.get("pageItems"); Assert.assertEquals(3, resultConfigs.size()); - for(int i = 0; i < resultConfigs.size(); i++){ + for (int i = 0; i < resultConfigs.size(); i++) { JsonNode config = resultConfigs.get(i); - if(!"TEST_IMPORT".equals(config.get("group").textValue())){ + if (!"TEST_IMPORT".equals(config.get("group").textValue())) { Assert.fail(); } - switch (config.get("dataId").textValue()){ + switch (config.get("dataId").textValue()) { case "test1.yml": Assert.assertEquals(config.get("appName").textValue(), "testApp1"); break; @@ -333,22 +363,22 @@ public void testImport(){ Assert.fail(); } } - + getDataUrl = "?search=accurate&dataId=&group=TEST_IMPORT_2&appName=&config_tags=&pageNo=1&pageSize=10&tenant=&namespaceId="; - queryResult = httpClient.get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + getDataUrl, null); + queryResult = httpGetString(serverAddr + CONFIG_CONTROLLER_PATH + getDataUrl, null); resultObj = JacksonUtils.toObj(queryResult); resultConfigs = resultObj.get("pageItems"); Assert.assertEquals(1, resultConfigs.size()); JsonNode jsonNode = resultConfigs.get(0); Assert.assertEquals(jsonNode.get("appName").textValue(), "testApp4"); } - - private Map processMetaData(ZipUtils.ZipItem metaDataZipItem){ + + private Map processMetaData(ZipUtils.ZipItem metaDataZipItem) { Map metaDataMap = new HashMap<>(16); - if(metaDataZipItem != null){ + if (metaDataZipItem != null) { String metaDataStr = metaDataZipItem.getItemData(); String[] metaDataArr = metaDataStr.split("\r\n"); - for(String metaDataItem : metaDataArr){ + for (String metaDataItem : metaDataArr) { String[] metaDataItemArr = metaDataItem.split("="); Assert.assertEquals(2, metaDataItemArr.length); metaDataMap.put(metaDataItemArr[0], metaDataItemArr[1]); @@ -356,12 +386,12 @@ private Map processMetaData(ZipUtils.ZipItem metaDataZipItem){ } return metaDataMap; } - - private String packageMetaName(String group, String dataId){ + + private String packageMetaName(String group, String dataId) { String tempDataId = dataId; - if(tempDataId.contains(".")){ - tempDataId = tempDataId.substring(0, tempDataId.lastIndexOf(".")) - + "~" + tempDataId.substring(tempDataId.lastIndexOf(".") + 1); + if (tempDataId.contains(".")) { + tempDataId = tempDataId.substring(0, tempDataId.lastIndexOf(".")) + "~" + tempDataId.substring( + tempDataId.lastIndexOf(".") + 1); } return group + "." + tempDataId + ".app"; } @@ -370,14 +400,14 @@ private String packageMetaName(String group, String dataId){ public void testExportV2() { String dataId = "testNoAppname2.txt"; String getDataUrl = - "?search=accurate&group=TEST1_GROUP&pageNo=1&pageSize=10&tenant=&namespaceId=&dataId="+dataId; - String queryResult = httpClient.get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + getDataUrl, null); + "?search=accurate&group=TEST1_GROUP&pageNo=1&pageSize=10&tenant=&namespaceId=&dataId=" + dataId; + String queryResult = httpGetString(serverAddr + CONFIG_CONTROLLER_PATH + getDataUrl, null); JsonNode resultObj = JacksonUtils.toObj(queryResult); JsonNode resultConfigs = resultObj.get("pageItems"); JsonNode config1 = resultConfigs.get(0); String configId = config1.get("id").asText(); String exportByIdsUrl = "?exportV2=true&tenant=&group=&appName=&ids=" + configId; - byte[] zipData = httpClient.download(SERVER_ADDR + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); + byte[] zipData = httpGetBytes(serverAddr + CONFIG_CONTROLLER_PATH + exportByIdsUrl, null); ZipUtils.UnZipResult unZiped = ZipUtils.unzip(zipData); List zipItemList = unZiped.getZipItemList(); Assert.assertEquals(1, zipItemList.size()); @@ -390,9 +420,9 @@ public void testExportV2() { } Assert.assertEquals(dataId, config1.get("dataId").asText()); String group = config1.get("group").asText(); - - String queryConfigDetailResult = httpClient - .get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + "?show=all&dataId=" + dataId + "&group=" + group, null); + + String queryConfigDetailResult = httpGetString( + serverAddr + CONFIG_CONTROLLER_PATH + "?show=all&dataId=" + dataId + "&group=" + group, null); JsonNode configDetailResult = JacksonUtils.toObj(queryConfigDetailResult); Assert.assertNotNull(configDetailResult); // verification metadata @@ -407,8 +437,10 @@ public void testExportV2() { config1Metadata.setDataId(dataId); config1Metadata.setGroup(group); config1Metadata.setType(configDetailResult.get("type").asText()); - config1Metadata.setAppName(configDetailResult.get("appName") == null ? null : configDetailResult.get("appName").asText()); - config1Metadata.setDesc(configDetailResult.get("desc") == null ? null : configDetailResult.get("desc").asText()); + config1Metadata.setAppName( + configDetailResult.get("appName") == null ? null : configDetailResult.get("appName").asText()); + config1Metadata.setDesc( + configDetailResult.get("desc") == null ? null : configDetailResult.get("desc").asText()); ConfigMetadata.ConfigExportItem configExportItem1 = configMetadata.getMetadata().get(0); Assert.assertEquals(configExportItem1, config1Metadata); @@ -418,29 +450,24 @@ public void testExportV2() { public void testImportV2() { List zipItemList = new ArrayList<>(3); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT2/test1", "test: test1")); - String metaDataStr = "metadata:\n" + "- appName: testAppName\n" + " dataId: test1\n" - + " desc: testDesc\n" + " group: TEST_IMPORT2\n" + " type: yaml"; + String metaDataStr = "metadata:\n" + "- appName: testAppName\n" + " dataId: test1\n" + " desc: testDesc\n" + + " group: TEST_IMPORT2\n" + " type: yaml"; zipItemList.add(new ZipUtils.ZipItem(Constants.CONFIG_EXPORT_METADATA_NEW, metaDataStr)); - String importUrl = "?import=true&namespace="; + final String importUrl = "?import=true&namespace="; Map importPrarm = new HashMap<>(1); importPrarm.put("policy", "OVERWRITE"); - UploadByteFile uploadByteFile = new UploadByteFile(); - uploadByteFile.setFileName("testImport.zip"); - uploadByteFile.setFileBytes(ZipUtils.zip(zipItemList)); - uploadByteFile.setMediaType("application/zip"); - uploadByteFile.setPrarmName("file"); - String importResult = httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, - Collections.singletonList(uploadByteFile), null); + String importResult = uploadZipFile(serverAddr + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, + "testImport.zip", ZipUtils.zip(zipItemList)); JsonNode importResObj = JacksonUtils.toObj(importResult); Assert.assertEquals(importResObj.get("data").get("succCount").asInt(), 1); - String queryConfigDetailResult = httpClient - .get(SERVER_ADDR + CONFIG_CONTROLLER_PATH + "?show=all&dataId=test1&group=TEST_IMPORT2", null); + String queryConfigDetailResult = httpGetString( + serverAddr + CONFIG_CONTROLLER_PATH + "?show=all&dataId=test1&group=TEST_IMPORT2", null); JsonNode configDetailResult = JacksonUtils.toObj(queryConfigDetailResult); Assert.assertNotNull(configDetailResult); - + Assert.assertEquals(configDetailResult.get("dataId").asText(), "test1"); Assert.assertEquals(configDetailResult.get("group").asText(), "TEST_IMPORT2"); Assert.assertEquals(configDetailResult.get("type").asText(), "yaml"); @@ -452,21 +479,17 @@ public void testImportV2() { public void testImportV2MetadataError() { List zipItemList = new ArrayList<>(3); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT2/test2", "test: test2")); - String metaDataStr = "metadata:\n" + "- appName: testAppName\n" + " desc: test desc\n" - + " group: TEST_IMPORT\n" + " type: yaml"; - + String metaDataStr = + "metadata:\n" + "- appName: testAppName\n" + " desc: test desc\n" + " group: TEST_IMPORT\n" + + " type: yaml"; + zipItemList.add(new ZipUtils.ZipItem(Constants.CONFIG_EXPORT_METADATA_NEW, metaDataStr)); - String importUrl = "?import=true&namespace="; + final String importUrl = "?import=true&namespace="; Map importPrarm = new HashMap<>(1); importPrarm.put("policy", "OVERWRITE"); - UploadByteFile uploadByteFile = new UploadByteFile(); - uploadByteFile.setFileName("testImport.zip"); - uploadByteFile.setFileBytes(ZipUtils.zip(zipItemList)); - uploadByteFile.setMediaType("application/zip"); - uploadByteFile.setPrarmName("file"); - String importResult = httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, - Collections.singletonList(uploadByteFile), null); - + String importResult = uploadZipFile(serverAddr + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, + "testImport.zip", ZipUtils.zip(zipItemList)); + JsonNode importResObj = JacksonUtils.toObj(importResult); Assert.assertEquals(importResObj.get("code").intValue(), ResultCodeEnum.METADATA_ILLEGAL.getCode()); Assert.assertEquals(importResObj.get("message").textValue(), ResultCodeEnum.METADATA_ILLEGAL.getCodeMsg()); @@ -478,18 +501,13 @@ public void testImportV2MetadataNotFind() { zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT2/test3.yml", "test: test3")); String metaDataStr = "metadata:\n" + "- dataId: notExist\n" + " group: TEST_IMPORT2\n" + " type: yaml\n" + "- dataId: test3.yml\n" + " group: TEST_IMPORT2\n" + " type: yaml"; - + zipItemList.add(new ZipUtils.ZipItem(Constants.CONFIG_EXPORT_METADATA_NEW, metaDataStr)); - String importUrl = "?import=true&namespace="; + final String importUrl = "?import=true&namespace="; Map importPrarm = new HashMap<>(1); importPrarm.put("policy", "OVERWRITE"); - UploadByteFile uploadByteFile = new UploadByteFile(); - uploadByteFile.setFileName("testImport.zip"); - uploadByteFile.setFileBytes(ZipUtils.zip(zipItemList)); - uploadByteFile.setMediaType("application/zip"); - uploadByteFile.setPrarmName("file"); - String importResult = httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, - Collections.singletonList(uploadByteFile), null); + String importResult = uploadZipFile(serverAddr + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, + "testImport.zip", ZipUtils.zip(zipItemList)); JsonNode importResObj = JacksonUtils.toObj(importResult); JsonNode data = importResObj.get("data"); @@ -499,7 +517,7 @@ public void testImportV2MetadataNotFind() { Assert.assertEquals(1, unrecognizedCount); JsonNode unrecognizedData = data.get("unrecognizedData").get(0); Assert.assertEquals("未在文件中找到: TEST_IMPORT2/notExist", unrecognizedData.get("itemName").textValue()); - + } @Test @@ -507,20 +525,15 @@ public void testImportV2ConfigIgnore() { List zipItemList = new ArrayList<>(3); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT2/test4", "test: test4")); zipItemList.add(new ZipUtils.ZipItem("TEST_IMPORT2/ignore.yml", "test: test4")); - String metaDataStr = "metadata:\n" + "- appName: testAppName\n" + " dataId: test4\n" - + " desc: testDesc\n" + " group: TEST_IMPORT2\n" + " type: yaml"; + String metaDataStr = "metadata:\n" + "- appName: testAppName\n" + " dataId: test4\n" + " desc: testDesc\n" + + " group: TEST_IMPORT2\n" + " type: yaml"; zipItemList.add(new ZipUtils.ZipItem(Constants.CONFIG_EXPORT_METADATA_NEW, metaDataStr)); - String importUrl = "?import=true&namespace="; + final String importUrl = "?import=true&namespace="; Map importPrarm = new HashMap<>(1); importPrarm.put("policy", "OVERWRITE"); - UploadByteFile uploadByteFile = new UploadByteFile(); - uploadByteFile.setFileName("testImport.zip"); - uploadByteFile.setFileBytes(ZipUtils.zip(zipItemList)); - uploadByteFile.setMediaType("application/zip"); - uploadByteFile.setPrarmName("file"); - String importResult = httpClient.post(SERVER_ADDR + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, - Collections.singletonList(uploadByteFile), null); + String importResult = uploadZipFile(serverAddr + CONFIG_CONTROLLER_PATH + importUrl, importPrarm, + "testImport.zip", ZipUtils.zip(zipItemList)); JsonNode importResObj = JacksonUtils.toObj(importResult); JsonNode data = importResObj.get("data"); @@ -532,4 +545,84 @@ public void testImportV2ConfigIgnore() { Assert.assertEquals("未在元数据中找到: TEST_IMPORT2/ignore.yml", unrecognizedData.get("itemName").textValue()); } + private String httpGetString(String url, Map param) { + Query query = Query.newInstance().initParams(param); + try { + HttpRestResult httpResult = nacosRestTemplate.get(url, Header.EMPTY, query, String.class); + return httpResult.getData(); + } catch (Exception e) { + throw new RuntimeException("", e); + } + } + + private byte[] httpGetBytes(String url, Map param) { + Query query = Query.newInstance().initParams(param); + try { + HttpRestResult httpResult = nacosRestTemplate.get(url, Header.EMPTY, query, byte[].class); + return httpResult.getData(); + } catch (Exception e) { + throw new RuntimeException("", e); + } + } + + private String httpPost(String url, Map param) { + return httpPost(url, param, null); + } + + private String httpPost(String url, Map param, Object payload) { + Query query = Query.newInstance().initParams(param); + try { + HttpRestResult httpResult = nacosRestTemplate.post(url, Header.EMPTY, query, payload, String.class); + return httpResult.getData(); + } catch (Exception e) { + throw new RuntimeException("", e); + } + } + + private String uploadZipFile(String url, Map param, String filename, byte[] fileBytes) { + CloseableHttpClient httpclient = HttpClients.createDefault(); + try { + int connectTimeout = 10000; + int socketTimeout = 10000; + HttpPost httpPost = new HttpPost(url); + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(connectTimeout) + .setSocketTimeout(socketTimeout).build(); + httpPost.setConfig(requestConfig); + + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + if (MapUtils.isNotEmpty(param)) { + param.entrySet().forEach(e -> { + builder.addTextBody(e.getKey(), e.getValue(), ContentType.APPLICATION_FORM_URLENCODED); + }); + } + + ByteArrayBody byteArrayBody = new ByteArrayBody(fileBytes, ContentType.create("application/zip"), filename); + builder.addPart("file", byteArrayBody); + + HttpEntity reqEntity = builder.setContentType(ContentType.MULTIPART_FORM_DATA).build(); + httpPost.setEntity(reqEntity); + + CloseableHttpResponse response = httpclient.execute(httpPost); + try { + System.out.println(response.getStatusLine()); + HttpEntity resEntity = response.getEntity(); + String responseToStr = null; + if (resEntity != null) { + responseToStr = EntityUtils.toString(response.getEntity()); + } + EntityUtils.consume(resEntity); + return responseToStr; + } finally { + response.close(); + } + } catch (Throwable e) { + throw new RuntimeException("httpPostZipFile error", e); + } finally { + try { + httpclient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } } diff --git a/test/pom.xml b/test/pom.xml index a25f06562ee..fae165d8f3b 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -103,10 +103,15 @@ spring-boot-test test - + + + org.apache.httpcomponents + httpclient + test + - com.github.keran213539 - commonOkHttp + org.apache.httpcomponents + httpmime test From 750e4f787c073b88033c14dab120454899fff499 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 23 May 2022 15:15:32 +0800 Subject: [PATCH 038/133] Remove whitespace (#8409) --- .../java/com/alibaba/nacos/plugin/auth/impl/LdapAuthConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/LdapAuthConfig.java b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/LdapAuthConfig.java index 50faea72724..89440b03eec 100644 --- a/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/LdapAuthConfig.java +++ b/plugin-default-impl/src/main/java/com/alibaba/nacos/plugin/auth/impl/LdapAuthConfig.java @@ -52,7 +52,7 @@ public class LdapAuthConfig { @Value(("${" + AuthConstants.NACOS_CORE_AUTH_LDAP_USERDN + ":cn=admin,dc=example,dc=org}")) private String userDn; - @Value(("${ " + AuthConstants.NACOS_CORE_AUTH_LDAP_PASSWORD + ":password}")) + @Value(("${" + AuthConstants.NACOS_CORE_AUTH_LDAP_PASSWORD + ":password}")) private String password; @Bean From 89a0f89a8b9c9d97563c78d86f07e758d143fa2d Mon Sep 17 00:00:00 2001 From: Karson Date: Mon, 23 May 2022 15:16:33 +0800 Subject: [PATCH 039/133] optimize IoUtils and Add some unit test (#8398) * optimize IoUtils and Add some unit test reformat codes fix Too many unapproved license issue fix Too many unapproved license issue fix Too many unapproved license issue fix Too many unapproved license issue fix Too many unapproved license issue * fix test case issue * fix test case issue --- .../alibaba/nacos/common/utils/IoUtils.java | 23 ++---- .../nacos/common/utils/IoUtilsTest.java | 73 +++++++++++++++++++ 2 files changed, 81 insertions(+), 15 deletions(-) create mode 100644 common/src/test/java/com/alibaba/nacos/common/utils/IoUtilsTest.java diff --git a/common/src/main/java/com/alibaba/nacos/common/utils/IoUtils.java b/common/src/main/java/com/alibaba/nacos/common/utils/IoUtils.java index 207211671c4..0e3801f355e 100644 --- a/common/src/main/java/com/alibaba/nacos/common/utils/IoUtils.java +++ b/common/src/main/java/com/alibaba/nacos/common/utils/IoUtils.java @@ -35,6 +35,7 @@ import java.net.HttpURLConnection; import java.nio.channels.FileChannel; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; @@ -64,10 +65,8 @@ public static byte[] tryDecompress(InputStream raw) throws IOException { } catch (IOException e) { e.printStackTrace(); } finally { - closeQuietly(out); - closeQuietly(gis); + closeQuietly(out, gis); } - return null; } @@ -91,8 +90,7 @@ public static byte[] tryDecompress(byte[] raw) throws Exception { IoUtils.copy(gis, out); return out.toByteArray(); } finally { - closeQuietly(out); - closeQuietly(gis); + closeQuietly(out, gis); } } @@ -325,8 +323,7 @@ public static void copyFile(String source, String target) throws IOException { sc = new FileInputStream(sf).getChannel(); sc.transferTo(0, sc.size(), tc); } finally { - closeQuietly(sc); - closeQuietly(tc); + closeQuietly(sc, tc); } } @@ -360,14 +357,6 @@ public static void closeQuietly(HttpURLConnection connection) { } } - public static void closeQuietly(InputStream input) { - closeQuietly((Closeable) input); - } - - public static void closeQuietly(OutputStream output) { - closeQuietly((Closeable) output); - } - /** * Close closable object quietly. * @@ -381,5 +370,9 @@ public static void closeQuietly(Closeable closeable) { } catch (IOException ignored) { } } + + public static void closeQuietly(Closeable... closeable) { + Arrays.stream(closeable).forEach(IoUtils::closeQuietly); + } } diff --git a/common/src/test/java/com/alibaba/nacos/common/utils/IoUtilsTest.java b/common/src/test/java/com/alibaba/nacos/common/utils/IoUtilsTest.java new file mode 100644 index 00000000000..54b993594d7 --- /dev/null +++ b/common/src/test/java/com/alibaba/nacos/common/utils/IoUtilsTest.java @@ -0,0 +1,73 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.nacos.common.utils; + +import org.apache.commons.io.Charsets; +import org.junit.Assert; +import org.junit.Test; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * Unit test of IoUtils. + * + * @author karsonto + */ +public class IoUtilsTest { + + @Test() + public void testCloseQuietly() throws IOException { + BufferedReader br = new BufferedReader( + new InputStreamReader(new ByteArrayInputStream("111".getBytes(Charsets.toCharset("UTF-8"))))); + Assert.assertEquals("111", br.readLine()); + IoUtils.closeQuietly(br); + try { + br.readLine(); + } catch (IOException e) { + Assert.assertNotNull(e); + return; + } + Assert.fail(); + } + + @Test() + public void testCloseQuietly2() throws IOException { + BufferedReader br = new BufferedReader( + new InputStreamReader(new ByteArrayInputStream("123".getBytes(Charsets.toCharset("UTF-8"))))); + Assert.assertEquals("123", br.readLine()); + BufferedReader br2 = new BufferedReader( + new InputStreamReader(new ByteArrayInputStream("456".getBytes(Charsets.toCharset("UTF-8"))))); + Assert.assertEquals("456", br2.readLine()); + IoUtils.closeQuietly(br, br2); + try { + br.readLine(); + } catch (IOException e) { + Assert.assertNotNull(e); + } + try { + br2.readLine(); + } catch (IOException e) { + Assert.assertNotNull(e); + return; + } + Assert.fail(); + } + +} From d6f27409a68163bd297027fd5f4a612a6d5202db Mon Sep 17 00:00:00 2001 From: onewe Date: Mon, 23 May 2022 15:17:51 +0800 Subject: [PATCH 040/133] [ISSUES #8417] throw a HttpSessionRequiredException when sessions expired (#8419) * [ISSUE #8417] throw a HttpSessionRequiredException when sessions expired * [ISSUE #8417] add unit test * [ISSUE #8417] repackage Close #8417 * [ISSUE #8417] retry ci * [ISSUE #8417] retry ci --- console-ui/src/utils/request.js | 2 +- .../src/main/resources/static/css/main.css | 4 +-- console/src/main/resources/static/index.html | 4 +-- console/src/main/resources/static/js/main.js | 27 ++++++++++--------- .../auth/impl/controller/UserController.java | 22 ++++++++------- .../impl/controller/UserControllerTest.java | 14 ++++++++++ 6 files changed, 46 insertions(+), 27 deletions(-) diff --git a/console-ui/src/utils/request.js b/console-ui/src/utils/request.js index 6c6e355fba6..08f47629c3a 100644 --- a/console-ui/src/utils/request.js +++ b/console-ui/src/utils/request.js @@ -89,7 +89,7 @@ const request = () => { if ( [401, 403].includes(status) && - ['unknown user!', 'token invalid!', 'token expired!', 'authorization failed!'].includes( + ['unknown user!', 'token invalid!', 'token expired!', 'session expired!'].includes( message ) ) { diff --git a/console/src/main/resources/static/css/main.css b/console/src/main/resources/static/css/main.css index 11204490560..87f2de3f9f1 100644 --- a/console/src/main/resources/static/css/main.css +++ b/console/src/main/resources/static/css/main.css @@ -300,7 +300,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */.next-progress-circle[dir=rtl] .next-progress-circle-container{transform:scaleX(-1)}.next-progress-line[dir=rtl] .next-progress-line-overlay{left:auto;right:0}.next-progress-line,.next-progress-line *,.next-progress-line :after,.next-progress-line :before{box-sizing:border-box}.next-progress-line{width:100%;display:inline-block;position:relative}.next-progress-line-container{display:inline-block;width:100%;vertical-align:middle}.next-progress-line-underlay{position:relative;overflow:hidden;width:100%;background:#ebecf0}.next-progress-line-overlay{position:absolute;left:0;top:0;transition:all .3s ease}.next-progress-line-overlay-normal{background:#5584ff}.next-progress-line-overlay-success{background:#46bc15}.next-progress-line-overlay-error,.next-progress-line-overlay-started{background:#ff3000}.next-progress-line-overlay-middle{background:#ff9300}.next-progress-line-overlay-finishing{background:#46bc15}.next-progress-line.next-small .next-progress-line-underlay{border-radius:20px;height:4px}.next-progress-line.next-small .next-progress-line-overlay{height:4px;border-radius:20px;top:50%;margin-top:-2px}.next-progress-line.next-small .next-progress-line-text{font-size:12px;line-height:4px}.next-progress-line.next-medium .next-progress-line-underlay{border-radius:20px;height:8px}.next-progress-line.next-medium .next-progress-line-overlay{height:8px;border-radius:20px;top:50%;margin-top:-4px}.next-progress-line.next-medium .next-progress-line-text{font-size:12px;line-height:8px}.next-progress-line.next-large .next-progress-line-underlay{border-radius:20px;height:12px}.next-progress-line.next-large .next-progress-line-overlay{height:12px;border-radius:20px;top:50%;margin-top:-6px}.next-progress-line.next-large .next-progress-line-text{font-size:12px;line-height:12px}.next-progress-line-show-info .next-progress-line-container{padding-right:60px;margin-right:-60px}.next-progress-line-show-info .next-progress-line-text{width:50px;text-align:left;margin-left:10px;vertical-align:middle;display:inline-block;color:#333}.next-progress-line-show-border .next-progress-line-underlay{border:1px solid #dcdee3}.next-progress-line-show-border.next-small .next-progress-line-underlay{border-radius:20px;height:6px}.next-progress-line-show-border.next-small .next-progress-line-overlay{height:4px;border-radius:20px;top:50%;margin-top:-2px}.next-progress-line-show-border.next-small .next-progress-line-text{font-size:12px;line-height:6px}.next-progress-line-show-border.next-medium .next-progress-line-underlay{border-radius:20px;height:10px}.next-progress-line-show-border.next-medium .next-progress-line-overlay{height:8px;border-radius:20px;top:50%;margin-top:-4px}.next-progress-line-show-border.next-medium .next-progress-line-text{font-size:12px;line-height:10px}.next-progress-line-show-border.next-large .next-progress-line-underlay{border-radius:20px;height:14px}.next-progress-line-show-border.next-large .next-progress-line-overlay{height:12px;border-radius:20px;top:50%;margin-top:-6px}.next-progress-line-show-border.next-large .next-progress-line-text{font-size:12px;line-height:14px}.next-progress-circle,.next-progress-circle *,.next-progress-circle :after,.next-progress-circle :before{box-sizing:border-box}.next-progress-circle{position:relative;display:inline-block}.next-progress-circle-underlay{stroke-width:8px;stroke:#ebecf0}.next-progress-circle-overlay{transition:all .3s ease;stroke-linecap:round;stroke-width:8px}.next-progress-circle-overlay-normal{stroke:#5584ff}.next-progress-circle-overlay-success{stroke:#46bc15}.next-progress-circle-overlay-error,.next-progress-circle-overlay-started{stroke:#ff3000}.next-progress-circle-overlay-middle{stroke:#ff9300}.next-progress-circle-overlay-finishing{stroke:#46bc15}.next-progress-circle.next-small{width:100px;height:100px;font-size:20px}.next-progress-circle.next-medium{width:116px;height:116px;font-size:24px}.next-progress-circle.next-large{width:132px;height:132px;font-size:36px}.next-progress-circle-text{display:block;position:absolute;width:100%;top:50%;left:0;text-align:center;line-height:1;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:transform .3s ease;color:#333}.next-upload-list[dir=rtl].next-upload-list-text .next-upload-list-item{padding:4px 8px 4px 36px}.next-upload-list[dir=rtl].next-upload-list-text .next-icon{left:12px;right:auto}.next-upload-list[dir=rtl].next-upload-list-image .next-icon-close{float:left;margin-left:4px;margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-thumbnail{float:right;margin-left:8px;margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-progress{margin-right:56px;margin-left:20px}.next-upload,.next-upload *,.next-upload :after,.next-upload :before{box-sizing:border-box}.next-upload-inner{outline:0;display:inline-block}.next-upload-inner.next-hidden{display:none}.next-upload-list{overflow:hidden}.next-upload-list,.next-upload-list *,.next-upload-list :after,.next-upload-list :before{box-sizing:border-box}.next-upload-list-item{position:relative}.next-upload-list-item.next-hidden{display:none}.next-upload-list-item-name{text-decoration:none}.next-upload.next-disabled{border-color:#e6e7eb!important;color:#ccc!important}.next-upload.next-disabled .next-icon-close{cursor:not-allowed!important}.next-upload.next-disabled .next-upload-inner *{color:#ccc!important;border-color:#e6e7eb!important;cursor:not-allowed!important}.next-upload-list-text .next-upload-list-item{background-color:#f2f3f7;padding:4px 36px 4px 8px;height:40px;line-height:32px;font-size:12px;overflow:hidden;transition:all .1s linear;border-radius:0}.next-upload-list-text .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-text .next-upload-list-item-op{position:absolute;top:0;right:12px}.next-upload-list-text .next-upload-list-item .next-icon-close{color:#999;cursor:pointer;text-align:center;transition:all .1s linear;line-height:40px}.next-upload-list-text .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-text .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-text .next-upload-list-item:hover{background-color:#f2f3f7}.next-upload-list-text .next-upload-list-item:hover .next-icon{color:#666}.next-upload-list-text .next-upload-list-item-name-wrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:4px}.next-upload-list-text .next-upload-list-item-name{color:#333;transition:all .1s linear}.next-upload-list-text .next-upload-list-item-size{color:#999;margin-left:8px}.next-upload-list-text .next-upload-list-item-uploading{line-height:16px}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress{line-height:0;padding-top:4px;padding-bottom:4px}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:8px}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:8px;margin-top:-4px}.next-upload-list-text .next-upload-list-item-done{line-height:32px}.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-name,.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-size{color:#5584ff}.next-upload-list-text .next-upload-list-item-error{background-color:#ffece4!important}.next-upload-list-text .next-upload-list-item-error.next-upload-list-item-error-with-msg{line-height:16px}.next-upload-list-text .next-upload-list-item-error-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#ff3000}.next-upload-list-image .next-upload-list-item{box-sizing:content-box;border:1px solid #dcdee3;background-color:#fff;padding:8px;height:48px;line-height:48px;font-size:12px;transition:all .1s linear;overflow:hidden;border-radius:0}.next-upload-list-image .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-image .next-upload-list-item:after{visibility:hidden;display:block;height:0;font-size:0;content:"\0020";clear:both}.next-upload-list-image .next-upload-list-item-op{float:right;margin-right:4px}.next-upload-list-image .next-upload-list-item .next-icon-close{cursor:pointer;color:#999;text-align:center}.next-upload-list-image .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-image .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-image .next-upload-list-item:hover{border-color:#5584ff}.next-upload-list-image .next-upload-list-item:hover .next-icon-close{color:#666}.next-upload-list-image .next-upload-list-item-name{display:block;color:#333;margin-left:56px;margin-right:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;transition:all .1s linear}.next-upload-list-image .next-upload-list-item-size{color:#999;margin-left:8px}.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-name,.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-size{color:#5584ff}.next-upload-list-image .next-upload-list-item-thumbnail{float:left;width:48px;height:48px;color:#ccc;border:1px solid #dcdee3;border-radius:0;background-color:#f2f3f7;margin-right:8px;vertical-align:middle;text-align:center;overflow:hidden;box-sizing:border-box}.next-upload-list-image .next-upload-list-item-thumbnail img{width:100%;height:100%}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon{display:block;margin:0;line-height:48px}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-image .next-upload-list-item-thumbnail .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-upload-list-image .next-upload-list-item-error{border-color:#ff3000!important;background-color:#fff}.next-upload-list-image .next-upload-list-item-uploading{background-color:#fff}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-name{height:24px;line-height:24px}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress{margin-left:56px;margin-right:20px;line-height:0;padding-top:8px;padding-bottom:8px}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:8px}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:8px;margin-top:-4px}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg,.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-name{height:24px;line-height:24px}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg{margin-left:56px;margin-right:20px;color:#ff3000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card{display:inline-block}.next-upload-list-card .next-upload-list-item{vertical-align:middle;float:left}.next-upload-list-card .next-upload-list-item:not(:last-child){margin-right:12px}.next-upload-list-card .next-upload-list-item-wrapper{position:relative;border:1px solid #c4c6cf;width:100px;height:100px;padding:0;background-color:transparent}.next-upload-list-card .next-upload-list-item-thumbnail{text-align:center;width:100%;height:100%;color:#ccc;font-size:12px}.next-upload-list-card .next-upload-list-item-thumbnail img{max-width:100%;max-height:100%;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.next-upload-list-card .next-upload-list-item-thumbnail img:focus{outline:0}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon{width:100%}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item-thumbnail .next-icon:before{width:48px;font-size:48px;line-height:inherit}.next-upload-list-card .next-upload-list-item-handler{margin-top:13px}.next-upload-list-card .next-upload-list-item-handler .next-icon-cry{margin-top:10px}.next-upload-list-card .next-upload-list-item-name{display:block;width:100px;text-align:center;margin-top:4px;font-size:12px;color:#666;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card .next-upload-list-item-progress{position:absolute;font-size:0;bottom:0;left:0;width:100%}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-underlay{border-radius:0;height:8px}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-overlay{border-radius:0;height:8px;margin-top:-4px}.next-upload-list-card .next-upload-list-item-uploading .next-upload-list-item-wrapper{background-color:#f7f8fa}.next-upload-list-card .next-upload-list-item:hover .next-upload-tool{opacity:.8}.next-upload-list-card .next-upload-list-item .next-upload-tool{position:absolute;z-index:1;background-color:rgba(0,0,0,.7);transition:all .1s linear;opacity:0;width:100%;height:28px;left:0;bottom:0;display:flex}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon{line-height:28px;color:#fff;cursor:pointer}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-list-card .next-upload-list-item .next-upload-tool-item{width:100%;text-align:center}.next-upload-list-card .next-upload-list-item .next-upload-tool-item:not(:last-child){border-right:1px solid #fff}.next-upload-list-card .next-upload-list-item .next-upload-tool-reupload{display:inline-block}.next-upload-list-card .next-upload-list-item-error .next-upload-list-item-wrapper{border-color:#ff3000}.next-upload-list-card.next-upload-ie9 .next-upload-tool{display:table}.next-upload-list-card.next-upload-ie9 .next-upload-tool-item{display:table-cell;width:1%}.next-upload-card{border:1px dashed #c4c6cf;width:100px;height:100px;background-color:#fff;text-align:center;cursor:pointer;transition:border-color .1s linear;display:table-cell;vertical-align:middle}.next-upload-card .next-icon{color:#c4c6cf}.next-upload-card .next-icon .next-icon-remote,.next-upload-card .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-upload-card .next-upload-add-icon:before{content:""}.next-upload-card .next-upload-text{font-size:12px;margin-top:12px;color:#666;outline:none}.next-upload-card:hover{border-color:#5584ff}.next-upload-card:hover .next-icon,.next-upload-card:hover .next-upload-text{color:#5584ff}.next-upload-dragable .next-upload-inner{display:block}.next-upload-dragable .next-upload-drag{border:1px dashed #c4c6cf;transition:border-color .1s linear;cursor:pointer;border-radius:3px;background-color:transparent;text-align:center;margin-bottom:4px}.next-upload-dragable .next-upload-drag-icon{margin:20px 0 0;color:#666}.next-upload-dragable .next-upload-drag-icon .next-upload-drag-upload-icon:before{content:"";font-size:24px}.next-upload-dragable .next-upload-drag-text{margin:12px 0 0;font-size:14px;color:#666}.next-upload-dragable .next-upload-drag-hint{margin:4px 0 20px;font-size:12px;color:#999}.next-upload-dragable .next-upload-drag-over{border-color:#5584ff}.next-collapse[dir=rtl] .next-collapse-panel-title{padding:8px 28px 8px 0}.next-collapse[dir=rtl] .next-collapse-panel-icon{left:inherit;right:12px;transform:rotate(180deg);margin-left:0;margin-right:0}.next-collapse[dir=rtl] .next-collapse-panel-icon .next-icon-remote,.next-collapse[dir=rtl] .next-collapse-panel-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-collapse[dir=rtl] .next-collapse-panel-icon{transform:scale(.5) rotate(180deg);margin-left:-4px;margin-right:-4px}.next-collapse[dir=rtl] .next-collapse-panel-icon:before{width:16px;font-size:16px}}.next-collapse{border:1px solid #dcdee3;border-radius:3px}.next-collapse,.next-collapse *,.next-collapse :after,.next-collapse :before{box-sizing:border-box}.next-collapse:focus,.next-collapse :focus{outline:0}.next-collapse-panel:not(:first-child){border-top:1px solid #dcdee3}.next-collapse .next-collapse-panel-icon{position:absolute;color:#333;transition:transform .1s linear;left:12px;margin-top:-2px;margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon .next-icon-remote,.next-collapse .next-collapse-panel-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-collapse .next-collapse-panel-icon{transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-collapse .next-collapse-panel-icon:before{width:16px;font-size:16px}}.next-collapse-panel-title{position:relative;line-height:1.5;background:#f2f3f7;font-size:14px;font-weight:400;color:#333;cursor:pointer;padding:8px 0 8px 28px;transition:background .1s linear}.next-collapse-panel-title:hover{background:#ebecf0;color:#333;font-weight:400}.next-collapse-panel-title:hover .next-collapse-panel-icon{color:#333}.next-collapse-panel-content{height:0;line-height:1.5;padding:0 16px;background:#fff;font-size:12px;color:#666;transition:all .3s ease;opacity:0}.next-collapse-panel-expanded>.next-collapse-panel-content{display:block;padding:12px 16px;height:auto;opacity:1}.next-collapse .next-collapse-unfold-icon:before{content:""}.next-collapse-panel-hidden>.next-collapse-panel-content{overflow:hidden}.next-collapse .next-collapse-panel-icon:before{content:""}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded{transform:rotate(90deg);margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded .next-icon-remote,.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded{transform:scale(.5) rotate(90deg);margin-left:-4px;margin-right:-4px}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded:before{width:16px;font-size:16px}}.next-collapse-disabled,.next-collapse-panel-disabled:not(:first-child){border-color:#e6e7eb}.next-collapse-panel-disabled>.next-collapse-panel-title{cursor:not-allowed;color:#ccc;background:#f2f3f7}.next-collapse-panel-disabled .next-collapse-panel-icon{color:#ccc}.next-collapse-panel-disabled .next-collapse-panel-title:hover{font-weight:400}.next-collapse-panel-disabled .next-collapse-panel-title:hover .next-collapse-panel-icon{color:#ccc}.next-collapse-panel-disabled:hover{color:#ccc;background:#f2f3f7}.next-menu-btn{display:inline-block;box-shadow:none}.next-menu-btn-spacing-tb{padding:0}.next-menu-btn .next-icon{transition:transform .1s linear}.next-menu-btn .next-menu-btn-arrow:before{content:""}.next-menu-btn.next-expand .next-menu-btn-arrow{transform:rotate(180deg)}.next-menu-btn-symbol-unfold:before{content:""}.next-menu-btn.next-btn-normal .next-menu-btn-arrow{color:#999}.next-menu-btn.next-btn-normal:hover .next-menu-btn-arrow{color:#333}.next-menu-btn.next-btn-secondary .next-menu-btn-arrow{color:#5584ff}.next-menu-btn.next-btn-secondary:hover .next-menu-btn-arrow{color:#fff}.next-menu-btn.next-btn-secondary.next-btn-text:hover .next-menu-btn-arrow{color:#5584ff}.next-menu-btn.next-btn-primary .next-menu-btn-arrow,.next-menu-btn.next-btn-primary:hover .next-menu-btn-arrow{color:#fff}.next-menu-btn.next-btn-text.next-btn-normal .next-menu-btn-arrow{color:#333}.next-menu-btn.next-btn-text.next-btn-normal:hover .next-menu-btn-arrow,.next-menu-btn.next-btn-text.next-btn-primary .next-menu-btn-arrow{color:#5584ff}.next-menu-btn.next-btn-text.next-btn-primary:hover .next-menu-btn-arrow{color:#3e71f7}.next-menu-btn.next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:#333}.next-menu-btn.next-btn-ghost.next-btn-light:hover .next-menu-btn-arrow{color:#999}.next-menu-btn.next-btn-ghost.next-btn-dark .next-menu-btn-arrow,.next-menu-btn.next-btn-ghost.next-btn-dark:hover .next-menu-btn-arrow{color:#fff}.next-menu-btn.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text[disabled] .next-menu-btn-arrow,.next-menu-btn[disabled] .next-menu-btn-arrow{color:#ccc}.next-menu-btn[disabled].next-btn-ghost.next-btn-dark .next-menu-btn-arrow{color:hsla(0,0%,100%,.4)}.next-menu-btn[disabled].next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:rgba(0,0,0,.1)}.next-search-simple[dir=rtl].next-large .next-search-icon{margin-left:12px;margin-right:0}.next-search-simple[dir=rtl].next-medium .next-search-icon{margin-left:8px;margin-right:0}.next-search-simple[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #c4c6cf;border-right:none}.next-search-simple[dir=rtl].next-dark .next-search-left{border-color:#c4c6cf}.next-search-simple[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-right:1px solid #c4c6cf}.next-search-simple[dir=rtl].next-dark:hover .next-search-left{border-color:#c4c6cf}.next-search-simple[dir=rtl].next-dark .next-search-icon{color:#999}.next-search-simple[dir=rtl].next-dark .next-search-icon:hover{color:#666}.next-search-normal[dir=rtl] .next-search-left{border-left:none;border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-left-radius:0;border-bottom-left-radius:0}.next-search-normal[dir=rtl] .next-search-btn.next-btn{border-radius:3px 0 0 3px!important}.next-search-normal[dir=rtl] .next-input{border-radius:0 3px 3px 0}.next-search-normal[dir=rtl].next-primary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-bottom-right-radius:1px}.next-search-normal[dir=rtl].next-primary .next-search-left .next-search-left-addon{border-left:1px solid #e6e7eb;border-right:none}.next-search-normal[dir=rtl].next-secondary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-bottom-right-radius:1px}.next-search-normal[dir=rtl].next-secondary .next-search-left .next-search-left-addon{border-left:1px solid #e6e7eb;border-right:none}.next-search-normal[dir=rtl].next-normal .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-bottom-right-radius:1px}.next-search-normal[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #e6e7eb;border-right:none}.next-search-normal[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-left:1px solid #5584ff;border-right:none}.next-search{width:100%;display:inline-block}.next-search,.next-search *,.next-search :after,.next-search :before{box-sizing:border-box}.next-search .next-input,.next-search .next-select{border:none;box-shadow:none}.next-search .next-select .next-input,.next-search .next-select .next-input .next-input-text-field{height:auto}.next-search .next-search-left{border-style:solid;transition:all .1s linear}.next-search .next-search-left-addon .next-input,.next-search .next-search-left-addon .next-select-trigger-search{min-height:100%;border-bottom-right-radius:0;border-top-right-radius:0}.next-search .next-search-left-addon .next-select-values{line-height:1}.next-search .next-search-left-addon.next-input-group-addon .next-select{margin:0}.next-search .next-search-left-addon+.next-search-input .next-input{border-bottom-left-radius:0;border-top-left-radius:0}.next-search .next-search-input{width:100%}.next-search .next-search-btn{box-shadow:none}.next-search .next-search-symbol-icon:before{content:""}.next-search-normal{width:600px}.next-search-normal .next-search-left{border-top-left-radius:3px;border-bottom-left-radius:3px}.next-search-normal .next-input{border-radius:3px 0 0 3px}.next-search-normal .next-btn{border-radius:0 3px 3px 0}.next-search-normal.next-primary .next-search-left{border-color:#5584ff}.next-search-normal.next-primary .next-search-left .next-search-left-addon{border-right:1px solid #e6e7eb}.next-search-normal.next-primary:hover .next-btn,.next-search-normal.next-primary:hover .next-search-left{border-color:#5584ff}.next-search-normal.next-primary .next-search-btn{background:#5584ff;border-color:#5584ff;color:#fff}.next-search-normal.next-primary .next-search-btn:hover{background:#3e71f7;border-color:#5584ff;color:#fff}.next-search-normal.next-primary .next-search-btn .next-icon,.next-search-normal.next-primary .next-search-btn .next-icon:hover{color:#fff}.next-search-normal.next-primary.next-large{box-shadow:none}.next-search-normal.next-primary.next-large .next-search-btn,.next-search-normal.next-primary.next-large .next-search-left{border-width:2px;height:60px}.next-search-normal.next-primary.next-large .next-search-input{height:56px;overflow-y:hidden}.next-search-normal.next-primary.next-large .next-search-input input{height:56px;line-height:56px \0}.next-search-normal.next-primary.next-large .next-select{height:56px}.next-search-normal.next-primary.next-large .next-search-btn{font-size:16px}.next-search-normal.next-primary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-primary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-primary.next-medium{box-shadow:none}.next-search-normal.next-primary.next-medium .next-search-btn,.next-search-normal.next-primary.next-medium .next-search-left{border-width:2px;height:40px}.next-search-normal.next-primary.next-medium .next-search-input{height:36px;overflow-y:hidden}.next-search-normal.next-primary.next-medium .next-search-input input{height:36px;line-height:36px \0}.next-search-normal.next-primary.next-medium .next-select{height:36px}.next-search-normal.next-primary.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-primary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-primary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-primary .next-input{border-top-left-radius:1px;border-bottom-left-radius:1px}.next-search-normal.next-secondary .next-search-left{border-color:#c4c6cf}.next-search-normal.next-secondary .next-search-left .next-search-left-addon{border-right:1px solid #e6e7eb}.next-search-normal.next-secondary:hover .next-btn,.next-search-normal.next-secondary:hover .next-search-left{border-color:#5584ff}.next-search-normal.next-secondary .next-search-btn{background:#5584ff;border-color:#5584ff;color:#fff}.next-search-normal.next-secondary .next-search-btn:hover{background:#3e71f7;border-color:#5584ff;color:#fff}.next-search-normal.next-secondary .next-search-btn .next-icon,.next-search-normal.next-secondary .next-search-btn .next-icon:hover{color:#fff}.next-search-normal.next-secondary.next-large{box-shadow:none}.next-search-normal.next-secondary.next-large .next-search-btn,.next-search-normal.next-secondary.next-large .next-search-left{border-width:1px;height:60px}.next-search-normal.next-secondary.next-large .next-search-input{height:58px;overflow-y:hidden}.next-search-normal.next-secondary.next-large .next-search-input input{height:58px;line-height:58px \0}.next-search-normal.next-secondary.next-large .next-select{height:58px}.next-search-normal.next-secondary.next-large .next-search-btn{font-size:16px}.next-search-normal.next-secondary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-secondary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-secondary.next-medium{box-shadow:none}.next-search-normal.next-secondary.next-medium .next-search-btn,.next-search-normal.next-secondary.next-medium .next-search-left{border-width:1px;height:40px}.next-search-normal.next-secondary.next-medium .next-search-input{height:38px;overflow-y:hidden}.next-search-normal.next-secondary.next-medium .next-search-input input{height:38px;line-height:38px \0}.next-search-normal.next-secondary.next-medium .next-select{height:38px}.next-search-normal.next-secondary.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-secondary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-secondary .next-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.next-search-normal.next-normal .next-search-left{border-color:#c4c6cf}.next-search-normal.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #e6e7eb}.next-search-normal.next-normal:hover .next-btn,.next-search-normal.next-normal:hover .next-search-left{border-color:#a0a2ad}.next-search-normal.next-normal .next-search-btn{background:#f7f8fa;border-color:#c4c6cf;color:#666}.next-search-normal.next-normal .next-search-btn:hover{background:#ebecf0;border-color:#a0a2ad;color:#333}.next-search-normal.next-normal .next-search-btn .next-icon{color:#666}.next-search-normal.next-normal .next-search-btn .next-icon:hover{color:#333}.next-search-normal.next-normal.next-large{box-shadow:none}.next-search-normal.next-normal.next-large .next-search-btn,.next-search-normal.next-normal.next-large .next-search-left{border-width:1px;height:60px}.next-search-normal.next-normal.next-large .next-search-input{height:58px;overflow-y:hidden}.next-search-normal.next-normal.next-large .next-search-input input{height:58px;line-height:58px \0}.next-search-normal.next-normal.next-large .next-select{height:58px}.next-search-normal.next-normal.next-large .next-search-btn{font-size:16px}.next-search-normal.next-normal.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-normal.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-normal.next-medium{box-shadow:none}.next-search-normal.next-normal.next-medium .next-search-btn,.next-search-normal.next-normal.next-medium .next-search-left{border-width:1px;height:40px}.next-search-normal.next-normal.next-medium .next-search-input{height:38px;overflow-y:hidden}.next-search-normal.next-normal.next-medium .next-search-input input{height:38px;line-height:38px \0}.next-search-normal.next-normal.next-medium .next-select{height:38px}.next-search-normal.next-normal.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-normal.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-normal.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-normal .next-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.next-search-normal.next-dark .next-search-left{border-color:#5584ff}.next-search-normal.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #5584ff}.next-search-normal.next-dark:hover .next-btn,.next-search-normal.next-dark:hover .next-search-left{border-color:#5584ff}.next-search-normal.next-dark .next-search-btn{background:#5584ff;border-color:#5584ff;color:#fff}.next-search-normal.next-dark .next-search-btn:hover{background:#3e71f7;border-color:#5584ff;color:#fff}.next-search-normal.next-dark .next-search-btn .next-icon,.next-search-normal.next-dark .next-search-btn .next-icon:hover,.next-search-normal.next-dark .next-select-inner,.next-search-normal.next-dark input{color:#fff}.next-search-normal.next-dark .next-input,.next-search-normal.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-normal.next-dark.next-large{box-shadow:none}.next-search-normal.next-dark.next-large .next-search-btn,.next-search-normal.next-dark.next-large .next-search-left{border-width:1px;height:60px}.next-search-normal.next-dark.next-large .next-search-input{height:58px;overflow-y:hidden}.next-search-normal.next-dark.next-large .next-search-input input{height:58px;line-height:58px \0}.next-search-normal.next-dark.next-large .next-select{height:58px}.next-search-normal.next-dark.next-large .next-search-btn{font-size:16px}.next-search-normal.next-dark.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-dark.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-dark.next-medium{box-shadow:none}.next-search-normal.next-dark.next-medium .next-search-btn,.next-search-normal.next-dark.next-medium .next-search-left{border-width:1px;height:40px}.next-search-normal.next-dark.next-medium .next-search-input{height:38px;overflow-y:hidden}.next-search-normal.next-dark.next-medium .next-search-input input{height:38px;line-height:38px \0}.next-search-normal.next-dark.next-medium .next-select{height:38px}.next-search-normal.next-dark.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-dark.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-dark.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal:not([dir=rtl]) .next-search-left{border-right:none}.next-search-simple{width:300px;box-shadow:none;border-radius:3px}.next-search-simple .next-search-icon{cursor:pointer;transition:all .1s linear}.next-search-simple .next-input,.next-search-simple .next-search-left{border-radius:3px}.next-search-simple.next-large .next-search-icon{margin-right:12px}.next-search-simple.next-medium .next-search-icon{margin-right:8px}.next-search-simple.next-normal .next-search-left{border-color:#c4c6cf}.next-search-simple.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #c4c6cf}.next-search-simple.next-normal:hover .next-search-left{border-color:#a0a2ad}.next-search-simple.next-normal .next-search-icon{color:#999}.next-search-simple.next-normal .next-search-icon:hover{color:#666}.next-search-simple.next-normal .next-search-left{border-width:1px}.next-search-simple.next-normal.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-large .next-search-icon:before{width:20px;font-size:20px;line-height:inherit}.next-search-simple.next-normal.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-medium .next-search-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-simple.next-dark .next-search-left{border-color:#c4c6cf}.next-search-simple.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #c4c6cf}.next-search-simple.next-dark:hover .next-search-left{border-color:#c4c6cf}.next-search-simple.next-dark .next-search-icon{color:#999}.next-search-simple.next-dark .next-search-icon:hover{color:#666}.next-search-simple.next-dark .next-select-inner,.next-search-simple.next-dark input{color:#fff}.next-search-simple.next-dark .next-input,.next-search-simple.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-simple.next-dark .next-search-left{border-width:1px}.next-search-simple.next-dark.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-large .next-search-icon:before{width:20px;font-size:20px;line-height:inherit}.next-search-simple.next-dark.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-medium .next-search-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-simple .next-select.next-large{height:38px}.next-search-simple .next-select.next-medium{height:26px}.next-transfer{display:inline-block}.next-transfer,.next-transfer *,.next-transfer :after,.next-transfer :before{box-sizing:border-box}.next-transfer-panel{display:inline-block;border:1px solid #dcdee3;border-radius:3px;background-color:#fff;vertical-align:middle}.next-transfer-panel-header{padding:8px 20px;border-bottom:1px solid #dcdee3;background-color:#f7f8fa;color:#333;font-size:12px}.next-transfer-panel-search{padding:0 4px;margin-top:8px;margin-bottom:0;width:180px}.next-transfer .next-transfer-panel-list{width:180px;height:160px;padding:0;border:none;box-shadow:none;border-radius:0;overflow-y:auto}.next-transfer-panel-not-found-container{display:table;width:100%;height:100%}.next-transfer-panel-not-found{display:table-cell;vertical-align:middle;text-align:center;color:#999;font-size:14px}.next-transfer-panel-item.next-focused{transition:background-color .1s linear}.next-transfer-panel-item:not(.next-disabled).next-simple:hover{color:#5584ff}.next-transfer-panel-item.next-insert-before:before{position:absolute;top:0;left:0;content:"";width:100%;border-top:1px solid #5584ff}.next-transfer-panel-item.next-insert-after:after{position:absolute;left:0;bottom:0;content:"";width:100%;border-bottom:1px solid #5584ff}.next-transfer-panel-footer{position:relative;padding:8px 20px;border-top:1px solid #dcdee3;background-color:#fff;font-size:0;box-shadow:none}.next-transfer-panel-count{margin-left:4px;font-size:12px;vertical-align:middle;color:#333}.next-transfer-panel-move-all{font-size:12px;color:#5584ff;cursor:pointer}.next-transfer-panel-move-all.next-disabled{color:#ccc;cursor:not-allowed}.next-transfer-operations{display:inline-block;vertical-align:middle;margin:0 20px}.next-transfer-move.next-icon{color:#c4c6cf}.next-transfer-move.next-icon:before{content:""}.next-transfer-operation.next-btn{display:block}.next-transfer-operation.next-btn+.next-transfer-operation.next-btn{margin-top:8px}.next-transfer-operation.next-btn .next-icon .next-icon-remote,.next-transfer-operation.next-btn .next-icon:before{width:12px;font-size:12px;line-height:inherit} + */.next-progress-circle[dir=rtl] .next-progress-circle-container{transform:scaleX(-1)}.next-progress-line[dir=rtl] .next-progress-line-overlay{left:auto;right:0}.next-progress-line,.next-progress-line *,.next-progress-line :after,.next-progress-line :before{box-sizing:border-box}.next-progress-line{width:100%;display:inline-block;position:relative}.next-progress-line-container{display:inline-block;width:100%;vertical-align:middle}.next-progress-line-underlay{position:relative;overflow:hidden;width:100%;background:#ebecf0}.next-progress-line-overlay{position:absolute;left:0;top:0;transition:all .3s ease}.next-progress-line-overlay-normal{background:#5584ff}.next-progress-line-overlay-success{background:#46bc15}.next-progress-line-overlay-error,.next-progress-line-overlay-started{background:#ff3000}.next-progress-line-overlay-middle{background:#ff9300}.next-progress-line-overlay-finishing{background:#46bc15}.next-progress-line.next-small .next-progress-line-underlay{border-radius:20px;height:4px}.next-progress-line.next-small .next-progress-line-overlay{height:4px;border-radius:20px;top:50%;margin-top:-2px}.next-progress-line.next-small .next-progress-line-text{font-size:12px;line-height:4px}.next-progress-line.next-medium .next-progress-line-underlay{border-radius:20px;height:8px}.next-progress-line.next-medium .next-progress-line-overlay{height:8px;border-radius:20px;top:50%;margin-top:-4px}.next-progress-line.next-medium .next-progress-line-text{font-size:12px;line-height:8px}.next-progress-line.next-large .next-progress-line-underlay{border-radius:20px;height:12px}.next-progress-line.next-large .next-progress-line-overlay{height:12px;border-radius:20px;top:50%;margin-top:-6px}.next-progress-line.next-large .next-progress-line-text{font-size:12px;line-height:12px}.next-progress-line-show-info .next-progress-line-container{padding-right:60px;margin-right:-60px}.next-progress-line-show-info .next-progress-line-text{width:50px;text-align:left;margin-left:10px;vertical-align:middle;display:inline-block;color:#333}.next-progress-line-show-border .next-progress-line-underlay{border:1px solid #dcdee3}.next-progress-line-show-border.next-small .next-progress-line-underlay{border-radius:20px;height:6px}.next-progress-line-show-border.next-small .next-progress-line-overlay{height:4px;border-radius:20px;top:50%;margin-top:-2px}.next-progress-line-show-border.next-small .next-progress-line-text{font-size:12px;line-height:6px}.next-progress-line-show-border.next-medium .next-progress-line-underlay{border-radius:20px;height:10px}.next-progress-line-show-border.next-medium .next-progress-line-overlay{height:8px;border-radius:20px;top:50%;margin-top:-4px}.next-progress-line-show-border.next-medium .next-progress-line-text{font-size:12px;line-height:10px}.next-progress-line-show-border.next-large .next-progress-line-underlay{border-radius:20px;height:14px}.next-progress-line-show-border.next-large .next-progress-line-overlay{height:12px;border-radius:20px;top:50%;margin-top:-6px}.next-progress-line-show-border.next-large .next-progress-line-text{font-size:12px;line-height:14px}.next-progress-circle,.next-progress-circle *,.next-progress-circle :after,.next-progress-circle :before{box-sizing:border-box}.next-progress-circle{position:relative;display:inline-block}.next-progress-circle-underlay{stroke-width:8px;stroke:#ebecf0}.next-progress-circle-overlay{transition:all .3s ease;stroke-linecap:round;stroke-width:8px}.next-progress-circle-overlay-normal{stroke:#5584ff}.next-progress-circle-overlay-success{stroke:#46bc15}.next-progress-circle-overlay-error,.next-progress-circle-overlay-started{stroke:#ff3000}.next-progress-circle-overlay-middle{stroke:#ff9300}.next-progress-circle-overlay-finishing{stroke:#46bc15}.next-progress-circle.next-small{width:100px;height:100px;font-size:20px}.next-progress-circle.next-medium{width:116px;height:116px;font-size:24px}.next-progress-circle.next-large{width:132px;height:132px;font-size:36px}.next-progress-circle-text{display:block;position:absolute;width:100%;top:50%;left:0;text-align:center;line-height:1;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:transform .3s ease;color:#333}.next-upload-list[dir=rtl].next-upload-list-text .next-upload-list-item{padding:4px 8px 4px 36px}.next-upload-list[dir=rtl].next-upload-list-text .next-icon{left:12px;right:auto}.next-upload-list[dir=rtl].next-upload-list-image .next-icon-close{float:left;margin-left:4px;margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-thumbnail{float:right;margin-left:8px;margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-progress{margin-right:56px;margin-left:20px}.next-upload,.next-upload *,.next-upload :after,.next-upload :before{box-sizing:border-box}.next-upload-inner{outline:0;display:inline-block}.next-upload-inner.next-hidden{display:none}.next-upload-list{overflow:hidden}.next-upload-list,.next-upload-list *,.next-upload-list :after,.next-upload-list :before{box-sizing:border-box}.next-upload-list-item{position:relative}.next-upload-list-item.next-hidden{display:none}.next-upload-list-item-name{text-decoration:none}.next-upload.next-disabled{border-color:#e6e7eb!important;color:#ccc!important}.next-upload.next-disabled .next-icon-close{cursor:not-allowed!important}.next-upload.next-disabled .next-upload-inner *{color:#ccc!important;border-color:#e6e7eb!important;cursor:not-allowed!important}.next-upload-list-text .next-upload-list-item{background-color:#f2f3f7;padding:4px 36px 4px 8px;height:40px;line-height:32px;font-size:12px;overflow:hidden;transition:all .1s linear;border-radius:0}.next-upload-list-text .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-text .next-upload-list-item-op{position:absolute;top:0;right:12px}.next-upload-list-text .next-upload-list-item .next-icon-close{color:#999;cursor:pointer;text-align:center;transition:all .1s linear;line-height:40px}.next-upload-list-text .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-text .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-text .next-upload-list-item:hover{background-color:#f2f3f7}.next-upload-list-text .next-upload-list-item:hover .next-icon{color:#666}.next-upload-list-text .next-upload-list-item-name-wrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:4px}.next-upload-list-text .next-upload-list-item-name{color:#333;transition:all .1s linear}.next-upload-list-text .next-upload-list-item-size{color:#999;margin-left:8px}.next-upload-list-text .next-upload-list-item-uploading{line-height:16px}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress{line-height:0;padding-top:4px;padding-bottom:4px}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:8px}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:8px;margin-top:-4px}.next-upload-list-text .next-upload-list-item-done{line-height:32px}.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-name,.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-size{color:#5584ff}.next-upload-list-text .next-upload-list-item-error{background-color:#ffece4!important}.next-upload-list-text .next-upload-list-item-error.next-upload-list-item-error-with-msg{line-height:16px}.next-upload-list-text .next-upload-list-item-error-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#ff3000}.next-upload-list-image .next-upload-list-item{box-sizing:content-box;border:1px solid #dcdee3;background-color:#fff;padding:8px;height:48px;line-height:48px;font-size:12px;transition:all .1s linear;overflow:hidden;border-radius:0}.next-upload-list-image .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-image .next-upload-list-item:after{visibility:hidden;display:block;height:0;font-size:0;content:"\0020";clear:both}.next-upload-list-image .next-upload-list-item-op{float:right;margin-right:4px}.next-upload-list-image .next-upload-list-item .next-icon-close{cursor:pointer;color:#999;text-align:center}.next-upload-list-image .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-image .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-image .next-upload-list-item:hover{border-color:#5584ff}.next-upload-list-image .next-upload-list-item:hover .next-icon-close{color:#666}.next-upload-list-image .next-upload-list-item-name{display:block;color:#333;margin-left:56px;margin-right:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;transition:all .1s linear}.next-upload-list-image .next-upload-list-item-size{color:#999;margin-left:8px}.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-name,.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-size{color:#5584ff}.next-upload-list-image .next-upload-list-item-thumbnail{float:left;width:48px;height:48px;color:#ccc;border:1px solid #dcdee3;border-radius:0;background-color:#f2f3f7;margin-right:8px;vertical-align:middle;text-align:center;overflow:hidden;box-sizing:border-box}.next-upload-list-image .next-upload-list-item-thumbnail img{width:100%;height:100%}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon{display:block;margin:0;line-height:48px}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-image .next-upload-list-item-thumbnail .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-upload-list-image .next-upload-list-item-error{border-color:#ff3000!important;background-color:#fff}.next-upload-list-image .next-upload-list-item-uploading{background-color:#fff}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-name{height:24px;line-height:24px}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress{margin-left:56px;margin-right:20px;line-height:0;padding-top:8px;padding-bottom:8px}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:8px}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:8px;margin-top:-4px}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg,.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-name{height:24px;line-height:24px}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg{margin-left:56px;margin-right:20px;color:#ff3000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card{display:inline-block}.next-upload-list-card .next-upload-list-item{vertical-align:middle;float:left}.next-upload-list-card .next-upload-list-item:not(:last-child){margin-right:12px}.next-upload-list-card .next-upload-list-item-wrapper{position:relative;border:1px solid #c4c6cf;width:100px;height:100px;padding:0;background-color:transparent;border-radius:0;overflow:hidden}.next-upload-list-card .next-upload-list-item-thumbnail{text-align:center;width:100%;height:100%;color:#ccc;font-size:12px}.next-upload-list-card .next-upload-list-item-thumbnail img{max-width:100%;max-height:100%;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.next-upload-list-card .next-upload-list-item-thumbnail img:focus{outline:0}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon{width:100%}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item-thumbnail .next-icon:before{width:48px;font-size:48px;line-height:inherit}.next-upload-list-card .next-upload-list-item-handler{margin-top:13px}.next-upload-list-card .next-upload-list-item-handler .next-icon-cry{margin-top:10px}.next-upload-list-card .next-upload-list-item-name{display:block;width:100px;text-align:center;margin-top:4px;font-size:12px;color:#666;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card .next-upload-list-item-progress{position:absolute;font-size:0;bottom:0;left:0;width:100%}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-underlay{border-radius:0;height:8px}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-overlay{border-radius:0;height:8px;margin-top:-4px}.next-upload-list-card .next-upload-list-item-uploading .next-upload-list-item-wrapper{background-color:#f7f8fa}.next-upload-list-card .next-upload-list-item:hover .next-upload-tool{opacity:.8}.next-upload-list-card .next-upload-list-item .next-upload-tool{position:absolute;z-index:1;background-color:rgba(0,0,0,.7);transition:all .1s linear;opacity:0;width:100%;height:28px;left:0;bottom:0;display:flex}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon{line-height:28px;color:#fff;cursor:pointer}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-list-card .next-upload-list-item .next-upload-tool-item{width:100%;text-align:center}.next-upload-list-card .next-upload-list-item .next-upload-tool-item:not(:last-child){border-right:1px solid #fff}.next-upload-list-card .next-upload-list-item .next-upload-tool-reupload{display:inline-block}.next-upload-list-card .next-upload-list-item .next-upload-card{display:flex;flex-direction:column;justify-content:center}.next-upload-list-card .next-upload-list-item-error .next-upload-list-item-wrapper{border-color:#ff3000}.next-upload-list-card.next-upload-ie9 .next-upload-tool{display:table}.next-upload-list-card.next-upload-ie9 .next-upload-tool-item{display:table-cell;width:1%}.next-upload-card,.next-upload-list-card.next-upload-ie9 .next-upload-card{display:table-cell}.next-upload-card{border:1px dashed #c4c6cf;width:100px;height:100px;background-color:#fff;text-align:center;cursor:pointer;transition:border-color .1s linear;vertical-align:middle;border-radius:0}.next-upload-card .next-icon{color:#c4c6cf}.next-upload-card .next-icon .next-icon-remote,.next-upload-card .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-upload-card .next-upload-add-icon:before{content:""}.next-upload-card .next-upload-text{font-size:12px;margin-top:12px;color:#666;outline:none}.next-upload-card:hover{border-color:#5584ff}.next-upload-card:hover .next-icon,.next-upload-card:hover .next-upload-text{color:#5584ff}.next-upload-dragable .next-upload-inner{display:block}.next-upload-dragable .next-upload-drag{border:1px dashed #c4c6cf;transition:border-color .1s linear;cursor:pointer;border-radius:3px;background-color:transparent;text-align:center;margin-bottom:4px}.next-upload-dragable .next-upload-drag-icon{margin:20px 0 0;color:#666}.next-upload-dragable .next-upload-drag-icon .next-upload-drag-upload-icon:before{content:"";font-size:24px}.next-upload-dragable .next-upload-drag-text{margin:12px 0 0;font-size:14px;color:#666}.next-upload-dragable .next-upload-drag-hint{margin:4px 0 20px;font-size:12px;color:#999}.next-upload-dragable .next-upload-drag-over{border-color:#5584ff}.next-collapse[dir=rtl] .next-collapse-panel-title{padding:8px 28px 8px 0}.next-collapse[dir=rtl] .next-collapse-panel-icon{left:inherit;right:12px;transform:rotate(180deg);margin-left:0;margin-right:0}.next-collapse[dir=rtl] .next-collapse-panel-icon .next-icon-remote,.next-collapse[dir=rtl] .next-collapse-panel-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-collapse[dir=rtl] .next-collapse-panel-icon{transform:scale(.5) rotate(180deg);margin-left:-4px;margin-right:-4px}.next-collapse[dir=rtl] .next-collapse-panel-icon:before{width:16px;font-size:16px}}.next-collapse{border:1px solid #dcdee3;border-radius:3px}.next-collapse,.next-collapse *,.next-collapse :after,.next-collapse :before{box-sizing:border-box}.next-collapse:focus,.next-collapse :focus{outline:0}.next-collapse-panel:not(:first-child){border-top:1px solid #dcdee3}.next-collapse .next-collapse-panel-icon{position:absolute;color:#333;transition:transform .1s linear;left:12px;margin-top:-2px;margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon .next-icon-remote,.next-collapse .next-collapse-panel-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-collapse .next-collapse-panel-icon{transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-collapse .next-collapse-panel-icon:before{width:16px;font-size:16px}}.next-collapse-panel-title{position:relative;line-height:1.5;background:#f2f3f7;font-size:14px;font-weight:400;color:#333;cursor:pointer;padding:8px 0 8px 28px;transition:background .1s linear}.next-collapse-panel-title:hover{background:#ebecf0;color:#333;font-weight:400}.next-collapse-panel-title:hover .next-collapse-panel-icon{color:#333}.next-collapse-panel-content{height:0;line-height:1.5;padding:0 16px;background:#fff;font-size:12px;color:#666;transition:all .3s ease;opacity:0}.next-collapse-panel-expanded>.next-collapse-panel-content{display:block;padding:12px 16px;height:auto;opacity:1}.next-collapse .next-collapse-unfold-icon:before{content:""}.next-collapse-panel-hidden>.next-collapse-panel-content{overflow:hidden}.next-collapse .next-collapse-panel-icon:before{content:""}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded{transform:rotate(90deg);margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded .next-icon-remote,.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded{transform:scale(.5) rotate(90deg);margin-left:-4px;margin-right:-4px}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded:before{width:16px;font-size:16px}}.next-collapse-disabled,.next-collapse-panel-disabled:not(:first-child){border-color:#e6e7eb}.next-collapse-panel-disabled>.next-collapse-panel-title{cursor:not-allowed;color:#ccc;background:#f2f3f7}.next-collapse-panel-disabled .next-collapse-panel-icon{color:#ccc}.next-collapse-panel-disabled .next-collapse-panel-title:hover{font-weight:400}.next-collapse-panel-disabled .next-collapse-panel-title:hover .next-collapse-panel-icon{color:#ccc}.next-collapse-panel-disabled:hover{color:#ccc;background:#f2f3f7}.next-menu-btn{display:inline-block;box-shadow:none}.next-menu-btn-spacing-tb{padding:0}.next-menu-btn .next-icon{transition:transform .1s linear}.next-menu-btn .next-menu-btn-arrow:before{content:""}.next-menu-btn.next-expand .next-menu-btn-arrow{transform:rotate(180deg)}.next-menu-btn-symbol-unfold:before{content:""}.next-menu-btn.next-btn-normal .next-menu-btn-arrow{color:#999}.next-menu-btn.next-btn-normal:hover .next-menu-btn-arrow{color:#333}.next-menu-btn.next-btn-secondary .next-menu-btn-arrow{color:#5584ff}.next-menu-btn.next-btn-secondary:hover .next-menu-btn-arrow{color:#fff}.next-menu-btn.next-btn-secondary.next-btn-text:hover .next-menu-btn-arrow{color:#5584ff}.next-menu-btn.next-btn-primary .next-menu-btn-arrow,.next-menu-btn.next-btn-primary:hover .next-menu-btn-arrow{color:#fff}.next-menu-btn.next-btn-text.next-btn-normal .next-menu-btn-arrow{color:#333}.next-menu-btn.next-btn-text.next-btn-normal:hover .next-menu-btn-arrow,.next-menu-btn.next-btn-text.next-btn-primary .next-menu-btn-arrow{color:#5584ff}.next-menu-btn.next-btn-text.next-btn-primary:hover .next-menu-btn-arrow{color:#3e71f7}.next-menu-btn.next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:#333}.next-menu-btn.next-btn-ghost.next-btn-light:hover .next-menu-btn-arrow{color:#999}.next-menu-btn.next-btn-ghost.next-btn-dark .next-menu-btn-arrow,.next-menu-btn.next-btn-ghost.next-btn-dark:hover .next-menu-btn-arrow{color:#fff}.next-menu-btn.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text[disabled] .next-menu-btn-arrow,.next-menu-btn[disabled] .next-menu-btn-arrow{color:#ccc}.next-menu-btn[disabled].next-btn-ghost.next-btn-dark .next-menu-btn-arrow{color:hsla(0,0%,100%,.4)}.next-menu-btn[disabled].next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:rgba(0,0,0,.1)}.next-search-simple[dir=rtl].next-large .next-search-icon{margin-left:12px;margin-right:0}.next-search-simple[dir=rtl].next-medium .next-search-icon{margin-left:8px;margin-right:0}.next-search-simple[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #c4c6cf;border-right:none}.next-search-simple[dir=rtl].next-dark .next-search-left{border-color:#c4c6cf}.next-search-simple[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-right:1px solid #c4c6cf}.next-search-simple[dir=rtl].next-dark:hover .next-search-left{border-color:#c4c6cf}.next-search-simple[dir=rtl].next-dark .next-search-icon{color:#999}.next-search-simple[dir=rtl].next-dark .next-search-icon:hover{color:#666}.next-search-normal[dir=rtl] .next-search-left{border-left:none;border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-left-radius:0;border-bottom-left-radius:0}.next-search-normal[dir=rtl] .next-search-btn.next-btn{border-radius:3px 0 0 3px!important}.next-search-normal[dir=rtl] .next-input{border-radius:0 3px 3px 0}.next-search-normal[dir=rtl].next-primary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-bottom-right-radius:1px}.next-search-normal[dir=rtl].next-primary .next-search-left .next-search-left-addon{border-left:1px solid #e6e7eb;border-right:none}.next-search-normal[dir=rtl].next-secondary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-bottom-right-radius:1px}.next-search-normal[dir=rtl].next-secondary .next-search-left .next-search-left-addon{border-left:1px solid #e6e7eb;border-right:none}.next-search-normal[dir=rtl].next-normal .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-bottom-right-radius:1px}.next-search-normal[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #e6e7eb;border-right:none}.next-search-normal[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-left:1px solid #5584ff;border-right:none}.next-search{width:100%;display:inline-block}.next-search,.next-search *,.next-search :after,.next-search :before{box-sizing:border-box}.next-search .next-input,.next-search .next-select{border:none;box-shadow:none}.next-search .next-select .next-input,.next-search .next-select .next-input .next-input-text-field{height:auto}.next-search .next-search-left{border-style:solid;transition:all .1s linear}.next-search .next-search-left-addon .next-input,.next-search .next-search-left-addon .next-select-trigger-search{min-height:100%;border-bottom-right-radius:0;border-top-right-radius:0}.next-search .next-search-left-addon .next-select-values{line-height:1}.next-search .next-search-left-addon.next-input-group-addon .next-select{margin:0}.next-search .next-search-left-addon+.next-search-input .next-input{border-bottom-left-radius:0;border-top-left-radius:0}.next-search .next-search-input{width:100%}.next-search .next-search-btn{box-shadow:none}.next-search .next-search-symbol-icon:before{content:""}.next-search-normal{width:600px}.next-search-normal .next-search-left{border-top-left-radius:3px;border-bottom-left-radius:3px}.next-search-normal .next-input{border-radius:3px 0 0 3px}.next-search-normal .next-btn{border-radius:0 3px 3px 0}.next-search-normal.next-primary .next-search-left{border-color:#5584ff}.next-search-normal.next-primary .next-search-left .next-search-left-addon{border-right:1px solid #e6e7eb}.next-search-normal.next-primary:hover .next-btn,.next-search-normal.next-primary:hover .next-search-left{border-color:#5584ff}.next-search-normal.next-primary .next-search-btn{background:#5584ff;border-color:#5584ff;color:#fff}.next-search-normal.next-primary .next-search-btn:hover{background:#3e71f7;border-color:#5584ff;color:#fff}.next-search-normal.next-primary .next-search-btn .next-icon,.next-search-normal.next-primary .next-search-btn .next-icon:hover{color:#fff}.next-search-normal.next-primary.next-large{box-shadow:none}.next-search-normal.next-primary.next-large .next-search-btn,.next-search-normal.next-primary.next-large .next-search-left{border-width:2px;height:60px}.next-search-normal.next-primary.next-large .next-search-input{height:56px;overflow-y:hidden}.next-search-normal.next-primary.next-large .next-search-input input{height:56px;line-height:56px \0}.next-search-normal.next-primary.next-large .next-select{height:56px}.next-search-normal.next-primary.next-large .next-search-btn{font-size:16px}.next-search-normal.next-primary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-primary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-primary.next-medium{box-shadow:none}.next-search-normal.next-primary.next-medium .next-search-btn,.next-search-normal.next-primary.next-medium .next-search-left{border-width:2px;height:40px}.next-search-normal.next-primary.next-medium .next-search-input{height:36px;overflow-y:hidden}.next-search-normal.next-primary.next-medium .next-search-input input{height:36px;line-height:36px \0}.next-search-normal.next-primary.next-medium .next-select{height:36px}.next-search-normal.next-primary.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-primary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-primary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-primary .next-input{border-top-left-radius:1px;border-bottom-left-radius:1px}.next-search-normal.next-secondary .next-search-left{border-color:#c4c6cf}.next-search-normal.next-secondary .next-search-left .next-search-left-addon{border-right:1px solid #e6e7eb}.next-search-normal.next-secondary:hover .next-btn,.next-search-normal.next-secondary:hover .next-search-left{border-color:#5584ff}.next-search-normal.next-secondary .next-search-btn{background:#5584ff;border-color:#5584ff;color:#fff}.next-search-normal.next-secondary .next-search-btn:hover{background:#3e71f7;border-color:#5584ff;color:#fff}.next-search-normal.next-secondary .next-search-btn .next-icon,.next-search-normal.next-secondary .next-search-btn .next-icon:hover{color:#fff}.next-search-normal.next-secondary.next-large{box-shadow:none}.next-search-normal.next-secondary.next-large .next-search-btn,.next-search-normal.next-secondary.next-large .next-search-left{border-width:1px;height:60px}.next-search-normal.next-secondary.next-large .next-search-input{height:58px;overflow-y:hidden}.next-search-normal.next-secondary.next-large .next-search-input input{height:58px;line-height:58px \0}.next-search-normal.next-secondary.next-large .next-select{height:58px}.next-search-normal.next-secondary.next-large .next-search-btn{font-size:16px}.next-search-normal.next-secondary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-secondary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-secondary.next-medium{box-shadow:none}.next-search-normal.next-secondary.next-medium .next-search-btn,.next-search-normal.next-secondary.next-medium .next-search-left{border-width:1px;height:40px}.next-search-normal.next-secondary.next-medium .next-search-input{height:38px;overflow-y:hidden}.next-search-normal.next-secondary.next-medium .next-search-input input{height:38px;line-height:38px \0}.next-search-normal.next-secondary.next-medium .next-select{height:38px}.next-search-normal.next-secondary.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-secondary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-secondary .next-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.next-search-normal.next-normal .next-search-left{border-color:#c4c6cf}.next-search-normal.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #e6e7eb}.next-search-normal.next-normal:hover .next-btn,.next-search-normal.next-normal:hover .next-search-left{border-color:#a0a2ad}.next-search-normal.next-normal .next-search-btn{background:#f7f8fa;border-color:#c4c6cf;color:#666}.next-search-normal.next-normal .next-search-btn:hover{background:#ebecf0;border-color:#a0a2ad;color:#333}.next-search-normal.next-normal .next-search-btn .next-icon{color:#666}.next-search-normal.next-normal .next-search-btn .next-icon:hover{color:#333}.next-search-normal.next-normal.next-large{box-shadow:none}.next-search-normal.next-normal.next-large .next-search-btn,.next-search-normal.next-normal.next-large .next-search-left{border-width:1px;height:60px}.next-search-normal.next-normal.next-large .next-search-input{height:58px;overflow-y:hidden}.next-search-normal.next-normal.next-large .next-search-input input{height:58px;line-height:58px \0}.next-search-normal.next-normal.next-large .next-select{height:58px}.next-search-normal.next-normal.next-large .next-search-btn{font-size:16px}.next-search-normal.next-normal.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-normal.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-normal.next-medium{box-shadow:none}.next-search-normal.next-normal.next-medium .next-search-btn,.next-search-normal.next-normal.next-medium .next-search-left{border-width:1px;height:40px}.next-search-normal.next-normal.next-medium .next-search-input{height:38px;overflow-y:hidden}.next-search-normal.next-normal.next-medium .next-search-input input{height:38px;line-height:38px \0}.next-search-normal.next-normal.next-medium .next-select{height:38px}.next-search-normal.next-normal.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-normal.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-normal.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-normal .next-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.next-search-normal.next-dark .next-search-left{border-color:#5584ff}.next-search-normal.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #5584ff}.next-search-normal.next-dark:hover .next-btn,.next-search-normal.next-dark:hover .next-search-left{border-color:#5584ff}.next-search-normal.next-dark .next-search-btn{background:#5584ff;border-color:#5584ff;color:#fff}.next-search-normal.next-dark .next-search-btn:hover{background:#3e71f7;border-color:#5584ff;color:#fff}.next-search-normal.next-dark .next-search-btn .next-icon,.next-search-normal.next-dark .next-search-btn .next-icon:hover,.next-search-normal.next-dark .next-select-inner,.next-search-normal.next-dark input{color:#fff}.next-search-normal.next-dark .next-input,.next-search-normal.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-normal.next-dark.next-large{box-shadow:none}.next-search-normal.next-dark.next-large .next-search-btn,.next-search-normal.next-dark.next-large .next-search-left{border-width:1px;height:60px}.next-search-normal.next-dark.next-large .next-search-input{height:58px;overflow-y:hidden}.next-search-normal.next-dark.next-large .next-search-input input{height:58px;line-height:58px \0}.next-search-normal.next-dark.next-large .next-select{height:58px}.next-search-normal.next-dark.next-large .next-search-btn{font-size:16px}.next-search-normal.next-dark.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-large .next-search-btn .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-search-normal.next-dark.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal.next-dark.next-medium{box-shadow:none}.next-search-normal.next-dark.next-medium .next-search-btn,.next-search-normal.next-dark.next-medium .next-search-left{border-width:1px;height:40px}.next-search-normal.next-dark.next-medium .next-search-input{height:38px;overflow-y:hidden}.next-search-normal.next-dark.next-medium .next-search-input input{height:38px;line-height:38px \0}.next-search-normal.next-dark.next-medium .next-select{height:38px}.next-search-normal.next-dark.next-medium .next-search-btn{font-size:16px}.next-search-normal.next-dark.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-dark.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0}.next-search-normal:not([dir=rtl]) .next-search-left{border-right:none}.next-search-simple{width:300px;box-shadow:none;border-radius:3px}.next-search-simple .next-search-icon{cursor:pointer;transition:all .1s linear}.next-search-simple .next-input,.next-search-simple .next-search-left{border-radius:3px}.next-search-simple.next-large .next-search-icon{margin-right:12px}.next-search-simple.next-medium .next-search-icon{margin-right:8px}.next-search-simple.next-normal .next-search-left{border-color:#c4c6cf}.next-search-simple.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #c4c6cf}.next-search-simple.next-normal:hover .next-search-left{border-color:#a0a2ad}.next-search-simple.next-normal .next-search-icon{color:#999}.next-search-simple.next-normal .next-search-icon:hover{color:#666}.next-search-simple.next-normal .next-search-left{border-width:1px}.next-search-simple.next-normal.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-large .next-search-icon:before{width:20px;font-size:20px;line-height:inherit}.next-search-simple.next-normal.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-medium .next-search-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-simple.next-dark .next-search-left{border-color:#c4c6cf}.next-search-simple.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #c4c6cf}.next-search-simple.next-dark:hover .next-search-left{border-color:#c4c6cf}.next-search-simple.next-dark .next-search-icon{color:#999}.next-search-simple.next-dark .next-search-icon:hover{color:#666}.next-search-simple.next-dark .next-select-inner,.next-search-simple.next-dark input{color:#fff}.next-search-simple.next-dark .next-input,.next-search-simple.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-simple.next-dark .next-search-left{border-width:1px}.next-search-simple.next-dark.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-large .next-search-icon:before{width:20px;font-size:20px;line-height:inherit}.next-search-simple.next-dark.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-medium .next-search-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-simple .next-select.next-large{height:38px}.next-search-simple .next-select.next-medium{height:26px}.next-transfer{display:inline-block}.next-transfer,.next-transfer *,.next-transfer :after,.next-transfer :before{box-sizing:border-box}.next-transfer-panel{display:inline-block;border:1px solid #dcdee3;border-radius:3px;background-color:#fff;vertical-align:middle}.next-transfer-panel-header{padding:8px 20px;border-bottom:1px solid #dcdee3;background-color:#f7f8fa;color:#333;font-size:12px}.next-transfer-panel-search{padding:0 4px;margin-top:8px;margin-bottom:0;width:180px}.next-transfer .next-transfer-panel-list{width:180px;height:160px;padding:0;border:none;box-shadow:none;border-radius:0;overflow-y:auto}.next-transfer-panel-not-found-container{display:table;width:100%;height:100%}.next-transfer-panel-not-found{display:table-cell;vertical-align:middle;text-align:center;color:#999;font-size:14px}.next-transfer-panel-item.next-focused{transition:background-color .1s linear}.next-transfer-panel-item:not(.next-disabled).next-simple:hover{color:#5584ff}.next-transfer-panel-item.next-insert-before:before{position:absolute;top:0;left:0;content:"";width:100%;border-top:1px solid #5584ff}.next-transfer-panel-item.next-insert-after:after{position:absolute;left:0;bottom:0;content:"";width:100%;border-bottom:1px solid #5584ff}.next-transfer-panel-footer{position:relative;padding:8px 20px;border-top:1px solid #dcdee3;background-color:#fff;font-size:0;box-shadow:none}.next-transfer-panel-count{margin-left:4px;font-size:12px;vertical-align:middle;color:#333}.next-transfer-panel-move-all{font-size:12px;color:#5584ff;cursor:pointer}.next-transfer-panel-move-all.next-disabled{color:#ccc;cursor:not-allowed}.next-transfer-operations{display:inline-block;vertical-align:middle;margin:0 20px}.next-transfer-move.next-icon{color:#c4c6cf}.next-transfer-move.next-icon:before{content:""}.next-transfer-operation.next-btn{display:block}.next-transfer-operation.next-btn+.next-transfer-operation.next-btn{margin-top:8px}.next-transfer-operation.next-btn .next-icon .next-icon-remote,.next-transfer-operation.next-btn .next-icon:before{width:12px;font-size:12px;line-height:inherit} /*! * Copyright 1999-2018 Alibaba Group Holding Ltd. @@ -348,7 +348,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */.next-slick{position:relative;display:block;-webkit-touch-callout:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.next-slick,.next-slick *,.next-slick :after,.next-slick :before{box-sizing:border-box}.next-slick-initialized .next-slick-slide{display:block}.next-slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0;transform:translateZ(0)}.next-slick-list:focus{outline:none}.next-slick-list.dragging{cursor:pointer;cursor:hand}.next-slick-track{position:relative;top:0;left:0;display:block;transform:translateZ(0)}.next-slick-slide{float:left;height:100%;min-height:1px;outline:0;transition:all .1s linear}.next-slick[dir=rtl] .next-slick-slide{float:right}.next-slick-slide img{display:block}.next-slick-arrow{display:block;position:absolute;cursor:pointer;text-align:center;transition:all .1s linear}.next-slick-arrow.inner{color:#fff;background:#000;opacity:.2;padding:0;border:none}.next-slick-arrow.inner:focus,.next-slick-arrow.inner:hover{color:#fff;background:#000;opacity:.4}.next-slick-arrow.inner.disabled{color:#ccc;background:#f7f8fa;opacity:.5}.next-slick-arrow.outer{color:#666;background:transparent;opacity:.32;padding:0;border:none;border-radius:0}.next-slick-arrow.outer:focus,.next-slick-arrow.outer:hover{color:#333;background:transparent;opacity:.32}.next-slick-arrow.outer.disabled{color:#ccc;background:transparent;opacity:.32}.next-slick-arrow.disabled{cursor:not-allowed}.next-slick-dots{display:block;position:absolute;margin:0;padding:0}.next-slick-dots-item{position:relative;display:inline-block;cursor:pointer}.next-slick-dots-item button{cursor:pointer;border:0 solid #fff;outline:none;padding:0;height:8px;width:8px;border-radius:50%;background:rgba(0,0,0,.32)}.next-slick-dots-item button:hover{background-color:rgba(0,0,0,.32);border-color:#fff}.next-slick-dots-item button:focus,.next-slick-dots-item button:hover{background:hsla(0,0%,100%,.5)}.next-slick-dots-item.active button{background:#5584ff;border-color:#fff;animation:zoom .3s cubic-bezier(.86,0,.07,1)}.next-slick-dots.hoz{width:100%;bottom:12px;left:0;text-align:center}.next-slick-dots.hoz .next-slick-dots-item{margin:0 4px}.next-slick-dots.ver{width:16px;top:0;right:20px;bottom:0;display:flex;justify-content:center;flex-direction:column}.next-slick-dots.ver .next-slick-dots-item{margin:0}.next-slick.next-slick-hoz.next-slick-outer{padding:0 24px}.next-slick.next-slick-hoz .next-slick-arrow.medium{width:28px;height:56px;line-height:56px}.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner{top:calc(50% - 28px)}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer{top:calc(50% - 28px)}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-prev{left:-4px}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-next{right:-4px}.next-slick.next-slick-hoz .next-slick-arrow.large{width:48px;height:96px;line-height:96px}.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.large.inner{top:calc(50% - 48px)}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.large.outer{top:calc(50% - 48px)}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-prev{left:-8px}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-next{right:-8px}.next-slick.next-slick-ver.next-slick-outer{padding:24px 0}.next-slick.next-slick-ver .next-slick-slide{display:block;height:auto}.next-slick.next-slick-ver .next-slick-arrow.medium{width:56px;height:28px;line-height:28px}.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.medium.inner{left:calc(50% - 28px)}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.medium.outer{left:calc(50% - 28px)}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-prev{top:-4px}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-next{bottom:-4px}.next-slick.next-slick-ver .next-slick-arrow.large{width:96px;height:48px;line-height:48px}.next-slick.next-slick-ver .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.large.inner{left:calc(50% - 48px)}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.large.outer{left:calc(50% - 48px)}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-prev{top:-16px}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-next{bottom:-16px} + */.next-slick{position:relative;display:block;-webkit-touch-callout:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.next-slick,.next-slick *,.next-slick :after,.next-slick :before{box-sizing:border-box}.next-slick-initialized .next-slick-slide{display:block}.next-slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0;transform:translateZ(0)}.next-slick-list:focus{outline:none}.next-slick-list.dragging{cursor:pointer;cursor:hand}.next-slick-track{position:relative;top:0;left:0;display:block;transform:translateZ(0)}.next-slick-slide{float:left;height:100%;min-height:1px;outline:0;transition:all .1s linear}.next-slick[dir=rtl] .next-slick-slide{float:right}.next-slick-slide img{display:block}.next-slick-arrow{display:block;position:absolute;cursor:pointer;text-align:center;transition:all .1s linear}.next-slick-arrow.inner{color:#fff;background:#000;opacity:.2;padding:0;border:none}.next-slick-arrow.inner:focus,.next-slick-arrow.inner:hover{color:#fff;background:#000;opacity:.4}.next-slick-arrow.inner.disabled{color:#ccc;background:#f7f8fa;opacity:.5}.next-slick-arrow.outer{color:#666;background:transparent;opacity:.32;padding:0;border:none;border-radius:0}.next-slick-arrow.outer:focus,.next-slick-arrow.outer:hover{color:#333;background:transparent;opacity:.32}.next-slick-arrow.outer.disabled{color:#ccc;background:transparent;opacity:.32}.next-slick-arrow.disabled{cursor:not-allowed}.next-slick-dots{display:block;position:absolute;margin:0;padding:0}.next-slick-dots-item{position:relative;display:inline-block;cursor:pointer}.next-slick-dots-item button{cursor:pointer;border:0 solid #fff;outline:none;padding:0;height:8px;width:8px;border-radius:50%;background:rgba(0,0,0,.32)}.next-slick-dots-item button:focus,.next-slick-dots-item button:hover{background-color:hsla(0,0%,100%,.5);border-color:#fff}.next-slick-dots-item.active button{background:#5584ff;border-color:#fff;animation:zoom .3s cubic-bezier(.86,0,.07,1)}.next-slick-dots.hoz{width:100%;bottom:12px;left:0;text-align:center}.next-slick-dots.hoz .next-slick-dots-item{margin:0 4px}.next-slick-dots.ver{width:16px;top:0;right:20px;bottom:0;display:flex;justify-content:center;flex-direction:column}.next-slick-dots.ver .next-slick-dots-item{margin:0}.next-slick.next-slick-hoz.next-slick-outer{padding:0 24px}.next-slick.next-slick-hoz .next-slick-arrow.medium{width:28px;height:56px;line-height:56px}.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner{top:calc(50% - 28px)}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer{top:calc(50% - 28px)}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-prev{left:-4px}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-next{right:-4px}.next-slick.next-slick-hoz .next-slick-arrow.large{width:48px;height:96px;line-height:96px}.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.large.inner{top:calc(50% - 48px)}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.large.outer{top:calc(50% - 48px)}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-prev{left:-8px}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-next{right:-8px}.next-slick.next-slick-ver.next-slick-outer{padding:24px 0}.next-slick.next-slick-ver .next-slick-slide{display:block;height:auto}.next-slick.next-slick-ver .next-slick-arrow.medium{width:56px;height:28px;line-height:28px}.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.medium.inner{left:calc(50% - 28px)}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.medium.outer{left:calc(50% - 28px)}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-prev{top:-4px}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-next{bottom:-4px}.next-slick.next-slick-ver .next-slick-arrow.large{width:96px;height:48px;line-height:48px}.next-slick.next-slick-ver .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.large.inner{left:calc(50% - 48px)}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.large.outer{left:calc(50% - 48px)}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-prev{top:-16px}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-next{bottom:-16px} /*! * Copyright 1999-2018 Alibaba Group Holding Ltd. diff --git a/console/src/main/resources/static/index.html b/console/src/main/resources/static/index.html index afc9ff02a04..9bf35045d40 100644 --- a/console/src/main/resources/static/index.html +++ b/console/src/main/resources/static/index.html @@ -35,7 +35,7 @@ - +

@@ -56,6 +56,6 @@ - + diff --git a/console/src/main/resources/static/js/main.js b/console/src/main/resources/static/js/main.js index 275f0008271..a132c314176 100644 --- a/console/src/main/resources/static/js/main.js +++ b/console/src/main/resources/static/js/main.js @@ -1,22 +1,22 @@ -!function(n){var a={};function r(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}r.m=n,r.c=a,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)r.d(n,a,function(e){return t[e]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=439)}([function(e,t,n){"use strict";e.exports=n(446)},function(e,t,n){"use strict";n.d(t,"b",function(){return E}),n.d(t,"d",function(){return x}),n.d(t,"c",function(){return C});n(52);var t=n(27),u=n.n(t),s=n(70),r=n(85),d=n(60),c=n(31),t=n(103),f=n.n(t),t=n(64),p=n.n(t);function h(){var e=window.location.href,e=(localStorage.removeItem("token"),e.split("#")[0]);console.log("base_url",e),window.location="".concat(e,"#/login")}var l,m,a,o,i,g,y,v,_,b,w,M,n=window,k=(l={},{once:function(e,t){this.listen.call(this,e,t,!0)},listen:function(e,t){var n=2>>0,a;for(a=0;a0)for(n=0;n=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+a}var ie=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,le=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,se={},ue={};function a(e,t,n,a){var r=a;if(typeof a==="string")r=function(){return this[a]()};if(e)ue[e]=r;if(t)ue[t[0]]=function(){return h(r.apply(this,arguments),t[1],t[2])};if(n)ue[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)}}function de(e){if(e.match(/\[[\s\S]/))return e.replace(/^\[|\]$/g,"");return e.replace(/\\/g,"")}function ce(a){var r=a.match(ie),e,o;for(e=0,o=r.length;e=0&&le.test(e)){e=e.replace(le,a);le.lastIndex=0;n-=1}return e}var he={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function me(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];if(t||!n)return t;this._longDateFormat[e]=n.match(ie).map(function(e){if(e==="MMMM"||e==="MM"||e==="DD"||e==="dddd")return e.slice(1);return e}).join("");return this._longDateFormat[e]}var ge="Invalid date";function ye(){return this._invalidDate}var ve="%d",_e=/\d{1,2}/;function be(e){return this._ordinal.replace("%d",e)}var we={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Me(e,t,n,a){var r=this._relativeTime[n];return p(r)?r(e,t,n,a):r.replace(/%d/i,e)}function ke(e,t){var n=this._relativeTime[e>0?"future":"past"];return p(n)?n(t):n.replace(/%s/i,t)}var Se={};function t(e,t){var n=e.toLowerCase();Se[n]=Se[n+"s"]=Se[t]=e}function m(e){return typeof e==="string"?Se[e]||Se[e.toLowerCase()]:undefined}function Ee(e){var t={},n,a;for(a in e)if(l(e,a)){n=m(a);if(n)t[n]=e[a]}return t}var xe={};function n(e,t){xe[e]=t}function Ce(e){var t=[],n;for(n in e)if(l(e,n))t.push({unit:n,priority:xe[n]});t.sort(function(e,t){return e.priority-t.priority});return t}function Le(e){return e%4===0&&e%100!==0||e%400===0}function g(e){if(e<0)return Math.ceil(e)||0;else return Math.floor(e)}function y(e){var t=+e,n=0;if(t!==0&&isFinite(t))n=g(t);return n}function Te(t,n){return function(e){if(e!=null){Oe(this,t,e);d.updateOffset(this,n);return this}else return De(this,t)}}function De(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Oe(e,t,n){if(e.isValid()&&!isNaN(n))if(t==="FullYear"&&Le(e.year())&&e.month()===1&&e.date()===29){n=y(n);e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ot(n,e.month()))}else e._d["set"+(e._isUTC?"UTC":"")+t](n)}function Ne(e){e=m(e);if(p(this[e]))return this[e]();return this}function Pe(e,t){if(typeof e==="object"){e=Ee(e);var n=Ce(e),a;for(a=0;a68?1900:2e3)};var Mt=Te("FullYear",true);function kt(){return Le(this.year())}function St(e,t,n,a,r,o,i){var l;if(e<100&&e>=0){l=new Date(e+400,t,n,a,r,o,i);if(isFinite(l.getFullYear()))l.setFullYear(e)}else l=new Date(e,t,n,a,r,o,i);return l}function Et(e){var t,n;if(e<100&&e>=0){n=Array.prototype.slice.call(arguments);n[0]=e+400;t=new Date(Date.UTC.apply(null,n));if(isFinite(t.getUTCFullYear()))t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function xt(e,t,n){var a=7+t-n,r=(7+Et(e,0,a).getUTCDay()-t)%7;return-r+a-1}function Ct(e,t,n,a,r){var o=(7+n-a)%7,i=xt(e,a,r),l=1+7*(t-1)+o+i,s,u;if(l<=0){s=e-1;u=wt(s)+l}else if(l>wt(e)){s=e+1;u=l-wt(e)}else{s=e;u=l}return{year:s,dayOfYear:u}}function Lt(e,t,n){var a=xt(e.year(),t,n),r=Math.floor((e.dayOfYear()-a-1)/7)+1,o,i;if(r<1){i=e.year()-1;o=r+T(i,t,n)}else if(r>T(e.year(),t,n)){o=r-T(e.year(),t,n);i=e.year()+1}else{i=e.year();o=r}return{week:o,year:i}}function T(e,t,n){var a=xt(e,t,n),r=xt(e+1,t,n);return(wt(e)-a+r)/7}function Tt(e){return Lt(e,this._week.dow,this._week.doy).week}a("w",["ww",2],"wo","week"),a("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),_("w",v),_("ww",v,r),_("W",v),_("WW",v,r),Ze(["w","ww","W","WW"],function(e,t,n,a){t[a.substr(0,1)]=y(e)});var Dt={dow:0,doy:6};function Ot(){return this._week.dow}function Nt(){return this._week.doy}function Pt(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function jt(e){var t=Lt(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}function Yt(e,t){if(typeof e!=="string")return e;if(!isNaN(e))return parseInt(e,10);e=t.weekdaysParse(e);if(typeof e==="number")return e;return null}function It(e,t){if(typeof e==="string")return t.weekdaysParse(e)%7||7;return isNaN(e)?null:e}function Rt(e,t){return e.slice(t,7).concat(e.slice(0,t))}a("d",0,"do","day"),a("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),a("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),a("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),a("e",0,0,"weekday"),a("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),_("d",v),_("e",v),_("E",v),_("dd",function(e,t){return t.weekdaysMinRegex(e)}),_("ddd",function(e,t){return t.weekdaysShortRegex(e)}),_("dddd",function(e,t){return t.weekdaysRegex(e)}),Ze(["dd","ddd","dddd"],function(e,t,n,a){var r=n._locale.weekdaysParse(e,a,n._strict);if(r!=null)t.d=r;else f(n).invalidWeekday=e}),Ze(["d","e","E"],function(e,t,n,a){t[a]=y(e)});var At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ht="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ft="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=qe,Wt=qe,Vt=qe;function Bt(e,t){var n=i(this._weekdays)?this._weekdays:this._weekdays[e&&e!==true&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===true?Rt(n,this._week.dow):e?n[e.day()]:n}function Ut(e){return e===true?Rt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Kt(e){return e===true?Rt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Gt(e,t,n){var a,r,o,i=e.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(a=0;a<7;++a){o=c([2e3,1]).day(a);this._minWeekdaysParse[a]=this.weekdaysMin(o,"").toLocaleLowerCase();this._shortWeekdaysParse[a]=this.weekdaysShort(o,"").toLocaleLowerCase();this._weekdaysParse[a]=this.weekdays(o,"").toLocaleLowerCase()}}if(n)if(t==="dddd"){r=L.call(this._weekdaysParse,i);return r!==-1?r:null}else if(t==="ddd"){r=L.call(this._shortWeekdaysParse,i);return r!==-1?r:null}else{r=L.call(this._minWeekdaysParse,i);return r!==-1?r:null}else if(t==="dddd"){r=L.call(this._weekdaysParse,i);if(r!==-1)return r;r=L.call(this._shortWeekdaysParse,i);if(r!==-1)return r;r=L.call(this._minWeekdaysParse,i);return r!==-1?r:null}else if(t==="ddd"){r=L.call(this._shortWeekdaysParse,i);if(r!==-1)return r;r=L.call(this._weekdaysParse,i);if(r!==-1)return r;r=L.call(this._minWeekdaysParse,i);return r!==-1?r:null}else{r=L.call(this._minWeekdaysParse,i);if(r!==-1)return r;r=L.call(this._weekdaysParse,i);if(r!==-1)return r;r=L.call(this._shortWeekdaysParse,i);return r!==-1?r:null}}function qt(e,t,n){var a,r,o;if(this._weekdaysParseExact)return Gt.call(this,e,t,n);if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(a=0;a<7;a++){r=c([2e3,1]).day(a);if(n&&!this._fullWeekdaysParse[a]){this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i");this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i");this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")}if(!this._weekdaysParse[a]){o="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,"");this._weekdaysParse[a]=new RegExp(o.replace(".",""),"i")}if(n&&t==="dddd"&&this._fullWeekdaysParse[a].test(e))return a;else if(n&&t==="ddd"&&this._shortWeekdaysParse[a].test(e))return a;else if(n&&t==="dd"&&this._minWeekdaysParse[a].test(e))return a;else if(!n&&this._weekdaysParse[a].test(e))return a}}function $t(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();if(e!=null){e=Yt(e,this.localeData());return this.add(e-t,"d")}else return t}function Jt(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Xt(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=It(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Qt(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!l(this,"_weekdaysRegex"))this._weekdaysRegex=zt;return this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex}}function Zt(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!l(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=Wt;return this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function en(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!l(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=Vt;return this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function tn(){function e(e,t){return t.length-e.length}var t=[],n=[],a=[],r=[],o,i,l,s,u;for(o=0;o<7;o++){i=c([2e3,1]).day(o);l=b(this.weekdaysMin(i,""));s=b(this.weekdaysShort(i,""));u=b(this.weekdays(i,""));t.push(l);n.push(s);a.push(u);r.push(l);r.push(s);r.push(u)}t.sort(e);n.sort(e);a.sort(e);r.sort(e);this._weekdaysRegex=new RegExp("^("+r.join("|")+")","i");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i");this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i");this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function nn(){return this.hours()%12||12}function an(){return this.hours()||24}function rn(e,t){a(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function on(e,t){return t._meridiemParse}function ln(e){return(e+"").toLowerCase().charAt(0)==="p"}a("H",["HH",2],0,"hour"),a("h",["hh",2],0,nn),a("k",["kk",2],0,an),a("hmm",0,0,function(){return""+nn.apply(this)+h(this.minutes(),2)}),a("hmmss",0,0,function(){return""+nn.apply(this)+h(this.minutes(),2)+h(this.seconds(),2)}),a("Hmm",0,0,function(){return""+this.hours()+h(this.minutes(),2)}),a("Hmmss",0,0,function(){return""+this.hours()+h(this.minutes(),2)+h(this.seconds(),2)}),rn("a",true),rn("A",false),t("hour","h"),n("hour",13),_("a",on),_("A",on),_("H",v),_("h",v),_("k",v),_("HH",v,r),_("hh",v,r),_("kk",v,r),_("hmm",Ae),_("hmmss",He),_("Hmm",Ae),_("Hmmss",He),w(["H","HH"],E),w(["k","kk"],function(e,t,n){var a=y(e);t[E]=a===24?0:a}),w(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e);n._meridiem=e}),w(["h","hh"],function(e,t,n){t[E]=y(e);f(n).bigHour=true}),w("hmm",function(e,t,n){var a=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a));f(n).bigHour=true}),w("hmmss",function(e,t,n){var a=e.length-4,r=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a,2));t[C]=y(e.substr(r));f(n).bigHour=true}),w("Hmm",function(e,t,n){var a=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a))}),w("Hmmss",function(e,t,n){var a=e.length-4,r=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a,2));t[C]=y(e.substr(r))});var sn,un=Te("Hours",true);function dn(e,t,n){if(e>11)return n?"pm":"PM";else return n?"am":"AM"}var cn={calendar:re,longDateFormat:he,invalidDate:ge,ordinal:ve,dayOfMonthOrdinalParse:_e,relativeTime:we,months:it,monthsShort:lt,week:Dt,weekdays:At,weekdaysMin:Ft,weekdaysShort:Ht,meridiemParse:/[ap]\.?m?\.?/i},D={},fn={},pn;function hn(e,t){var n,a=Math.min(e.length,t.length);for(n=0;n0){r=yn(o.slice(0,n).join("-"));if(r)return r;if(a&&a.length>=n&&hn(o,a)>=n-1)break;n--}t++}return pn}function yn(t){var e=null,n;if(D[t]===undefined&&typeof ui!=="undefined"&&ui&&ui.exports)try{e=pn._abbr;n=di;ci(513)("./"+t);vn(e)}catch(e){D[t]=null}return D[t]}function vn(e,t){var n;if(e){if(o(t))n=wn(e);else n=_n(e,t);if(n)pn=n;else if(typeof console!=="undefined"&&console.warn)console.warn("Locale "+e+" not found. Did you forget to load it?")}return pn._abbr}function _n(e,t){if(t!==null){var n,a=cn;t.abbr=e;if(D[e]!=null){ee("defineLocaleOverride","use moment.updateLocale(localeName, config) to change "+"an existing locale. moment.defineLocale(localeName, "+"config) should only be used for creating a new locale "+"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.");a=D[e]._config}else if(t.parentLocale!=null)if(D[t.parentLocale]!=null)a=D[t.parentLocale]._config;else{n=yn(t.parentLocale);if(n!=null)a=n._config;else{if(!fn[t.parentLocale])fn[t.parentLocale]=[];fn[t.parentLocale].push({name:e,config:t});return null}}D[e]=new ae(ne(a,t));if(fn[e])fn[e].forEach(function(e){_n(e.name,e.config)});vn(e);return D[e]}else{delete D[e];return null}}function bn(e,t){if(t!=null){var n,a,r=cn;if(D[e]!=null&&D[e].parentLocale!=null)D[e].set(ne(D[e]._config,t));else{a=yn(e);if(a!=null)r=a._config;t=ne(r,t);if(a==null)t.abbr=e;n=new ae(t);n.parentLocale=D[e];D[e]=n}vn(e)}else if(D[e]!=null)if(D[e].parentLocale!=null){D[e]=D[e].parentLocale;if(e===vn())vn(e)}else if(D[e]!=null)delete D[e];return D[e]}function wn(e){var t;if(e&&e._locale&&e._locale._abbr)e=e._locale._abbr;if(!e)return pn;if(!i(e)){t=yn(e);if(t)return t;e=[e]}return gn(e)}function Mn(){return Z(D)}function kn(e){var t,n=e._a;if(n&&f(e).overflow===-2){t=n[k]<0||n[k]>11?k:n[S]<1||n[S]>ot(n[M],n[k])?S:n[E]<0||n[E]>24||n[E]===24&&(n[x]!==0||n[C]!==0||n[tt]!==0)?E:n[x]<0||n[x]>59?x:n[C]<0||n[C]>59?C:n[tt]<0||n[tt]>999?tt:-1;if(f(e)._overflowDayOfYear&&(tS))t=S;if(f(e)._overflowWeeks&&t===-1)t=nt;if(f(e)._overflowWeekday&&t===-1)t=at;f(e).overflow=t}return e}var Sn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,En=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,xn=/Z|[+-]\d\d(?::?\d\d)?/,Cn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],Ln=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Tn=/^\/?Date\((-?\d+)/i,Dn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,On={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Nn(e){var t,n,a=e._i,r=Sn.exec(a)||En.exec(a),o,i,l,s;if(r){f(e).iso=true;for(t=0,n=Cn.length;twt(i)||e._dayOfYear===0)f(e)._overflowDayOfYear=true;n=Et(i,0,e._dayOfYear);e._a[k]=n.getUTCMonth();e._a[S]=n.getUTCDate()}for(t=0;t<3&&e._a[t]==null;++t)e._a[t]=a[t]=r[t];for(;t<7;t++)e._a[t]=a[t]=e._a[t]==null?t===2?1:0:e._a[t];if(e._a[E]===24&&e._a[x]===0&&e._a[C]===0&&e._a[tt]===0){e._nextDay=true;e._a[E]=0}e._d=(e._useUTC?Et:St).apply(null,a);o=e._useUTC?e._d.getUTCDay():e._d.getDay();if(e._tzm!=null)e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm);if(e._nextDay)e._a[E]=24;if(e._w&&typeof e._w.d!=="undefined"&&e._w.d!==o)f(e).weekdayMismatch=true}function Vn(e){var t,n,a,r,o,i,l,s,u;t=e._w;if(t.GG!=null||t.W!=null||t.E!=null){o=1;i=4;n=Fn(t.GG,e._a[M],Lt(O(),1,4).year);a=Fn(t.W,1);r=Fn(t.E,1);if(r<1||r>7)s=true}else{o=e._locale._week.dow;i=e._locale._week.doy;u=Lt(O(),o,i);n=Fn(t.gg,e._a[M],u.year);a=Fn(t.w,u.week);if(t.d!=null){r=t.d;if(r<0||r>6)s=true}else if(t.e!=null){r=t.e+o;if(t.e<0||t.e>6)s=true}else r=o}if(a<1||a>T(n,o,i))f(e)._overflowWeeks=true;else if(s!=null)f(e)._overflowWeekday=true;else{l=Ct(n,a,r,o,i);e._a[M]=l.year;e._dayOfYear=l.dayOfYear}}function Bn(e){if(e._f===d.ISO_8601){Nn(e);return}if(e._f===d.RFC_2822){An(e);return}e._a=[];f(e).empty=true;var t=""+e._i,n,a,r,o,i,l=t.length,s=0,u;r=pe(e._f,e._locale).match(ie)||[];for(n=0;n0)f(e).unusedInput.push(i);t=t.slice(t.indexOf(a)+a.length);s+=a.length}if(ue[o]){if(a)f(e).empty=false;else f(e).unusedTokens.push(o);et(o,a,e)}else if(e._strict&&!a)f(e).unusedTokens.push(o)}f(e).charsLeftOver=l-s;if(t.length>0)f(e).unusedInput.push(t);if(e._a[E]<=12&&f(e).bigHour===true&&e._a[E]>0)f(e).bigHour=undefined;f(e).parsedDateParts=e._a.slice(0);f(e).meridiem=e._meridiem;e._a[E]=Un(e._locale,e._a[E],e._meridiem);u=f(e).era;if(u!==null)e._a[M]=e._locale.erasConvertYear(u,e._a[M]);Wn(e);kn(e)}function Un(e,t,n){var a;if(n==null)return t;if(e.meridiemHour!=null)return e.meridiemHour(t,n);else if(e.isPM!=null){a=e.isPM(n);if(a&&t<12)t+=12;if(!a&&t===12)t=0;return t}else return t}function Kn(e){var t,n,a,r,o,i,l=false;if(e._f.length===0){f(e).invalidFormat=true;e._d=new Date(NaN);return}for(r=0;rthis?this:e;else return K()});function ea(e,t){var n,a;if(t.length===1&&i(t[0]))t=t[0];if(!t.length)return O();n=t[0];for(a=1;athis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Sa(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e={},t;$(e,this);e=$n(e);if(e._a){t=e._isUTC?c(e._a):O(e._a);this._isDSTShifted=this.isValid()&&ca(e._a,t.toArray())>0}else this._isDSTShifted=false;return this._isDSTShifted}function Ea(){return this.isValid()?!this._isUTC:false}function xa(){return this.isValid()?this._isUTC:false}function Ca(){return this.isValid()?this._isUTC&&this._offset===0:false}d.updateOffset=function(){};var La=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Ta=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function N(e,t){var n=e,a=null,r,o,i;if(ua(e))n={ms:e._milliseconds,d:e._days,M:e._months};else if(s(e)||!isNaN(+e)){n={};if(t)n[t]=+e;else n.milliseconds=+e}else if(a=La.exec(e)){r=a[1]==="-"?-1:1;n={y:0,d:y(a[S])*r,h:y(a[E])*r,m:y(a[x])*r,s:y(a[C])*r,ms:y(da(a[tt]*1e3))*r}}else if(a=Ta.exec(e)){r=a[1]==="-"?-1:1;n={y:Da(a[2],r),M:Da(a[3],r),w:Da(a[4],r),d:Da(a[5],r),h:Da(a[6],r),m:Da(a[7],r),s:Da(a[8],r)}}else if(n==null)n={};else if(typeof n==="object"&&("from"in n||"to"in n)){i=Na(O(n.from),O(n.to));n={};n.ms=i.milliseconds;n.M=i.months}o=new sa(n);if(ua(e)&&l(e,"_locale"))o._locale=e._locale;if(ua(e)&&l(e,"_isValid"))o._isValid=e._isValid;return o}function Da(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Oa(e,t){var n={};n.months=t.month()-e.month()+(t.year()-e.year())*12;if(e.clone().add(n.months,"M").isAfter(t))--n.months;n.milliseconds=+t-+e.clone().add(n.months,"M");return n}function Na(e,t){var n;if(!(e.isValid()&&t.isValid()))return{milliseconds:0,months:0};t=ma(t,e);if(e.isBefore(t))n=Oa(e,t);else{n=Oa(t,e);n.milliseconds=-n.milliseconds;n.months=-n.months}return n}function Pa(r,o){return function(e,t){var n,a;if(t!==null&&!isNaN(+t)){ee(o,"moment()."+o+"(period, number) is deprecated. Please use moment()."+o+"(number, period). "+"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.");a=e;e=t;t=a}n=N(e,t);ja(this,n,r);return this}}function ja(e,t,n,a){var r=t._milliseconds,o=da(t._days),i=da(t._months);if(!e.isValid())return;a=a==null?true:a;if(i)mt(e,De(e,"Month")+i*n);if(o)Oe(e,"Date",De(e,"Date")+o*n);if(r)e._d.setTime(e._d.valueOf()+r*n);if(a)d.updateOffset(e,o||i)}N.fn=sa.prototype,N.invalid=la;var Ya=Pa(1,"add"),Ia=Pa(-1,"subtract");function Ra(e){return typeof e==="string"||e instanceof String}function Aa(e){return u(e)||z(e)||Ra(e)||s(e)||Fa(e)||Ha(e)||e===null||e===undefined}function Ha(e){var t=H(e)&&!F(e),n=false,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],r,o;for(r=0;rn.valueOf();else return n.valueOf()9999)return fe(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(p(Date.prototype.toISOString))if(t)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",fe(n,"Z"));return fe(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function tr(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,a,r,o;if(!this.isLocal()){e=this.utcOffset()===0?"moment.utc":"moment.parseZone";t="Z"}n="["+e+'("]';a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";r="-MM-DD[T]HH:mm:ss.SSS";o=t+'[")]';return this.format(n+a+r+o)}function nr(e){if(!e)e=this.isUtc()?d.defaultFormatUtc:d.defaultFormat;var t=fe(this,e);return this.localeData().postformat(t)}function ar(e,t){if(this.isValid()&&(u(e)&&e.isValid()||O(e).isValid()))return N({to:this,from:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function rr(e){return this.from(O(),e)}function or(e,t){if(this.isValid()&&(u(e)&&e.isValid()||O(e).isValid()))return N({from:this,to:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function ir(e){return this.to(O(),e)}function lr(e){var t;if(e===undefined)return this._locale._abbr;else{t=wn(e);if(t!=null)this._locale=t;return this}}d.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",d.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var sr=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){if(e===undefined)return this.localeData();else return this.locale(e)});function ur(){return this._locale}var dr=1e3,cr=60*dr,fr=60*cr,pr=(365*400+97)*24*fr;function hr(e,t){return(e%t+t)%t}function mr(e,t,n){if(e<100&&e>=0)return new Date(e+400,t,n)-pr;else return new Date(e,t,n).valueOf()}function gr(e,t,n){if(e<100&&e>=0)return Date.UTC(e+400,t,n)-pr;else return Date.UTC(e,t,n)}function yr(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?gr:mr;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf();t-=hr(t+(this._isUTC?0:this.utcOffset()*cr),fr);break;case"minute":t=this._d.valueOf();t-=hr(t,cr);break;case"second":t=this._d.valueOf();t-=hr(t,dr);break}this._d.setTime(t);d.updateOffset(this,true);return this}function vr(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?gr:mr;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf();t+=fr-hr(t+(this._isUTC?0:this.utcOffset()*cr),fr)-1;break;case"minute":t=this._d.valueOf();t+=cr-hr(t,cr)-1;break;case"second":t=this._d.valueOf();t+=dr-hr(t,dr)-1;break}this._d.setTime(t);d.updateOffset(this,true);return this}function _r(){return this._d.valueOf()-(this._offset||0)*6e4}function br(){return Math.floor(this.valueOf()/1e3)}function wr(){return new Date(this.valueOf())}function Mr(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function kr(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Sr(){return this.isValid()?this.toISOString():null}function Er(){return U(this)}function xr(){return V({},f(this))}function Cr(){return f(this).overflow}function Lr(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Tr(e,t){var n,a,r,o=this._eras||wn("en")._eras;for(n=0,a=o.length;n=0)return o[a]}}function Or(e,t){var n=e.since<=e.until?+1:-1;if(t===undefined)return d(e.since).year();else return d(e.since).year()+(t-e.offset)*n}function Nr(){var e,t,n,a=this.localeData().eras();for(e=0,t=a.length;eo)t=o;return Qr.call(this,e,t,n,a,r)}}function Qr(e,t,n,a,r){var o=Ct(e,t,n,a,r),i=Et(o.year,0,o.dayOfYear);this.year(i.getUTCFullYear());this.month(i.getUTCMonth());this.date(i.getUTCDate());return this}function Zr(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}a("N",0,0,"eraAbbr"),a("NN",0,0,"eraAbbr"),a("NNN",0,0,"eraAbbr"),a("NNNN",0,0,"eraName"),a("NNNNN",0,0,"eraNarrow"),a("y",["y",1],"yo","eraYear"),a("y",["yy",2],0,"eraYear"),a("y",["yyy",3],0,"eraYear"),a("y",["yyyy",4],0,"eraYear"),_("N",Hr),_("NN",Hr),_("NNN",Hr),_("NNNN",Fr),_("NNNNN",zr),w(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,a){var r=n._locale.erasParse(e,a,n._strict);if(r)f(n).era=r;else f(n).invalidEra=e}),_("y",Ve),_("yy",Ve),_("yyy",Ve),_("yyyy",Ve),_("yo",Wr),w(["y","yy","yyy","yyyy"],M),w(["yo"],function(e,t,n,a){var r;if(n._locale._eraYearOrdinalRegex)r=e.match(n._locale._eraYearOrdinalRegex);if(n._locale.eraYearOrdinalParse)t[M]=n._locale.eraYearOrdinalParse(e,r);else t[M]=parseInt(e,10)}),a(0,["gg",2],0,function(){return this.weekYear()%100}),a(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Br("gggg","weekYear"),Br("ggggg","weekYear"),Br("GGGG","isoWeekYear"),Br("GGGGG","isoWeekYear"),t("weekYear","gg"),t("isoWeekYear","GG"),n("weekYear",1),n("isoWeekYear",1),_("G",Be),_("g",Be),_("GG",v,r),_("gg",v,r),_("GGGG",ze,Ie),_("gggg",ze,Ie),_("GGGGG",We,Re),_("ggggg",We,Re),Ze(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,a){t[a.substr(0,2)]=y(e)}),Ze(["gg","GG"],function(e,t,n,a){t[a]=d.parseTwoDigitYear(e)}),a("Q",0,"Qo","quarter"),t("quarter","Q"),n("quarter",7),_("Q",je),w("Q",function(e,t){t[k]=(y(e)-1)*3}),a("D",["DD",2],"Do","date"),t("date","D"),n("date",9),_("D",v),_("DD",v,r),_("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),w(["D","DD"],S),w("Do",function(e,t){t[S]=y(e.match(v)[0])});var eo=Te("Date",true);function to(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}a("DDD",["DDDD",3],"DDDo","dayOfYear"),t("dayOfYear","DDD"),n("dayOfYear",4),_("DDD",Fe),_("DDDD",Ye),w(["DDD","DDDD"],function(e,t,n){n._dayOfYear=y(e)}),a("m",["mm",2],0,"minute"),t("minute","m"),n("minute",14),_("m",v),_("mm",v,r),w(["m","mm"],x);var no=Te("Minutes",false),ao=(a("s",["ss",2],0,"second"),t("second","s"),n("second",15),_("s",v),_("ss",v,r),w(["s","ss"],C),Te("Seconds",false)),ro,oo;for(a("S",0,0,function(){return~~(this.millisecond()/100)}),a(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),a(0,["SSS",3],0,"millisecond"),a(0,["SSSS",4],0,function(){return this.millisecond()*10}),a(0,["SSSSS",5],0,function(){return this.millisecond()*100}),a(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),a(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),a(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),a(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),t("millisecond","ms"),n("millisecond",16),_("S",Fe,je),_("SS",Fe,r),_("SSS",Fe,Ye),ro="SSSS";ro.length<=9;ro+="S")_(ro,Ve);function io(e,t){t[tt]=y(("0."+e)*1e3)}for(ro="S";ro.length<=9;ro+="S")w(ro,io);function lo(){return this._isUTC?"UTC":""}function so(){return this._isUTC?"Coordinated Universal Time":""}oo=Te("Milliseconds",false),a("z",0,0,"zoneAbbr"),a("zz",0,0,"zoneName");var P=J.prototype;if(P.add=Ya,P.calendar=Va,P.clone=Ba,P.diff=Xa,P.endOf=vr,P.format=nr,P.from=ar,P.fromNow=rr,P.to=or,P.toNow=ir,P.get=Ne,P.invalidAt=Cr,P.isAfter=Ua,P.isBefore=Ka,P.isBetween=Ga,P.isSame=qa,P.isSameOrAfter=$a,P.isSameOrBefore=Ja,P.isValid=Er,P.lang=sr,P.locale=lr,P.localeData=ur,P.max=Zn,P.min=Qn,P.parsingFlags=xr,P.set=Pe,P.startOf=yr,P.subtract=Ia,P.toArray=Mr,P.toObject=kr,P.toDate=wr,P.toISOString=er,P.inspect=tr,typeof Symbol!=="undefined"&&Symbol.for!=null)P[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};function uo(e){return O(e*1e3)}function co(){return O.apply(null,arguments).parseZone()}function fo(e){return e}P.toJSON=Sr,P.toString=Za,P.unix=br,P.valueOf=_r,P.creationData=Lr,P.eraName=Nr,P.eraNarrow=Pr,P.eraAbbr=jr,P.eraYear=Yr,P.year=Mt,P.isLeapYear=kt,P.weekYear=Ur,P.isoWeekYear=Kr,P.quarter=P.quarters=Zr,P.month=gt,P.daysInMonth=yt,P.week=P.weeks=Pt,P.isoWeek=P.isoWeeks=jt,P.weeksInYear=$r,P.weeksInWeekYear=Jr,P.isoWeeksInYear=Gr,P.isoWeeksInISOWeekYear=qr,P.date=eo,P.day=P.days=$t,P.weekday=Jt,P.isoWeekday=Xt,P.dayOfYear=to,P.hour=P.hours=un,P.minute=P.minutes=no,P.second=P.seconds=ao,P.millisecond=P.milliseconds=oo,P.utcOffset=ya,P.utc=_a,P.local=ba,P.parseZone=wa,P.hasAlignedHourOffset=Ma,P.isDST=ka,P.isLocal=Ea,P.isUtcOffset=xa,P.isUtc=Ca,P.isUTC=Ca,P.zoneAbbr=lo,P.zoneName=so,P.dates=e("dates accessor is deprecated. Use date instead.",eo),P.months=e("months accessor is deprecated. Use month instead",gt),P.years=e("years accessor is deprecated. Use year instead",Mt),P.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",va),P.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Sa);var j=ae.prototype;function po(e,t,n,a){var r=wn(),o=c().set(a,t);return r[n](o,e)}function ho(e,t,n){if(s(e)){t=e;e=undefined}e=e||"";if(t!=null)return po(e,t,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=po(e,a,n,"month");return r}function mo(e,t,n,a){if(typeof e==="boolean"){if(s(t)){n=t;t=undefined}t=t||""}else{t=e;n=t;e=false;if(s(t)){n=t;t=undefined}t=t||""}var r=wn(),o=e?r._week.dow:0,i,l=[];if(n!=null)return po(t,(n+o)%7,a,"day");for(i=0;i<7;i++)l[i]=po(t,(i+o)%7,a,"day");return l}function go(e,t){return ho(e,t,"months")}function yo(e,t){return ho(e,t,"monthsShort")}function vo(e,t,n){return mo(e,t,n,"weekdays")}function _o(e,t,n){return mo(e,t,n,"weekdaysShort")}function bo(e,t,n){return mo(e,t,n,"weekdaysMin")}j.calendar=oe,j.longDateFormat=me,j.invalidDate=ye,j.ordinal=be,j.preparse=fo,j.postformat=fo,j.relativeTime=Me,j.pastFuture=ke,j.set=te,j.eras=Tr,j.erasParse=Dr,j.erasConvertYear=Or,j.erasAbbrRegex=Rr,j.erasNameRegex=Ir,j.erasNarrowRegex=Ar,j.months=ct,j.monthsShort=ft,j.monthsParse=ht,j.monthsRegex=_t,j.monthsShortRegex=vt,j.week=Tt,j.firstDayOfYear=Nt,j.firstDayOfWeek=Ot,j.weekdays=Bt,j.weekdaysMin=Kt,j.weekdaysShort=Ut,j.weekdaysParse=qt,j.weekdaysRegex=Qt,j.weekdaysShortRegex=Zt,j.weekdaysMinRegex=en,j.isPM=ln,j.meridiem=dn,vn("en",{eras:[{since:"0001-01-01",until:+Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-Infinity,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=y(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),d.lang=e("moment.lang is deprecated. Use moment.locale instead.",vn),d.langData=e("moment.langData is deprecated. Use moment.localeData instead.",wn);var wo=Math.abs;function Mo(){var e=this._data;this._milliseconds=wo(this._milliseconds);this._days=wo(this._days);this._months=wo(this._months);e.milliseconds=wo(e.milliseconds);e.seconds=wo(e.seconds);e.minutes=wo(e.minutes);e.hours=wo(e.hours);e.months=wo(e.months);e.years=wo(e.years);return this}function ko(e,t,n,a){var r=N(t,n);e._milliseconds+=a*r._milliseconds;e._days+=a*r._days;e._months+=a*r._months;return e._bubble()}function So(e,t){return ko(this,e,t,1)}function Eo(e,t){return ko(this,e,t,-1)}function xo(e){if(e<0)return Math.floor(e);else return Math.ceil(e)}function Co(){var e=this._milliseconds,t=this._days,n=this._months,a=this._data,r,o,i,l,s;if(!(e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0)){e+=xo(To(n)+t)*864e5;t=0;n=0}a.milliseconds=e%1e3;r=g(e/1e3);a.seconds=r%60;o=g(r/60);a.minutes=o%60;i=g(o/60);a.hours=i%24;t+=g(i/24);s=g(Lo(t));n+=s;t-=xo(To(s));l=g(n/12);n%=12;a.days=t;a.months=n;a.years=l;return this}function Lo(e){return e*4800/146097}function To(e){return e*146097/4800}function Do(e){if(!this.isValid())return NaN;var t,n,a=this._milliseconds;e=m(e);if(e==="month"||e==="quarter"||e==="year"){t=this._days+a/864e5;n=this._months+Lo(t);switch(e){case"month":return n;case"quarter":return n/3;case"year":return n/12}}else{t=this._days+Math.round(To(this._months));switch(e){case"week":return t/7+a/6048e5;case"day":return t+a/864e5;case"hour":return t*24+a/36e5;case"minute":return t*1440+a/6e4;case"second":return t*86400+a/1e3;case"millisecond":return Math.floor(t*864e5)+a;default:throw new Error("Unknown unit "+e)}}}function Oo(){if(!this.isValid())return NaN;return this._milliseconds+this._days*864e5+this._months%12*2592e6+y(this._months/12)*31536e6}function No(e){return function(){return this.as(e)}}var Po=No("ms"),jo=No("s"),Yo=No("m"),Io=No("h"),Ro=No("d"),Ao=No("w"),Ho=No("M"),Fo=No("Q"),zo=No("y");function Wo(){return N(this)}function Vo(e){e=m(e);return this.isValid()?this[e+"s"]():NaN}function Bo(e){return function(){return this.isValid()?this._data[e]:NaN}}var Uo=Bo("milliseconds"),Ko=Bo("seconds"),Go=Bo("minutes"),qo=Bo("hours"),$o=Bo("days"),Jo=Bo("months"),Xo=Bo("years");function Qo(){return g(this.days()/7)}var Zo=Math.round,ei={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ti(e,t,n,a,r){return r.relativeTime(t||1,!!n,e,a)}function ni(e,t,n,a){var r=N(e).abs(),o=Zo(r.as("s")),i=Zo(r.as("m")),l=Zo(r.as("h")),s=Zo(r.as("d")),u=Zo(r.as("M")),d=Zo(r.as("w")),c=Zo(r.as("y")),f=o<=n.ss&&["s",o]||o0;f[4]=a;return ti.apply(null,f)}function ai(e){if(e===undefined)return Zo;if(typeof e==="function"){Zo=e;return true}return false}function ri(e,t){if(ei[e]===undefined)return false;if(t===undefined)return ei[e];ei[e]=t;if(e==="s")ei.ss=t-1;return true}function oi(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=false,a=ei,r,o;if(typeof e==="object"){t=e;e=false}if(typeof e==="boolean")n=e;if(typeof t==="object"){a=Object.assign({},ei,t);if(t.s!=null&&t.ss==null)a.ss=t.s-1}r=this.localeData();o=ni(this,!n,a,r);if(n)o=r.pastFuture(+this,o);return r.postformat(o)}var ii=Math.abs;function li(e){return(e>0)-(e<0)||+e}function si(){if(!this.isValid())return this.localeData().invalidDate();var e=ii(this._milliseconds)/1e3,t=ii(this._days),n=ii(this._months),a,r,o,i,l=this.asSeconds(),s,u,d,c;if(!l)return"P0D";a=g(e/60);r=g(a/60);e%=60;a%=60;o=g(n/12);n%=12;i=e?e.toFixed(3).replace(/\.?0+$/,""):"";s=l<0?"-":"";u=li(this._months)!==li(l)?"-":"";d=li(this._days)!==li(l)?"-":"";c=li(this._milliseconds)!==li(l)?"-":"";return s+"P"+(o?u+o+"Y":"")+(n?u+n+"M":"")+(t?d+t+"D":"")+(r||a||e?"T":"")+(r?c+r+"H":"")+(a?c+a+"M":"")+(e?c+i+"S":"")}var Y=sa.prototype;return Y.isValid=ia,Y.abs=Mo,Y.add=So,Y.subtract=Eo,Y.as=Do,Y.asMilliseconds=Po,Y.asSeconds=jo,Y.asMinutes=Yo,Y.asHours=Io,Y.asDays=Ro,Y.asWeeks=Ao,Y.asMonths=Ho,Y.asQuarters=Fo,Y.asYears=zo,Y.valueOf=Oo,Y._bubble=Co,Y.clone=Wo,Y.get=Vo,Y.milliseconds=Uo,Y.seconds=Ko,Y.minutes=Go,Y.hours=qo,Y.days=$o,Y.weeks=Qo,Y.months=Jo,Y.years=Xo,Y.humanize=oi,Y.toISOString=si,Y.toString=si,Y.toJSON=si,Y.locale=lr,Y.localeData=ur,Y.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",si),Y.lang=sr,a("X",0,0,"unix"),a("x",0,0,"valueOf"),_("x",Be),_("X",Ge),w("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)}),w("x",function(e,t,n){n._d=new Date(y(e))}), +di.exports=function(){"use strict";var I,R;function c(){return I.apply(null,arguments)}function A(e){I=e}function i(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function H(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function F(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;else{var t;for(t in e)if(s(e,t))return false;return true}}function l(e){return e===void 0}function u(e){return typeof e==="number"||Object.prototype.toString.call(e)==="[object Number]"}function z(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function W(e,t){var n=[],a,r=e.length;for(a=0;a>>0,a;for(a=0;a0)for(n=0;n=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+a}var ie=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,le=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,se={},ue={};function a(e,t,n,a){var r=a;if(typeof a==="string")r=function(){return this[a]()};if(e)ue[e]=r;if(t)ue[t[0]]=function(){return o(r.apply(this,arguments),t[1],t[2])};if(n)ue[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)}}function de(e){if(e.match(/\[[\s\S]/))return e.replace(/^\[|\]$/g,"");return e.replace(/\\/g,"")}function ce(a){var r=a.match(ie),e,o;for(e=0,o=r.length;e=0&&le.test(e)){e=e.replace(le,a);le.lastIndex=0;n-=1}return e}var he={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function me(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];if(t||!n)return t;this._longDateFormat[e]=n.match(ie).map(function(e){if(e==="MMMM"||e==="MM"||e==="DD"||e==="dddd")return e.slice(1);return e}).join("");return this._longDateFormat[e]}var ge="Invalid date";function ye(){return this._invalidDate}var ve="%d",_e=/\d{1,2}/;function be(e){return this._ordinal.replace("%d",e)}var we={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Me(e,t,n,a){var r=this._relativeTime[n];return h(r)?r(e,t,n,a):r.replace(/%d/i,e)}function ke(e,t){var n=this._relativeTime[e>0?"future":"past"];return h(n)?n(t):n.replace(/%s/i,t)}var Se={};function t(e,t){var n=e.toLowerCase();Se[n]=Se[n+"s"]=Se[t]=e}function m(e){return typeof e==="string"?Se[e]||Se[e.toLowerCase()]:undefined}function Ee(e){var t={},n,a;for(a in e)if(s(e,a)){n=m(a);if(n)t[n]=e[a]}return t}var xe={};function n(e,t){xe[e]=t}function Ce(e){var t=[],n;for(n in e)if(s(e,n))t.push({unit:n,priority:xe[n]});t.sort(function(e,t){return e.priority-t.priority});return t}function Le(e){return e%4===0&&e%100!==0||e%400===0}function g(e){if(e<0)return Math.ceil(e)||0;else return Math.floor(e)}function y(e){var t=+e,n=0;if(t!==0&&isFinite(t))n=g(t);return n}function Te(t,n){return function(e){if(e!=null){Oe(this,t,e);c.updateOffset(this,n);return this}else return De(this,t)}}function De(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Oe(e,t,n){if(e.isValid()&&!isNaN(n))if(t==="FullYear"&&Le(e.year())&&e.month()===1&&e.date()===29){n=y(n);e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ot(n,e.month()))}else e._d["set"+(e._isUTC?"UTC":"")+t](n)}function Ne(e){e=m(e);if(h(this[e]))return this[e]();return this}function Pe(e,t){if(typeof e==="object"){e=Ee(e);var n=Ce(e),a,r=n.length;for(a=0;a68?1900:2e3)};var Mt=Te("FullYear",true);function kt(){return Le(this.year())}function St(e,t,n,a,r,o,i){var l;if(e<100&&e>=0){l=new Date(e+400,t,n,a,r,o,i);if(isFinite(l.getFullYear()))l.setFullYear(e)}else l=new Date(e,t,n,a,r,o,i);return l}function Et(e){var t,n;if(e<100&&e>=0){n=Array.prototype.slice.call(arguments);n[0]=e+400;t=new Date(Date.UTC.apply(null,n));if(isFinite(t.getUTCFullYear()))t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function xt(e,t,n){var a=7+t-n,r=(7+Et(e,0,a).getUTCDay()-t)%7;return-r+a-1}function Ct(e,t,n,a,r){var o=(7+n-a)%7,i=xt(e,a,r),l=1+7*(t-1)+o+i,s,u;if(l<=0){s=e-1;u=wt(s)+l}else if(l>wt(e)){s=e+1;u=l-wt(e)}else{s=e;u=l}return{year:s,dayOfYear:u}}function Lt(e,t,n){var a=xt(e.year(),t,n),r=Math.floor((e.dayOfYear()-a-1)/7)+1,o,i;if(r<1){i=e.year()-1;o=r+T(i,t,n)}else if(r>T(e.year(),t,n)){o=r-T(e.year(),t,n);i=e.year()+1}else{i=e.year();o=r}return{week:o,year:i}}function T(e,t,n){var a=xt(e,t,n),r=xt(e+1,t,n);return(wt(e)-a+r)/7}function Tt(e){return Lt(e,this._week.dow,this._week.doy).week}a("w",["ww",2],"wo","week"),a("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),_("w",v),_("ww",v,r),_("W",v),_("WW",v,r),Ze(["w","ww","W","WW"],function(e,t,n,a){t[a.substr(0,1)]=y(e)});var Dt={dow:0,doy:6};function Ot(){return this._week.dow}function Nt(){return this._week.doy}function Pt(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function jt(e){var t=Lt(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}function Yt(e,t){if(typeof e!=="string")return e;if(!isNaN(e))return parseInt(e,10);e=t.weekdaysParse(e);if(typeof e==="number")return e;return null}function It(e,t){if(typeof e==="string")return t.weekdaysParse(e)%7||7;return isNaN(e)?null:e}function Rt(e,t){return e.slice(t,7).concat(e.slice(0,t))}a("d",0,"do","day"),a("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),a("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),a("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),a("e",0,0,"weekday"),a("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),_("d",v),_("e",v),_("E",v),_("dd",function(e,t){return t.weekdaysMinRegex(e)}),_("ddd",function(e,t){return t.weekdaysShortRegex(e)}),_("dddd",function(e,t){return t.weekdaysRegex(e)}),Ze(["dd","ddd","dddd"],function(e,t,n,a){var r=n._locale.weekdaysParse(e,a,n._strict);if(r!=null)t.d=r;else f(n).invalidWeekday=e}),Ze(["d","e","E"],function(e,t,n,a){t[a]=y(e)});var At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ht="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ft="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=qe,Wt=qe,Vt=qe;function Bt(e,t){var n=i(this._weekdays)?this._weekdays:this._weekdays[e&&e!==true&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===true?Rt(n,this._week.dow):e?n[e.day()]:n}function Ut(e){return e===true?Rt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Kt(e){return e===true?Rt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Gt(e,t,n){var a,r,o,i=e.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(a=0;a<7;++a){o=d([2e3,1]).day(a);this._minWeekdaysParse[a]=this.weekdaysMin(o,"").toLocaleLowerCase();this._shortWeekdaysParse[a]=this.weekdaysShort(o,"").toLocaleLowerCase();this._weekdaysParse[a]=this.weekdays(o,"").toLocaleLowerCase()}}if(n)if(t==="dddd"){r=L.call(this._weekdaysParse,i);return r!==-1?r:null}else if(t==="ddd"){r=L.call(this._shortWeekdaysParse,i);return r!==-1?r:null}else{r=L.call(this._minWeekdaysParse,i);return r!==-1?r:null}else if(t==="dddd"){r=L.call(this._weekdaysParse,i);if(r!==-1)return r;r=L.call(this._shortWeekdaysParse,i);if(r!==-1)return r;r=L.call(this._minWeekdaysParse,i);return r!==-1?r:null}else if(t==="ddd"){r=L.call(this._shortWeekdaysParse,i);if(r!==-1)return r;r=L.call(this._weekdaysParse,i);if(r!==-1)return r;r=L.call(this._minWeekdaysParse,i);return r!==-1?r:null}else{r=L.call(this._minWeekdaysParse,i);if(r!==-1)return r;r=L.call(this._weekdaysParse,i);if(r!==-1)return r;r=L.call(this._shortWeekdaysParse,i);return r!==-1?r:null}}function qt(e,t,n){var a,r,o;if(this._weekdaysParseExact)return Gt.call(this,e,t,n);if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(a=0;a<7;a++){r=d([2e3,1]).day(a);if(n&&!this._fullWeekdaysParse[a]){this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i");this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i");this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")}if(!this._weekdaysParse[a]){o="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,"");this._weekdaysParse[a]=new RegExp(o.replace(".",""),"i")}if(n&&t==="dddd"&&this._fullWeekdaysParse[a].test(e))return a;else if(n&&t==="ddd"&&this._shortWeekdaysParse[a].test(e))return a;else if(n&&t==="dd"&&this._minWeekdaysParse[a].test(e))return a;else if(!n&&this._weekdaysParse[a].test(e))return a}}function $t(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();if(e!=null){e=Yt(e,this.localeData());return this.add(e-t,"d")}else return t}function Jt(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Xt(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=It(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Qt(e){if(this._weekdaysParseExact){if(!s(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!s(this,"_weekdaysRegex"))this._weekdaysRegex=zt;return this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex}}function Zt(e){if(this._weekdaysParseExact){if(!s(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!s(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=Wt;return this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function en(e){if(this._weekdaysParseExact){if(!s(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!s(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=Vt;return this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function tn(){function e(e,t){return t.length-e.length}var t=[],n=[],a=[],r=[],o,i,l,s,u;for(o=0;o<7;o++){i=d([2e3,1]).day(o);l=b(this.weekdaysMin(i,""));s=b(this.weekdaysShort(i,""));u=b(this.weekdays(i,""));t.push(l);n.push(s);a.push(u);r.push(l);r.push(s);r.push(u)}t.sort(e);n.sort(e);a.sort(e);r.sort(e);this._weekdaysRegex=new RegExp("^("+r.join("|")+")","i");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i");this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i");this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function nn(){return this.hours()%12||12}function an(){return this.hours()||24}function rn(e,t){a(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function on(e,t){return t._meridiemParse}function ln(e){return(e+"").toLowerCase().charAt(0)==="p"}a("H",["HH",2],0,"hour"),a("h",["hh",2],0,nn),a("k",["kk",2],0,an),a("hmm",0,0,function(){return""+nn.apply(this)+o(this.minutes(),2)}),a("hmmss",0,0,function(){return""+nn.apply(this)+o(this.minutes(),2)+o(this.seconds(),2)}),a("Hmm",0,0,function(){return""+this.hours()+o(this.minutes(),2)}),a("Hmmss",0,0,function(){return""+this.hours()+o(this.minutes(),2)+o(this.seconds(),2)}),rn("a",true),rn("A",false),t("hour","h"),n("hour",13),_("a",on),_("A",on),_("H",v),_("h",v),_("k",v),_("HH",v,r),_("hh",v,r),_("kk",v,r),_("hmm",Ae),_("hmmss",He),_("Hmm",Ae),_("Hmmss",He),w(["H","HH"],E),w(["k","kk"],function(e,t,n){var a=y(e);t[E]=a===24?0:a}),w(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e);n._meridiem=e}),w(["h","hh"],function(e,t,n){t[E]=y(e);f(n).bigHour=true}),w("hmm",function(e,t,n){var a=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a));f(n).bigHour=true}),w("hmmss",function(e,t,n){var a=e.length-4,r=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a,2));t[C]=y(e.substr(r));f(n).bigHour=true}),w("Hmm",function(e,t,n){var a=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a))}),w("Hmmss",function(e,t,n){var a=e.length-4,r=e.length-2;t[E]=y(e.substr(0,a));t[x]=y(e.substr(a,2));t[C]=y(e.substr(r))});var sn,un=Te("Hours",true);function dn(e,t,n){if(e>11)return n?"pm":"PM";else return n?"am":"AM"}var cn={calendar:re,longDateFormat:he,invalidDate:ge,ordinal:ve,dayOfMonthOrdinalParse:_e,relativeTime:we,months:it,monthsShort:lt,week:Dt,weekdays:At,weekdaysMin:Ft,weekdaysShort:Ht,meridiemParse:/[ap]\.?m?\.?/i},D={},fn={},pn;function hn(e,t){var n,a=Math.min(e.length,t.length);for(n=0;n0){r=vn(o.slice(0,n).join("-"));if(r)return r;if(a&&a.length>=n&&hn(o,a)>=n-1)break;n--}t++}return pn}function yn(e){return e.match("^[^/\\\\]*$")!=null}function vn(t){var e=null,n;if(D[t]===undefined&&typeof di!=="undefined"&&di&&di.exports&&yn(t))try{e=pn._abbr;n=ci;fi(514)("./"+t);_n(e)}catch(e){D[t]=null}return D[t]}function _n(e,t){var n;if(e){if(l(t))n=Mn(e);else n=bn(e,t);if(n)pn=n;else if(typeof console!=="undefined"&&console.warn)console.warn("Locale "+e+" not found. Did you forget to load it?")}return pn._abbr}function bn(e,t){if(t!==null){var n,a=cn;t.abbr=e;if(D[e]!=null){ee("defineLocaleOverride","use moment.updateLocale(localeName, config) to change "+"an existing locale. moment.defineLocale(localeName, "+"config) should only be used for creating a new locale "+"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.");a=D[e]._config}else if(t.parentLocale!=null)if(D[t.parentLocale]!=null)a=D[t.parentLocale]._config;else{n=vn(t.parentLocale);if(n!=null)a=n._config;else{if(!fn[t.parentLocale])fn[t.parentLocale]=[];fn[t.parentLocale].push({name:e,config:t});return null}}D[e]=new ae(ne(a,t));if(fn[e])fn[e].forEach(function(e){bn(e.name,e.config)});_n(e);return D[e]}else{delete D[e];return null}}function wn(e,t){if(t!=null){var n,a,r=cn;if(D[e]!=null&&D[e].parentLocale!=null)D[e].set(ne(D[e]._config,t));else{a=vn(e);if(a!=null)r=a._config;t=ne(r,t);if(a==null)t.abbr=e;n=new ae(t);n.parentLocale=D[e];D[e]=n}_n(e)}else if(D[e]!=null)if(D[e].parentLocale!=null){D[e]=D[e].parentLocale;if(e===_n())_n(e)}else if(D[e]!=null)delete D[e];return D[e]}function Mn(e){var t;if(e&&e._locale&&e._locale._abbr)e=e._locale._abbr;if(!e)return pn;if(!i(e)){t=vn(e);if(t)return t;e=[e]}return gn(e)}function kn(){return Z(D)}function Sn(e){var t,n=e._a;if(n&&f(e).overflow===-2){t=n[k]<0||n[k]>11?k:n[S]<1||n[S]>ot(n[M],n[k])?S:n[E]<0||n[E]>24||n[E]===24&&(n[x]!==0||n[C]!==0||n[tt]!==0)?E:n[x]<0||n[x]>59?x:n[C]<0||n[C]>59?C:n[tt]<0||n[tt]>999?tt:-1;if(f(e)._overflowDayOfYear&&(tS))t=S;if(f(e)._overflowWeeks&&t===-1)t=nt;if(f(e)._overflowWeekday&&t===-1)t=at;f(e).overflow=t}return e}var En=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,xn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Cn=/Z|[+-]\d\d(?::?\d\d)?/,Ln=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],Tn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Dn=/^\/?Date\((-?\d+)/i,On=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Nn={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Pn(e){var t,n,a=e._i,r=En.exec(a)||xn.exec(a),o,i,l,s,u=Ln.length,d=Tn.length;if(r){f(e).iso=true;for(t=0,n=u;twt(i)||e._dayOfYear===0)f(e)._overflowDayOfYear=true;n=Et(i,0,e._dayOfYear);e._a[k]=n.getUTCMonth();e._a[S]=n.getUTCDate()}for(t=0;t<3&&e._a[t]==null;++t)e._a[t]=a[t]=r[t];for(;t<7;t++)e._a[t]=a[t]=e._a[t]==null?t===2?1:0:e._a[t];if(e._a[E]===24&&e._a[x]===0&&e._a[C]===0&&e._a[tt]===0){e._nextDay=true;e._a[E]=0}e._d=(e._useUTC?Et:St).apply(null,a);o=e._useUTC?e._d.getUTCDay():e._d.getDay();if(e._tzm!=null)e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm);if(e._nextDay)e._a[E]=24;if(e._w&&typeof e._w.d!=="undefined"&&e._w.d!==o)f(e).weekdayMismatch=true}function Bn(e){var t,n,a,r,o,i,l,s,u;t=e._w;if(t.GG!=null||t.W!=null||t.E!=null){o=1;i=4;n=zn(t.GG,e._a[M],Lt(O(),1,4).year);a=zn(t.W,1);r=zn(t.E,1);if(r<1||r>7)s=true}else{o=e._locale._week.dow;i=e._locale._week.doy;u=Lt(O(),o,i);n=zn(t.gg,e._a[M],u.year);a=zn(t.w,u.week);if(t.d!=null){r=t.d;if(r<0||r>6)s=true}else if(t.e!=null){r=t.e+o;if(t.e<0||t.e>6)s=true}else r=o}if(a<1||a>T(n,o,i))f(e)._overflowWeeks=true;else if(s!=null)f(e)._overflowWeekday=true;else{l=Ct(n,a,r,o,i);e._a[M]=l.year;e._dayOfYear=l.dayOfYear}}function Un(e){if(e._f===c.ISO_8601){Pn(e);return}if(e._f===c.RFC_2822){Hn(e);return}e._a=[];f(e).empty=true;var t=""+e._i,n,a,r,o,i,l=t.length,s=0,u,d;r=pe(e._f,e._locale).match(ie)||[];d=r.length;for(n=0;n0)f(e).unusedInput.push(i);t=t.slice(t.indexOf(a)+a.length);s+=a.length}if(ue[o]){if(a)f(e).empty=false;else f(e).unusedTokens.push(o);et(o,a,e)}else if(e._strict&&!a)f(e).unusedTokens.push(o)}f(e).charsLeftOver=l-s;if(t.length>0)f(e).unusedInput.push(t);if(e._a[E]<=12&&f(e).bigHour===true&&e._a[E]>0)f(e).bigHour=undefined;f(e).parsedDateParts=e._a.slice(0);f(e).meridiem=e._meridiem;e._a[E]=Kn(e._locale,e._a[E],e._meridiem);u=f(e).era;if(u!==null)e._a[M]=e._locale.erasConvertYear(u,e._a[M]);Vn(e);Sn(e)}function Kn(e,t,n){var a;if(n==null)return t;if(e.meridiemHour!=null)return e.meridiemHour(t,n);else if(e.isPM!=null){a=e.isPM(n);if(a&&t<12)t+=12;if(!a&&t===12)t=0;return t}else return t}function Gn(e){var t,n,a,r,o,i,l=false,s=e._f.length;if(s===0){f(e).invalidFormat=true;e._d=new Date(NaN);return}for(r=0;rthis?this:e;else return K()});function ta(e,t){var n,a;if(t.length===1&&i(t[0]))t=t[0];if(!t.length)return O();n=t[0];for(a=1;athis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ea(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={},t;$(e,this);e=Jn(e);if(e._a){t=e._isUTC?d(e._a):O(e._a);this._isDSTShifted=this.isValid()&&fa(e._a,t.toArray())>0}else this._isDSTShifted=false;return this._isDSTShifted}function xa(){return this.isValid()?!this._isUTC:false}function Ca(){return this.isValid()?this._isUTC:false}function La(){return this.isValid()?this._isUTC&&this._offset===0:false}c.updateOffset=function(){};var Ta=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Da=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function N(e,t){var n=e,a=null,r,o,i;if(da(e))n={ms:e._milliseconds,d:e._days,M:e._months};else if(u(e)||!isNaN(+e)){n={};if(t)n[t]=+e;else n.milliseconds=+e}else if(a=Ta.exec(e)){r=a[1]==="-"?-1:1;n={y:0,d:y(a[S])*r,h:y(a[E])*r,m:y(a[x])*r,s:y(a[C])*r,ms:y(ca(a[tt]*1e3))*r}}else if(a=Da.exec(e)){r=a[1]==="-"?-1:1;n={y:Oa(a[2],r),M:Oa(a[3],r),w:Oa(a[4],r),d:Oa(a[5],r),h:Oa(a[6],r),m:Oa(a[7],r),s:Oa(a[8],r)}}else if(n==null)n={};else if(typeof n==="object"&&("from"in n||"to"in n)){i=Pa(O(n.from),O(n.to));n={};n.ms=i.milliseconds;n.M=i.months}o=new ua(n);if(da(e)&&s(e,"_locale"))o._locale=e._locale;if(da(e)&&s(e,"_isValid"))o._isValid=e._isValid;return o}function Oa(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Na(e,t){var n={};n.months=t.month()-e.month()+(t.year()-e.year())*12;if(e.clone().add(n.months,"M").isAfter(t))--n.months;n.milliseconds=+t-+e.clone().add(n.months,"M");return n}function Pa(e,t){var n;if(!(e.isValid()&&t.isValid()))return{milliseconds:0,months:0};t=ga(t,e);if(e.isBefore(t))n=Na(e,t);else{n=Na(t,e);n.milliseconds=-n.milliseconds;n.months=-n.months}return n}function ja(r,o){return function(e,t){var n,a;if(t!==null&&!isNaN(+t)){ee(o,"moment()."+o+"(period, number) is deprecated. Please use moment()."+o+"(number, period). "+"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.");a=e;e=t;t=a}n=N(e,t);Ya(this,n,r);return this}}function Ya(e,t,n,a){var r=t._milliseconds,o=ca(t._days),i=ca(t._months);if(!e.isValid())return;a=a==null?true:a;if(i)mt(e,De(e,"Month")+i*n);if(o)Oe(e,"Date",De(e,"Date")+o*n);if(r)e._d.setTime(e._d.valueOf()+r*n);if(a)c.updateOffset(e,o||i)}N.fn=ua.prototype,N.invalid=sa;var Ia=ja(1,"add"),Ra=ja(-1,"subtract");function Aa(e){return typeof e==="string"||e instanceof String}function Ha(e){return p(e)||z(e)||Aa(e)||u(e)||za(e)||Fa(e)||e===null||e===undefined}function Fa(e){var t=H(e)&&!F(e),n=false,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],r,o,i=a.length;for(r=0;rn.valueOf();else return n.valueOf()9999)return fe(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(h(Date.prototype.toISOString))if(t)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",fe(n,"Z"));return fe(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function nr(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,a,r,o;if(!this.isLocal()){e=this.utcOffset()===0?"moment.utc":"moment.parseZone";t="Z"}n="["+e+'("]';a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";r="-MM-DD[T]HH:mm:ss.SSS";o=t+'[")]';return this.format(n+a+r+o)}function ar(e){if(!e)e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat;var t=fe(this,e);return this.localeData().postformat(t)}function rr(e,t){if(this.isValid()&&(p(e)&&e.isValid()||O(e).isValid()))return N({to:this,from:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function or(e){return this.from(O(),e)}function ir(e,t){if(this.isValid()&&(p(e)&&e.isValid()||O(e).isValid()))return N({from:this,to:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function lr(e){return this.to(O(),e)}function sr(e){var t;if(e===undefined)return this._locale._abbr;else{t=Mn(e);if(t!=null)this._locale=t;return this}}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ur=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){if(e===undefined)return this.localeData();else return this.locale(e)});function dr(){return this._locale}var cr=1e3,fr=60*cr,pr=60*fr,hr=(365*400+97)*24*pr;function mr(e,t){return(e%t+t)%t}function gr(e,t,n){if(e<100&&e>=0)return new Date(e+400,t,n)-hr;else return new Date(e,t,n).valueOf()}function yr(e,t,n){if(e<100&&e>=0)return Date.UTC(e+400,t,n)-hr;else return Date.UTC(e,t,n)}function vr(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?yr:gr;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf();t-=mr(t+(this._isUTC?0:this.utcOffset()*fr),pr);break;case"minute":t=this._d.valueOf();t-=mr(t,fr);break;case"second":t=this._d.valueOf();t-=mr(t,cr);break}this._d.setTime(t);c.updateOffset(this,true);return this}function _r(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?yr:gr;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf();t+=pr-mr(t+(this._isUTC?0:this.utcOffset()*fr),pr)-1;break;case"minute":t=this._d.valueOf();t+=fr-mr(t,fr)-1;break;case"second":t=this._d.valueOf();t+=cr-mr(t,cr)-1;break}this._d.setTime(t);c.updateOffset(this,true);return this}function br(){return this._d.valueOf()-(this._offset||0)*6e4}function wr(){return Math.floor(this.valueOf()/1e3)}function Mr(){return new Date(this.valueOf())}function kr(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Sr(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Er(){return this.isValid()?this.toISOString():null}function xr(){return U(this)}function Cr(){return V({},f(this))}function Lr(){return f(this).overflow}function Tr(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dr(e,t){var n,a,r,o=this._eras||Mn("en")._eras;for(n=0,a=o.length;n=0)return o[a]}}function Nr(e,t){var n=e.since<=e.until?+1:-1;if(t===undefined)return c(e.since).year();else return c(e.since).year()+(t-e.offset)*n}function Pr(){var e,t,n,a=this.localeData().eras();for(e=0,t=a.length;eo)t=o;return Zr.call(this,e,t,n,a,r)}}function Zr(e,t,n,a,r){var o=Ct(e,t,n,a,r),i=Et(o.year,0,o.dayOfYear);this.year(i.getUTCFullYear());this.month(i.getUTCMonth());this.date(i.getUTCDate());return this}function eo(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}a("N",0,0,"eraAbbr"),a("NN",0,0,"eraAbbr"),a("NNN",0,0,"eraAbbr"),a("NNNN",0,0,"eraName"),a("NNNNN",0,0,"eraNarrow"),a("y",["y",1],"yo","eraYear"),a("y",["yy",2],0,"eraYear"),a("y",["yyy",3],0,"eraYear"),a("y",["yyyy",4],0,"eraYear"),_("N",Fr),_("NN",Fr),_("NNN",Fr),_("NNNN",zr),_("NNNNN",Wr),w(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,a){var r=n._locale.erasParse(e,a,n._strict);if(r)f(n).era=r;else f(n).invalidEra=e}),_("y",Ve),_("yy",Ve),_("yyy",Ve),_("yyyy",Ve),_("yo",Vr),w(["y","yy","yyy","yyyy"],M),w(["yo"],function(e,t,n,a){var r;if(n._locale._eraYearOrdinalRegex)r=e.match(n._locale._eraYearOrdinalRegex);if(n._locale.eraYearOrdinalParse)t[M]=n._locale.eraYearOrdinalParse(e,r);else t[M]=parseInt(e,10)}),a(0,["gg",2],0,function(){return this.weekYear()%100}),a(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ur("gggg","weekYear"),Ur("ggggg","weekYear"),Ur("GGGG","isoWeekYear"),Ur("GGGGG","isoWeekYear"),t("weekYear","gg"),t("isoWeekYear","GG"),n("weekYear",1),n("isoWeekYear",1),_("G",Be),_("g",Be),_("GG",v,r),_("gg",v,r),_("GGGG",ze,Ie),_("gggg",ze,Ie),_("GGGGG",We,Re),_("ggggg",We,Re),Ze(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,a){t[a.substr(0,2)]=y(e)}),Ze(["gg","GG"],function(e,t,n,a){t[a]=c.parseTwoDigitYear(e)}),a("Q",0,"Qo","quarter"),t("quarter","Q"),n("quarter",7),_("Q",je),w("Q",function(e,t){t[k]=(y(e)-1)*3}),a("D",["DD",2],"Do","date"),t("date","D"),n("date",9),_("D",v),_("DD",v,r),_("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),w(["D","DD"],S),w("Do",function(e,t){t[S]=y(e.match(v)[0])});var to=Te("Date",true);function no(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}a("DDD",["DDDD",3],"DDDo","dayOfYear"),t("dayOfYear","DDD"),n("dayOfYear",4),_("DDD",Fe),_("DDDD",Ye),w(["DDD","DDDD"],function(e,t,n){n._dayOfYear=y(e)}),a("m",["mm",2],0,"minute"),t("minute","m"),n("minute",14),_("m",v),_("mm",v,r),w(["m","mm"],x);var ao=Te("Minutes",false),ro=(a("s",["ss",2],0,"second"),t("second","s"),n("second",15),_("s",v),_("ss",v,r),w(["s","ss"],C),Te("Seconds",false)),oo,io;for(a("S",0,0,function(){return~~(this.millisecond()/100)}),a(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),a(0,["SSS",3],0,"millisecond"),a(0,["SSSS",4],0,function(){return this.millisecond()*10}),a(0,["SSSSS",5],0,function(){return this.millisecond()*100}),a(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),a(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),a(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),a(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),t("millisecond","ms"),n("millisecond",16),_("S",Fe,je),_("SS",Fe,r),_("SSS",Fe,Ye),oo="SSSS";oo.length<=9;oo+="S")_(oo,Ve);function lo(e,t){t[tt]=y(("0."+e)*1e3)}for(oo="S";oo.length<=9;oo+="S")w(oo,lo);function so(){return this._isUTC?"UTC":""}function uo(){return this._isUTC?"Coordinated Universal Time":""}io=Te("Milliseconds",false),a("z",0,0,"zoneAbbr"),a("zz",0,0,"zoneName");var P=J.prototype;if(P.add=Ia,P.calendar=Ba,P.clone=Ua,P.diff=Qa,P.endOf=_r,P.format=ar,P.from=rr,P.fromNow=or,P.to=ir,P.toNow=lr,P.get=Ne,P.invalidAt=Lr,P.isAfter=Ka,P.isBefore=Ga,P.isBetween=qa,P.isSame=$a,P.isSameOrAfter=Ja,P.isSameOrBefore=Xa,P.isValid=xr,P.lang=ur,P.locale=sr,P.localeData=dr,P.max=ea,P.min=Zn,P.parsingFlags=Cr,P.set=Pe,P.startOf=vr,P.subtract=Ra,P.toArray=kr,P.toObject=Sr,P.toDate=Mr,P.toISOString=tr,P.inspect=nr,typeof Symbol!=="undefined"&&Symbol.for!=null)P[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};function co(e){return O(e*1e3)}function fo(){return O.apply(null,arguments).parseZone()}function po(e){return e}P.toJSON=Er,P.toString=er,P.unix=wr,P.valueOf=br,P.creationData=Tr,P.eraName=Pr,P.eraNarrow=jr,P.eraAbbr=Yr,P.eraYear=Ir,P.year=Mt,P.isLeapYear=kt,P.weekYear=Kr,P.isoWeekYear=Gr,P.quarter=P.quarters=eo,P.month=gt,P.daysInMonth=yt,P.week=P.weeks=Pt,P.isoWeek=P.isoWeeks=jt,P.weeksInYear=Jr,P.weeksInWeekYear=Xr,P.isoWeeksInYear=qr,P.isoWeeksInISOWeekYear=$r,P.date=to,P.day=P.days=$t,P.weekday=Jt,P.isoWeekday=Xt,P.dayOfYear=no,P.hour=P.hours=un,P.minute=P.minutes=ao,P.second=P.seconds=ro,P.millisecond=P.milliseconds=io,P.utcOffset=va,P.utc=ba,P.local=wa,P.parseZone=Ma,P.hasAlignedHourOffset=ka,P.isDST=Sa,P.isLocal=xa,P.isUtcOffset=Ca,P.isUtc=La,P.isUTC=La,P.zoneAbbr=so,P.zoneName=uo,P.dates=e("dates accessor is deprecated. Use date instead.",to),P.months=e("months accessor is deprecated. Use month instead",gt),P.years=e("years accessor is deprecated. Use year instead",Mt),P.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",_a),P.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ea);var j=ae.prototype;function ho(e,t,n,a){var r=Mn(),o=d().set(a,t);return r[n](o,e)}function mo(e,t,n){if(u(e)){t=e;e=undefined}e=e||"";if(t!=null)return ho(e,t,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=ho(e,a,n,"month");return r}function go(e,t,n,a){if(typeof e==="boolean"){if(u(t)){n=t;t=undefined}t=t||""}else{t=e;n=t;e=false;if(u(t)){n=t;t=undefined}t=t||""}var r=Mn(),o=e?r._week.dow:0,i,l=[];if(n!=null)return ho(t,(n+o)%7,a,"day");for(i=0;i<7;i++)l[i]=ho(t,(i+o)%7,a,"day");return l}function yo(e,t){return mo(e,t,"months")}function vo(e,t){return mo(e,t,"monthsShort")}function _o(e,t,n){return go(e,t,n,"weekdays")}function bo(e,t,n){return go(e,t,n,"weekdaysShort")}function wo(e,t,n){return go(e,t,n,"weekdaysMin")}j.calendar=oe,j.longDateFormat=me,j.invalidDate=ye,j.ordinal=be,j.preparse=po,j.postformat=po,j.relativeTime=Me,j.pastFuture=ke,j.set=te,j.eras=Dr,j.erasParse=Or,j.erasConvertYear=Nr,j.erasAbbrRegex=Ar,j.erasNameRegex=Rr,j.erasNarrowRegex=Hr,j.months=ct,j.monthsShort=ft,j.monthsParse=ht,j.monthsRegex=_t,j.monthsShortRegex=vt,j.week=Tt,j.firstDayOfYear=Nt,j.firstDayOfWeek=Ot,j.weekdays=Bt,j.weekdaysMin=Kt,j.weekdaysShort=Ut,j.weekdaysParse=qt,j.weekdaysRegex=Qt,j.weekdaysShortRegex=Zt,j.weekdaysMinRegex=en,j.isPM=ln,j.meridiem=dn,_n("en",{eras:[{since:"0001-01-01",until:+Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-Infinity,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=y(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),c.lang=e("moment.lang is deprecated. Use moment.locale instead.",_n),c.langData=e("moment.langData is deprecated. Use moment.localeData instead.",Mn);var Mo=Math.abs;function ko(){var e=this._data;this._milliseconds=Mo(this._milliseconds);this._days=Mo(this._days);this._months=Mo(this._months);e.milliseconds=Mo(e.milliseconds);e.seconds=Mo(e.seconds);e.minutes=Mo(e.minutes);e.hours=Mo(e.hours);e.months=Mo(e.months);e.years=Mo(e.years);return this}function So(e,t,n,a){var r=N(t,n);e._milliseconds+=a*r._milliseconds;e._days+=a*r._days;e._months+=a*r._months;return e._bubble()}function Eo(e,t){return So(this,e,t,1)}function xo(e,t){return So(this,e,t,-1)}function Co(e){if(e<0)return Math.floor(e);else return Math.ceil(e)}function Lo(){var e=this._milliseconds,t=this._days,n=this._months,a=this._data,r,o,i,l,s;if(!(e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0)){e+=Co(Do(n)+t)*864e5;t=0;n=0}a.milliseconds=e%1e3;r=g(e/1e3);a.seconds=r%60;o=g(r/60);a.minutes=o%60;i=g(o/60);a.hours=i%24;t+=g(i/24);s=g(To(t));n+=s;t-=Co(Do(s));l=g(n/12);n%=12;a.days=t;a.months=n;a.years=l;return this}function To(e){return e*4800/146097}function Do(e){return e*146097/4800}function Oo(e){if(!this.isValid())return NaN;var t,n,a=this._milliseconds;e=m(e);if(e==="month"||e==="quarter"||e==="year"){t=this._days+a/864e5;n=this._months+To(t);switch(e){case"month":return n;case"quarter":return n/3;case"year":return n/12}}else{t=this._days+Math.round(Do(this._months));switch(e){case"week":return t/7+a/6048e5;case"day":return t+a/864e5;case"hour":return t*24+a/36e5;case"minute":return t*1440+a/6e4;case"second":return t*86400+a/1e3;case"millisecond":return Math.floor(t*864e5)+a;default:throw new Error("Unknown unit "+e)}}}function No(){if(!this.isValid())return NaN;return this._milliseconds+this._days*864e5+this._months%12*2592e6+y(this._months/12)*31536e6}function Po(e){return function(){return this.as(e)}}var jo=Po("ms"),Yo=Po("s"),Io=Po("m"),Ro=Po("h"),Ao=Po("d"),Ho=Po("w"),Fo=Po("M"),zo=Po("Q"),Wo=Po("y");function Vo(){return N(this)}function Bo(e){e=m(e);return this.isValid()?this[e+"s"]():NaN}function Uo(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ko=Uo("milliseconds"),Go=Uo("seconds"),qo=Uo("minutes"),$o=Uo("hours"),Jo=Uo("days"),Xo=Uo("months"),Qo=Uo("years");function Zo(){return g(this.days()/7)}var ei=Math.round,ti={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ni(e,t,n,a,r){return r.relativeTime(t||1,!!n,e,a)}function ai(e,t,n,a){var r=N(e).abs(),o=ei(r.as("s")),i=ei(r.as("m")),l=ei(r.as("h")),s=ei(r.as("d")),u=ei(r.as("M")),d=ei(r.as("w")),c=ei(r.as("y")),f=o<=n.ss&&["s",o]||o0;f[4]=a;return ni.apply(null,f)}function ri(e){if(e===undefined)return ei;if(typeof e==="function"){ei=e;return true}return false}function oi(e,t){if(ti[e]===undefined)return false;if(t===undefined)return ti[e];ti[e]=t;if(e==="s")ti.ss=t-1;return true}function ii(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=false,a=ti,r,o;if(typeof e==="object"){t=e;e=false}if(typeof e==="boolean")n=e;if(typeof t==="object"){a=Object.assign({},ti,t);if(t.s!=null&&t.ss==null)a.ss=t.s-1}r=this.localeData();o=ai(this,!n,a,r);if(n)o=r.pastFuture(+this,o);return r.postformat(o)}var li=Math.abs;function si(e){return(e>0)-(e<0)||+e}function ui(){if(!this.isValid())return this.localeData().invalidDate();var e=li(this._milliseconds)/1e3,t=li(this._days),n=li(this._months),a,r,o,i,l=this.asSeconds(),s,u,d,c;if(!l)return"P0D";a=g(e/60);r=g(a/60);e%=60;a%=60;o=g(n/12);n%=12;i=e?e.toFixed(3).replace(/\.?0+$/,""):"";s=l<0?"-":"";u=si(this._months)!==si(l)?"-":"";d=si(this._days)!==si(l)?"-":"";c=si(this._milliseconds)!==si(l)?"-":"";return s+"P"+(o?u+o+"Y":"")+(n?u+n+"M":"")+(t?d+t+"D":"")+(r||a||e?"T":"")+(r?c+r+"H":"")+(a?c+a+"M":"")+(e?c+i+"S":"")}var Y=ua.prototype;return Y.isValid=la,Y.abs=ko,Y.add=Eo,Y.subtract=xo,Y.as=Oo,Y.asMilliseconds=jo,Y.asSeconds=Yo,Y.asMinutes=Io,Y.asHours=Ro,Y.asDays=Ao,Y.asWeeks=Ho,Y.asMonths=Fo,Y.asQuarters=zo,Y.asYears=Wo,Y.valueOf=No,Y._bubble=Lo,Y.clone=Vo,Y.get=Bo,Y.milliseconds=Ko,Y.seconds=Go,Y.minutes=qo,Y.hours=$o,Y.days=Jo,Y.weeks=Zo,Y.months=Xo,Y.years=Qo,Y.humanize=ii,Y.toISOString=ui,Y.toString=ui,Y.toJSON=ui,Y.locale=sr,Y.localeData=dr,Y.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ui),Y.lang=ur,a("X",0,0,"unix"),a("x",0,0,"valueOf"),_("x",Be),_("X",Ge),w("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)}),w("x",function(e,t,n){n._d=new Date(y(e))}), //! moment.js -d.version="2.29.1",A(O),d.fn=P,d.min=ta,d.max=na,d.now=aa,d.utc=c,d.unix=uo,d.months=go,d.isDate=z,d.locale=vn,d.invalid=K,d.duration=N,d.isMoment=u,d.weekdays=vo,d.parseZone=co,d.localeData=wn,d.isDuration=ua,d.monthsShort=yo,d.weekdaysMin=bo,d.defineLocale=_n,d.updateLocale=bn,d.locales=Mn,d.weekdaysShort=_o,d.normalizeUnits=m,d.relativeTimeRounding=ai,d.relativeTimeThreshold=ri,d.calendarFormat=Wa,d.prototype=P,d.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},d}()}.call(this,ci(512)(e))},function(e,t,n){"use strict";t.__esModule=!0;var a=d(n(2)),r=d(n(12)),o=d(n(7)),i=d(n(544)),l=d(n(567)),s=d(n(571)),u=d(n(574)),n=d(n(353));function d(e){return e&&e.__esModule?e:{default:e}}i.default.Item=o.default.config(l.default,{transform:function(e,t){var n;return"validateStatus"in e&&(t("validateStatus","validateState","Form.Item"),n=(t=e).validateStatus,t=(0,r.default)(t,["validateStatus"]),e=(0,a.default)({validateState:n},t)),e}}),i.default.Submit=s.default,i.default.Reset=u.default,i.default.Error=n.default,t.default=o.default.config(i.default,{transform:function(e,t){var n;return"direction"in e&&(t("direction","inline","Form"),n=(t=e).direction,t=(0,r.default)(t,["direction"]),"hoz"===n&&(e=(0,a.default)({inline:!0},t))),e}}),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.pickAttrs=t.datejs=t.htmlId=t.KEYCODE=t.guid=t.focus=t.support=t.str=t.obj=t.log=t.func=t.events=t.env=t.dom=void 0;var a=y(n(198)),r=y(n(201)),o=y(n(495)),i=y(n(496)),l=y(n(200)),s=y(n(91)),u=y(n(199)),d=y(n(504)),c=y(n(505)),f=y(n(506)),p=g(n(507)),h=g(n(203)),m=g(n(152)),n=g(n(508));function g(e){return e&&e.__esModule?e:{default:e}}function y(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}t.dom=a,t.env=r,t.events=o,t.func=i,t.log=l,t.obj=s,t.str=u,t.support=d,t.focus=c,t.guid=p.default,t.KEYCODE=h.default,t.htmlId=f,t.datejs=m.default,t.pickAttrs=n.default},function(e,t,n){"use strict";t.__esModule=!0;var a=u(n(2)),r=u(n(12)),o=u(n(7)),i=u(n(356)),l=u(n(577)),s=u(n(578)),n=u(n(358));function u(e){return e&&e.__esModule?e:{default:e}}i.default.Password=o.default.config(l.default,{exportNames:["getInputNode","focus"],transform:function(e,t){var n;return"hasLimitHint"in e&&(t("hasLimitHint","showLimitHint","Input"),n=(t=e).hasLimitHint,t=(0,r.default)(t,["hasLimitHint"]),e=(0,a.default)({showLimitHint:n},t)),e}}),i.default.TextArea=o.default.config(s.default,{exportNames:["getInputNode","focus"],transform:function(e,t){var n;return"hasLimitHint"in e&&(t("hasLimitHint","showLimitHint","Input"),n=(t=e).hasLimitHint,t=(0,r.default)(t,["hasLimitHint"]),e=(0,a.default)({showLimitHint:n},t)),e}}),i.default.Group=n.default,t.default=o.default.config(i.default,{exportNames:["getInputNode","focus"],transform:function(e,t){var n;return"hasLimitHint"in e&&(t("hasLimitHint","showLimitHint","Input"),n=(t=e).hasLimitHint,t=(0,r.default)(t,["hasLimitHint"]),e=(0,a.default)({showLimitHint:n},t)),e}}),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n,a={};for(n in e)0<=t.indexOf(n)||Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n]);return a}},function(e,t,n){var a; +c.version="2.29.3",A(O),c.fn=P,c.min=na,c.max=aa,c.now=ra,c.utc=d,c.unix=co,c.months=yo,c.isDate=z,c.locale=_n,c.invalid=K,c.duration=N,c.isMoment=p,c.weekdays=_o,c.parseZone=fo,c.localeData=Mn,c.isDuration=da,c.monthsShort=vo,c.weekdaysMin=wo,c.defineLocale=bn,c.updateLocale=wn,c.locales=kn,c.weekdaysShort=bo,c.normalizeUnits=m,c.relativeTimeRounding=ri,c.relativeTimeThreshold=oi,c.calendarFormat=Va,c.prototype=P,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c}()}.call(this,fi(513)(e))},function(e,t,n){"use strict";t.__esModule=!0;var a=d(n(2)),r=d(n(12)),o=d(n(7)),i=d(n(545)),l=d(n(568)),s=d(n(572)),u=d(n(575)),n=d(n(354));function d(e){return e&&e.__esModule?e:{default:e}}i.default.Item=o.default.config(l.default,{transform:function(e,t){var n;return"validateStatus"in e&&(t("validateStatus","validateState","Form.Item"),n=(t=e).validateStatus,t=(0,r.default)(t,["validateStatus"]),e=(0,a.default)({validateState:n},t)),e}}),i.default.Submit=s.default,i.default.Reset=u.default,i.default.Error=n.default,t.default=o.default.config(i.default,{transform:function(e,t){var n;return"direction"in e&&(t("direction","inline","Form"),n=(t=e).direction,t=(0,r.default)(t,["direction"]),"hoz"===n&&(e=(0,a.default)({inline:!0},t))),e}}),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.pickAttrs=t.datejs=t.htmlId=t.KEYCODE=t.guid=t.focus=t.support=t.str=t.obj=t.log=t.func=t.events=t.env=t.dom=void 0;var a=y(n(198)),r=y(n(201)),o=y(n(496)),i=y(n(497)),l=y(n(200)),s=y(n(92)),u=y(n(199)),d=y(n(505)),c=y(n(506)),f=y(n(507)),p=g(n(508)),h=g(n(203)),m=g(n(152)),n=g(n(509));function g(e){return e&&e.__esModule?e:{default:e}}function y(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}t.dom=a,t.env=r,t.events=o,t.func=i,t.log=l,t.obj=s,t.str=u,t.support=d,t.focus=c,t.guid=p.default,t.KEYCODE=h.default,t.htmlId=f,t.datejs=m.default,t.pickAttrs=n.default},function(e,t,n){"use strict";t.__esModule=!0;var a=u(n(2)),r=u(n(12)),o=u(n(7)),i=u(n(357)),l=u(n(578)),s=u(n(579)),n=u(n(359));function u(e){return e&&e.__esModule?e:{default:e}}i.default.Password=o.default.config(l.default,{exportNames:["getInputNode","focus"],transform:function(e,t){var n;return"hasLimitHint"in e&&(t("hasLimitHint","showLimitHint","Input"),n=(t=e).hasLimitHint,t=(0,r.default)(t,["hasLimitHint"]),e=(0,a.default)({showLimitHint:n},t)),e}}),i.default.TextArea=o.default.config(s.default,{exportNames:["getInputNode","focus"],transform:function(e,t){var n;return"hasLimitHint"in e&&(t("hasLimitHint","showLimitHint","Input"),n=(t=e).hasLimitHint,t=(0,r.default)(t,["hasLimitHint"]),e=(0,a.default)({showLimitHint:n},t)),e}}),i.default.Group=n.default,t.default=o.default.config(i.default,{exportNames:["getInputNode","focus"],transform:function(e,t){var n;return"hasLimitHint"in e&&(t("hasLimitHint","showLimitHint","Input"),n=(t=e).hasLimitHint,t=(0,r.default)(t,["hasLimitHint"]),e=(0,a.default)({showLimitHint:n},t)),e}}),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n,a={};for(n in e)0<=t.indexOf(n)||Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n]);return a}},function(e,t,n){var a; /*! Copyright (c) 2018 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";var i={}.hasOwnProperty;function l(){for(var e=[],t=0;t")),"shouldUpdatePosition"in r&&(delete t.shouldUpdatePosition,d.log.warning("Warning: [ shouldUpdatePosition ] is deprecated at [ ]")),"minMargin"in r&&o("minMargin","top/bottom",""),"isFullScreen"in r&&(r.overFlowScroll=!r.isFullScreen,delete t.isFullScreen,o("isFullScreen","overFlowScroll","")),t;return["target","offset","beforeOpen","onOpen","afterOpen","beforePosition","onPosition","cache","safeNode","wrapperClassName","container"].forEach(function(e){var t,n,a;e in r&&(o(e,"overlayProps."+e,"Dialog"),t=(n=r).overlayProps,n=(0,l.default)(n,["overlayProps"]),a=(0,i.default)(((a={})[e]=r[e],a),t||{}),delete n[e],r=(0,i.default)({overlayProps:a},n))}),r}n.displayName="Dialog",n.Inner=p.default,n.show=function(e){return!1!==u.default.getContextProps(e,"Dialog").warning&&(e=v(e,d.log.deprecated)),(0,h.show)(e)},n.alert=function(e){return!1!==u.default.getContextProps(e,"Dialog").warning&&(e=v(e,d.log.deprecated)),(0,h.alert)(e)},n.confirm=function(e){return!1!==u.default.getContextProps(e,"Dialog").warning&&(e=v(e,d.log.deprecated)),(0,h.confirm)(e)},n.success=function(e){return(0,h.success)(e)},n.error=function(e){return(0,h.error)(e)},n.notice=function(e){return(0,h.notice)(e)},n.warning=function(e){return(0,h.warning)(e)},n.help=function(e){return(0,h.help)(e)},n.withContext=h.withContext,t.default=u.default.config(n,{transform:v}),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var i=v(n(2)),l=v(n(12)),a=v(n(7)),r=v(n(634)),o=v(n(639)),s=v(n(642)),u=v(n(643)),d=v(n(644)),c=v(n(645)),f=v(n(647)),p=v(n(648)),h=v(n(649)),m=v(n(652)),g=v(n(389)),y=v(n(390));function v(e){return e&&e.__esModule?e:{default:e}}var _=n(10).env.ieVersion,n=[s.default,f.default,u.default,d.default,c.default,o.default,h.default,m.default],b=n.reduce(function(e,t){return e=t(e)},r.default),n=(f.default._typeMark="lock",d.default._typeMark="expanded",s.default._typeMark="fixed",n.reduce(function(e,t){var n=!_;return e="lock"===t._typeMark?(n?(0,p.default):(0,f.default))(e):"expanded"===t._typeMark?n?(0,d.default)(e,!0):(0,d.default)(e):"fixed"===t._typeMark?n?(0,s.default)(e,!0):(0,s.default)(e):t(e)},r.default));b.Base=r.default,b.fixed=s.default,b.lock=f.default,b.selection=u.default,b.expanded=d.default,b.tree=o.default,b.virtual=c.default,b.list=h.default,b.sticky=m.default,b.GroupHeader=g.default,b.GroupFooter=y.default,b.StickyLock=a.default.config(n,{componentName:"Table"}),t.default=a.default.config(b,{componentName:"Table",transform:function(e,t){var n,a,r,o;return"expandedRowKeys"in e&&(t("expandedRowKeys","openRowKeys","Table"),o=(r=e).expandedRowKeys,r=(0,l.default)(r,["expandedRowKeys"]),e=(0,i.default)({openRowKeys:o},r)),"onExpandedChange"in e&&(t("onExpandedChange","onRowOpen","Table"),r=(o=e).onExpandedChange,o=(0,l.default)(o,["onExpandedChange"]),e=(0,i.default)({onRowOpen:r},o)),"isLoading"in e&&(t("isLoading","loading","Table"),o=(r=e).isLoading,r=(0,l.default)(r,["isLoading"]),e=(0,i.default)({loading:o},r)),"indentSize"in e&&(t("indentSize","indent","Table"),r=(o=e).indentSize,o=(0,l.default)(o,["indentSize"]),e=(0,i.default)({indent:r},o)),"optimization"in e&&(t("optimization","pure","Table"),o=(r=e).optimization,r=(0,l.default)(r,["optimization"]),e=(0,i.default)({pure:o},r)),"getRowClassName"in e&&(t("getRowClassName","getRowProps","Table"),n=(o=e).getRowClassName,a=o.getRowProps,r=(0,l.default)(o,["getRowClassName","getRowProps"]),e=n?(0,i.default)({getRowProps:function(){return(0,i.default)({className:n.apply(void 0,arguments)},a?a.apply(void 0,arguments):{})}},r):(0,i.default)({getRowProps:a},r)),"getRowProps"in e&&(t("getRowProps","rowProps","Table in 1.15.0"),r=(o=e).getRowProps,o=(0,l.default)(o,["getRowProps"]),e=(0,i.default)({rowProps:r},o)),"getCellProps"in e&&(t("getCellProps","cellProps","Table in 1.15.0"),o=(r=e).getCellProps,t=(0,l.default)(r,["getCellProps"]),e=(0,i.default)({cellProps:o},t)),e}}),e.exports=t.default},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var a=n(85);function r(t,e){var n,a=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),a.push.apply(a,n)),a}function o(t){for(var e=1;e 16.8.0")},p.prototype.validate=function(e,t){this.validateCallback(e,t)},p.prototype.reset=function(e){var t=1","Select");t=s(e,t);return e.onInputUpdate&&(t.onSearch=e.onInputUpdate,t.showSearch=!0),t}}),t.default=a.default.config(r.default,{transform:s,exportNames:["focusInput","handleSearchClear"]}),e.exports=t.default},function(e,t,n){"use strict";n.d(t,"f",function(){return a}),n.d(t,"g",function(){return r}),n.d(t,"i",function(){return o}),n.d(t,"c",function(){return i}),n.d(t,"d",function(){return l}),n.d(t,"j",function(){return s}),n.d(t,"l",function(){return u}),n.d(t,"k",function(){return d}),n.d(t,"h",function(){return c}),n.d(t,"b",function(){return f}),n.d(t,"a",function(){return p}),n.d(t,"e",function(){return h});var a="docsite_language",r="LANGUAGE_SWITCH",o="__REDUX_DEVTOOLS_EXTENSION__",i="GET_STATE",l="GET_SUBSCRIBERS",s="REMOVE_SUBSCRIBERS",u="USER_LIST",d="ROLE_LIST",c="PERMISSIONS_LIST",f="GET_NAMESPACES",p="GET_CONFIGURATION",h=[10,20,30,50,100]},function(e,t,n){"use strict";function s(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function u(t){this.setState(function(e){return null!=(e=this.constructor.getDerivedStateFromProps(t,e))?e:null}.bind(this))}function d(e,t){try{var n=this.props,a=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,a)}finally{this.props=n,this.state=a}}function a(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var n,a,r=null,o=null,i=null;if("function"==typeof t.componentWillMount?r="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(r="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?o="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(o="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?i="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(i="UNSAFE_componentWillUpdate"),null!==r||null!==o||null!==i)throw n=e.displayName||e.name,a="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()",Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+n+" uses "+a+" but also contains the following legacy lifecycles:"+(null!==r?"\n "+r:"")+(null!==o?"\n "+o:"")+(null!==i?"\n "+i:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks");if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=s,t.componentWillReceiveProps=u),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=d;var l=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){n=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;l.call(this,e,t,n)}}return e}n.r(t),n.d(t,"polyfill",function(){return a}),d.__suppressDeprecationWarning=u.__suppressDeprecationWarning=s.__suppressDeprecationWarning=!0},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var a=n(130);function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{a||null==l.return||l.return()}finally{if(r)throw o}}return n}}(e,t)||Object(a.a)(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(e,t,n){"use strict";n(41),n(536)},function(e,t,n){"use strict";t.__esModule=!0;var v=s(n(2)),a=s(n(4)),r=s(n(5)),o=s(n(6)),_=s(n(0)),i=s(n(3)),b=s(n(13)),w=s(n(61)),l=s(n(7)),M=n(10);function s(e){return e&&e.__esModule?e:{default:e}}u=_.default.Component,(0,o.default)(k,u),k.prototype.render=function(){var e=this.props,t=e.tip,n=e.visible,a=e.children,r=e.className,o=e.style,i=e.indicator,l=e.color,s=e.prefix,u=e.fullScreen,d=e.disableScroll,c=e.onVisibleChange,f=e.tipAlign,p=e.size,h=e.inline,m=e.rtl,e=e.safeNode,g=null,y=s+"loading-dot",p=(g=i||(i=l,p=(0,b.default)(((l={})[s+"loading-fusion-reactor"]=!0,l[s+"loading-medium-fusion-reactor"]="medium"===p,l)),_.default.createElement("div",{className:p,dir:m?"rtl":void 0},_.default.createElement("span",{className:y,style:{backgroundColor:i}}),_.default.createElement("span",{className:y,style:{backgroundColor:i}}),_.default.createElement("span",{className:y,style:{backgroundColor:i}}),_.default.createElement("span",{className:y,style:{backgroundColor:i}}))),(0,b.default)(((l={})[s+"loading"]=!0,l[s+"open"]=n,l[s+"loading-inline"]=h,l[r]=r,l))),y=(0,b.default)(((m={})[s+"loading-tip"]=!0,m[s+"loading-tip-fullscreen"]=u,m[s+"loading-right-tip"]="right"===f,m)),i=M.obj.pickOthers(k.propTypes,this.props),l=(0,b.default)(((h={})[s+"loading-component"]=n,h[s+"loading-wrap"]=!0,h));return u?[a,_.default.createElement(w.default,(0,v.default)({key:"overlay",hasMask:!0,align:"cc cc",safeNode:e,disableScroll:d},i,{className:r,style:o,visible:n,onRequestClose:c}),_.default.createElement("div",{className:y},_.default.createElement("div",{className:s+"loading-indicator"},g),_.default.createElement("div",{className:s+"loading-tip-content"},t),_.default.createElement("div",{className:s+"loading-tip-placeholder"},t)))]:_.default.createElement("div",(0,v.default)({className:p,style:o},i),n?_.default.createElement("div",{className:y},_.default.createElement("div",{className:s+"loading-indicator"},g),_.default.createElement("div",{className:s+"loading-tip-content"},t),_.default.createElement("div",{className:s+"loading-tip-placeholder"},t)):null,_.default.createElement("div",{className:l},n?_.default.createElement("div",{className:s+"loading-masker"}):null,a))},o=n=k,n.propTypes=(0,v.default)({},l.default.propTypes,{prefix:i.default.string,tip:i.default.any,tipAlign:i.default.oneOf(["right","bottom"]),visible:i.default.bool,onVisibleChange:i.default.func,className:i.default.string,style:i.default.object,size:i.default.oneOf(["large","medium"]),indicator:i.default.any,color:i.default.string,fullScreen:i.default.bool,disableScroll:i.default.bool,safeNode:i.default.any,children:i.default.any,inline:i.default.bool,rtl:i.default.bool}),n.defaultProps={prefix:"next-",visible:!0,onVisibleChange:M.func.noop,animate:null,tipAlign:"bottom",size:"large",inline:!0,disableScroll:!1};var u,i=o;function k(){return(0,a.default)(this,k),(0,r.default)(this,u.apply(this,arguments))}i.displayName="Loading",t.default=l.default.config(i),e.exports=t.default},function(e,t,n){"use strict";n(73),n(52),n(32),n(41),n(537)},function(e,t,n){"use strict";n(52);var a=n(27),r=n.n(a),o=n(70),a=n(133),a=n.n(a),i=n(411),l=n.n(i),s=n(47),u="Request error, please try again later!";function d(){var e=window.location.href,e=(localStorage.removeItem("token"),e.split("#")[0]);window.location.href="".concat(e,"#/login")}t.a=((i=a.a.create()).interceptors.request.use(function(e){var t=e.url,n=e.params,a=e.data,r=e.method,o=e.headers;if(n||(e.params={}),!t.includes("auth/users/login")){n={};try{n=JSON.parse(localStorage.token)}catch(e){console.log(e),d()}var i=n.accessToken,i=void 0===i?"":i,n=n.username,n=void 0===n?"":n;e.params.accessToken=i,t.includes("auth")||(e.params.username=n),e.headers=Object.assign({},o,{accessToken:i})}return a&&Object(s.d)(a)&&["post","put"].includes(r)&&(e.data=l.a.stringify(a),o||(e.headers={}),e.headers["Content-Type"]="application/x-www-form-urlencoded"),e},function(e){return Promise.reject(e)}),i.interceptors.response.use(function(e){var t=e.data;t.success,t.resultCode,t.resultMessage;return e.data},function(e){var t,n,a;return e.response?(t=void 0===(t=(n=e.response).data)?{}:t,n=n.status,a="HTTP ERROR: ".concat(n),"string"==typeof t?a=t:"object"===Object(o.a)(t)&&(a=t.message),r.a.error(a),[401,403].includes(n)&&["unknown user!","token invalid!","token expired!","authorization failed!"].includes(a)&&d(),Promise.reject(e.response)):(r.a.error(u),Promise.reject(e))}),i)},function(e,t,n){"use strict";t.__esModule=!0;var a=i(n(464)),r=i(n(476)),o="function"==typeof r.default&&"symbol"==typeof a.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function i(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===o(a.default)?function(e){return void 0===e?"undefined":o(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":o(e)}},function(e,t,n){"use strict";n.d(t,"a",function(){return w}),n.d(t,"b",function(){return x}),n.d(t,"c",function(){return m}),n.d(t,"d",function(){return C}),n.d(t,"e",function(){return h}),n.d(t,"f",function(){return E}),n.d(t,"g",function(){return L});function a(e){var t=Object(o.a)();return t.displayName=e,t}var r=n(57),t=n(0),l=n.n(t),s=n(54),o=n(412),u=n(56),d=n(39),t=n(181),c=n.n(t),i=(n(186),n(53)),t=n(97),f=n.n(t),p=a("Router-History"),h=a("Router"),m=function(n){function e(e){var t=n.call(this,e)||this;return t.state={location:e.history.location},t._isMounted=!1,t._pendingLocation=null,e.staticContext||(t.unlisten=e.history.listen(function(e){t._isMounted?t.setState({location:e}):t._pendingLocation=e})),t}Object(r.a)(e,n),e.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var t=e.prototype;return t.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},t.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},t.render=function(){return l.a.createElement(h.Provider,{value:{history:this.props.history,location:this.state.location,match:e.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},l.a.createElement(p.Provider,{children:this.props.children||null,value:this.props.history}))},e}(l.a.Component),g=(l.a.Component,function(e){function t(){return e.apply(this,arguments)||this}Object(r.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(l.a.Component));var y={},v=1e4,_=0;function b(e,t){return void 0===t&&(t={}),"/"===(e=void 0===e?"/":e)?e:function(e){if(y[e])return y[e];var t=c.a.compile(e);return _e?t.splice(e,t.length-e,n):t.push(n),i({action:"PUSH",location:n,index:e,entries:t}))})},replace:function(e,t){var n=O(e,t,l(),u.location);o.confirmTransitionTo(n,"REPLACE",a,function(e){e&&i({action:"REPLACE",location:u.entries[u.index]=n})})},go:s,goBack:function(){s(-1)},goForward:function(){s(1)},canGo:function(e){return 0<=(e=u.index+e)&&ex',"Tag"),"readonly"!==n&&"interactive"!==n||r.log.warning("Warning: [ shape="+n+" ] is deprecated at [ Tag ]"),"secondary"===a&&r.log.warning("Warning: [ type=secondary ] is deprecated at [ Tag ]"),["count","marked","value","onChange"].forEach(function(e){e in t&&r.log.warning("Warning: [ "+e+" ] is deprecated at [ Tag ]")}),("selected"in t||"defaultSelected"in t)&&r.log.warning("Warning: [ selected|defaultSelected ] is deprecated at [ Tag ], use [ checked|defaultChecked ] at [ Tag.Selectable ] instead of it"),"closed"in t&&r.log.warning("Warning: [ closed ] is deprecated at [ Tag ], use [ onClose ] at [ Tag.Closeable ] instead of it"),"onSelect"in t&&e("onSelect","","Tag"),"afterClose"in t&&r.log.warning("Warning: [ afterClose ] is deprecated at [ Tag ], use [ afterClose ] at [ Tag.Closeable ] instead of it"),t}});o.Group=a.default.config(i.default),o.Selectable=a.default.config(l.default),o.Closable=a.default.config(n.default),o.Closeable=o.Closable,t.default=o,e.exports=t.default},function(e,t,n){"use strict";n(68),n(443)},function(e,t){e=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},function(e,t){e=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},function(e,t,n){e.exports=!n(105)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict";t.__esModule=!0;var a=o(n(340)),r=o(n(522)),n=o(n(523));function o(e){return e&&e.__esModule?e:{default:e}}a.default.Expand=r.default,a.default.OverlayAnimate=n.default,t.default=a.default,e.exports=t.default},function(e,t,n){"use strict";n(41),n(68),n(122),n(106),n(534)},function(e,t,n){"use strict";n.d(t,"b",function(){return l});var a=n(21),r=n(35),o=n(29),i={namespaces:[]},l=function(e){return function(n){return r.a.get("v1/console/namespaces",{params:e}).then(function(e){var t=e.code,e=e.data;n({type:o.b,data:200===t?e:[]})})}};t.a=function(){var e=0this.menuNode.clientHeight&&(this.menuNode.clientHeight+this.menuNode.scrollTop<(e=this.itemNode.offsetTop+this.itemNode.offsetHeight)?this.menuNode.scrollTop=e-this.menuNode.clientHeight:this.itemNode.offsetTop"===(d=e.charAt(o+1))){r+="(",o++,0[0-9][0-9][0-9][0-9])-(?[0-9][0-9]?)-(?[0-9][0-9]?)(?:(?:[Tt]|[ \t]+)(?[0-9][0-9]?):(?[0-9][0-9]):(?[0-9][0-9])(?:.(?[0-9]*))?(?:[ \t]*(?Z|(?[-+])(?[0-9][0-9]?)(?::(?[0-9][0-9]))?))?)?$","i"),r.LOCAL_TIMEZONE_OFFSET=60*(new Date).getTimezoneOffset()*1e3,r.trim=function(e,t){var n,a;return null==(n=this.REGEX_LEFT_TRIM_BY_CHAR[t=null==t?"\\s":t])&&(this.REGEX_LEFT_TRIM_BY_CHAR[t]=n=new RegExp("^"+t+t+"*")),n.lastIndex=0,null==(a=this.REGEX_RIGHT_TRIM_BY_CHAR[t])&&(this.REGEX_RIGHT_TRIM_BY_CHAR[t]=a=new RegExp(t+""+t+"*$")),a.lastIndex=0,e.replace(n,"").replace(a,"")},r.ltrim=function(e,t){var n;return null==(n=this.REGEX_LEFT_TRIM_BY_CHAR[t=null==t?"\\s":t])&&(this.REGEX_LEFT_TRIM_BY_CHAR[t]=n=new RegExp("^"+t+t+"*")),n.lastIndex=0,e.replace(n,"")},r.rtrim=function(e,t){var n;return null==(n=this.REGEX_RIGHT_TRIM_BY_CHAR[t=null==t?"\\s":t])&&(this.REGEX_RIGHT_TRIM_BY_CHAR[t]=n=new RegExp(t+""+t+"*$")),n.lastIndex=0,e.replace(n,"")},r.isEmpty=function(e){return!e||""===e||"0"===e||e instanceof Array&&0===e.length||this.isEmptyObject(e)},r.isEmptyObject=function(t){var n;return t instanceof Object&&0===function(){var e=[];for(n in t)a.call(t,n)&&e.push(n);return e}().length},r.subStrCount=function(e,t,n,a){var r,o,i,l,s=0;for(e=""+e,t=""+t,null!=n&&(e=e.slice(n)),n=(e=null!=a?e.slice(0,a):e).length,l=t.length,r=o=0,i=n;0<=i?o>6)+t(128|63&e):e<65536?t(224|e>>12)+t(128|e>>6&63)+t(128|63&e):t(240|e>>18)+t(128|e>>12&63)+t(128|e>>6&63)+t(128|63&e)},r.parseBoolean=function(e,t){var n;return null==t&&(t=!0),"string"==typeof e?(n=e.toLowerCase(),!(!t&&"no"===n)&&("0"!==n&&("false"!==n&&""!==n))):!!e},r.isNumeric=function(e){return this.REGEX_SPACES.lastIndex=0,"number"==typeof e||"string"==typeof e&&!isNaN(e)&&""!==e.replace(this.REGEX_SPACES,"")},r.stringToDate=function(e){var t,n,a,r,o,i,l,s,u;if(null==e||!e.length)return null;if(!(e=this.PATTERN_DATE.exec(e)))return null;if(u=parseInt(e.year,10),i=parseInt(e.month,10)-1,n=parseInt(e.day,10),null==e.hour)return t=new Date(Date.UTC(u,i,n));if(r=parseInt(e.hour,10),o=parseInt(e.minute,10),l=parseInt(e.second,10),null!=e.fraction){for(a=e.fraction.slice(0,3);a.length<3;)a+="0";a=parseInt(a,10)}else a=0;return null!=e.tz&&(s=6e4*(60*parseInt(e.tz_hour,10)+(null!=e.tz_minute?parseInt(e.tz_minute,10):0)),"-"===e.tz_sign&&(s*=-1)),t=new Date(Date.UTC(u,i,n,r,o,l,a)),s&&t.setTime(t.getTime()-s),t},r.strRepeat=function(e,t){for(var n="",a=0;ae.length)&&(t=e.length);for(var n=0,a=new Array(t);ndocument.F=Object<\/script>"),e.close(),u=e.F;t--;)delete u[s][i[t]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(a[s]=r(e),n=new a,a[s]=null,n[l]=e):n=u(),void 0===t?n:o(n,t)}},function(e,t,n){var a=n(81).f,r=n(82),o=n(90)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(90)},function(e,t,n){var a=n(74),r=n(75),o=n(118),i=n(150),l=n(81).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=!o&&a.Symbol||{});"_"==e.charAt(0)||e in t||l(t,e,{value:i.f(e)})}},function(e,t,n){"use strict";t.__esModule=!0;var a=d(n(202)),r=d(n(497)),o=d(n(498)),i=d(n(499)),l=d(n(500)),s=d(n(501)),u=d(n(502));function d(e){return e&&e.__esModule?e:{default:e}}n(503),a.default.extend(s.default),a.default.extend(l.default),a.default.extend(r.default),a.default.extend(o.default),a.default.extend(i.default),a.default.extend(u.default),a.default.locale("zh-cn");n=a.default;n.isSelf=a.default.isDayjs,a.default.localeData(),t.default=n,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var v=c(n(2)),o=c(n(4)),i=c(n(5)),a=c(n(6)),r=n(0),_=c(r),l=c(n(3)),s=n(30),b=c(n(13)),u=c(n(44)),w=c(n(24)),M=c(n(77)),d=c(n(7)),k=n(10);function c(e){return e&&e.__esModule?e:{default:e}}function f(){}p=r.Component,(0,a.default)(S,p),S.getDerivedStateFromProps=function(e){return"visible"in e?{visible:e.visible}:{}},S.prototype.render=function(){var e,t=this.props,n=t.prefix,a=(t.pure,t.className),r=t.style,o=t.type,i=t.shape,l=t.size,s=t.title,u=t.children,d=(t.defaultVisible,t.visible,t.iconType),c=t.closeable,f=(t.onClose,t.afterClose),p=t.animation,h=t.rtl,t=t.locale,m=(0,v.default)({},k.obj.pickOthers(Object.keys(S.propTypes),this.props)),g=this.state.visible,y=n+"message",o=(0,b.default)(((e={})[y]=!0,e[n+"message-"+o]=o,e[""+n+i]=i,e[""+n+l]=l,e[n+"title-content"]=!!s,e[n+"only-content"]=!s&&!!u,e[a]=a,e)),i=g?_.default.createElement("div",(0,v.default)({role:"alert",style:r},m,{className:o,dir:h?"rtl":void 0}),c?_.default.createElement("a",{role:"button","aria-label":t.closeAriaLabel,className:y+"-close",onClick:this.onClose},_.default.createElement(w.default,{type:"close"})):null,!1!==d?_.default.createElement(w.default,{className:y+"-symbol "+(!d&&y+"-symbol-icon"),type:d}):null,s?_.default.createElement("div",{className:y+"-title"},s):null,u?_.default.createElement("div",{className:y+"-content"},u):null):null;return p?_.default.createElement(M.default.Expand,{animationAppear:!1,afterLeave:f},i):i},r=n=S,n.propTypes={prefix:l.default.string,pure:l.default.bool,className:l.default.string,style:l.default.object,type:l.default.oneOf(["success","warning","error","notice","help","loading"]),shape:l.default.oneOf(["inline","addon","toast"]),size:l.default.oneOf(["medium","large"]),title:l.default.node,children:l.default.node,defaultVisible:l.default.bool,visible:l.default.bool,iconType:!1|l.default.string,closeable:l.default.bool,onClose:l.default.func,afterClose:l.default.func,animation:l.default.bool,locale:l.default.object,rtl:l.default.bool},n.defaultProps={prefix:"next-",pure:!1,type:"success",shape:"inline",size:"medium",defaultVisible:!0,closeable:!1,onClose:f,afterClose:f,animation:!0,locale:u.default.Message};var p,a=r;function S(){var e,t;(0,o.default)(this,S);for(var n=arguments.length,a=Array(n),r=0;r=n.length?(s=!!(c=h(o,u)))&&"get"in c&&!("originalValue"in c.get)?c.get:o[u]:(s=_(o,u),o[u]),s&&!i&&(y[d]=o)}}return o}},function(e,t,n){"use strict";n=n(600);e.exports=Function.prototype.bind||n},function(e,t,n){"use strict";var a=String.prototype.replace,r=/%20/g,o="RFC1738",i="RFC3986";e.exports={default:i,formatters:{RFC1738:function(e){return a.call(e,r,"+")},RFC3986:function(e){return String(e)}},RFC1738:o,RFC3986:i}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var d=s(n(2)),a=s(n(4)),r=s(n(5)),o=s(n(6)),c=n(0),f=s(c),i=s(n(3)),p=s(n(13)),h=s(n(24)),l=n(10),m=s(n(94));function s(e){return e&&e.__esModule?e:{default:e}}var u,g=l.func.bindCtx,y=l.obj.pickOthers,i=(u=c.Component,(0,o.default)(v,u),v.prototype.getSelected=function(){var e=this.props,t=e._key,n=e.root,e=e.selected,a=n.props.selectMode,n=n.state.selectedKeys;return e||!!a&&-1e.length&&e.every(function(e,t){return e===n[t]})},t.isAvailablePos=function(e,t,n){var n=n[t],a=n.type,n=n.disabled;return r(e,t)&&("item"===a&&!n||"submenu"===a)});t.getFirstAvaliablelChildKey=function(t,n){var e=Object.keys(n).find(function(e){return a(t+"-0",e,n)});return e?n[e].key:null},t.getChildSelected=function(e){var t=e.selectMode,n=e.selectedKeys,a=e._k2n,e=e._key;if(!a)return!1;var r=(a[e]&&a[e].pos)+"-";return!!t&&n.some(function(e){return a[e]&&0===a[e].pos.indexOf(r)})}},function(e,t,n){"use strict";n(41),n(32),n(622)},function(e,t,n){var o=n(635),i=Object.prototype.hasOwnProperty;function l(e){return Array.isArray(e)?"array":typeof e}function s(e,t){var n,a=0,r=0;for(n in e)if(i.call(e,n)){if("style"===n){if(!o(e[n],t[n]))return!1}else if("children"!==n&&e[n]!==t[n])return!1;a++}for(n in t)i.call(t,n)&&r++;return a===r&&function e(t,n){var a=l(t);if(a!==l(n))return!1;switch(a){case"array":if(t.length!==n.length)return!1;for(var r=0;r=u,u=(0,O.default)(((u={})[n+"upload-inner"]=!0,u[n+"hidden"]=x,u)),C=this.props.children;if("card"===r&&(r=(0,O.default)(((r={})[n+"upload-card"]=!0,r[n+"disabled"]=s,r)),C=D.default.createElement("div",{className:r},D.default.createElement(P.default,{size:"large",type:"add",className:n+"upload-add-icon"}),D.default.createElement("div",{tabIndex:"0",role:"button",className:n+"upload-text"},C))),b)return"function"==typeof w?(b=(0,O.default)(((r={})[n+"form-preview"]=!0,r[o]=!!o,r)),D.default.createElement("div",{style:i,className:b},w(this.state.value,this.props))):t?D.default.createElement(Y.default,{isPreview:!0,listType:t,style:i,className:o,value:this.state.value}):null;n=s?N.func.prevent:p,r=N.obj.pickAttrsWith(this.props,"data-");return D.default.createElement("div",(0,L.default)({className:f,style:i},r),D.default.createElement(j.default,(0,L.default)({},e,{name:M,beforeUpload:c,dragable:a,disabled:s||x,className:u,onSelect:this.onSelect,onDrop:this.onDrop,onProgress:this.onProgress,onSuccess:this.onSuccess,onError:this.onError,ref:this.saveUploaderRef}),C),t||g?D.default.createElement(Y.default,{useDataURL:l,fileNameRender:k,actionRender:S,uploader:this,listType:t,value:this.state.value,closable:d,onRemove:n,progressProps:v,onCancel:h,onPreview:m,extraRender:y,rtl:_,previewOnFileName:E}):null)},i=u=h,u.displayName="Upload",u.propTypes=(0,L.default)({},d.default.propTypes,Y.default.propTypes,{prefix:l.default.string.isRequired,action:l.default.string,value:l.default.array,defaultValue:l.default.array,shape:l.default.oneOf(["card"]),listType:l.default.oneOf(["text","image","card"]),list:l.default.any,name:l.default.string,data:l.default.oneOfType([l.default.object,l.default.func]),formatter:l.default.func,limit:l.default.number,timeout:l.default.number,dragable:l.default.bool,closable:l.default.bool,useDataURL:l.default.bool,disabled:l.default.bool,onSelect:l.default.func,onProgress:l.default.func,onChange:l.default.func,onSuccess:l.default.func,afterSelect:l.default.func,onRemove:l.default.func,onError:l.default.func,beforeUpload:l.default.func,onDrop:l.default.func,className:l.default.string,style:l.default.object,children:l.default.node,autoUpload:l.default.bool,request:l.default.func,progressProps:l.default.object,rtl:l.default.bool,isPreview:l.default.bool,renderPreview:l.default.func,fileKeyName:l.default.string,fileNameRender:l.default.func,actionRender:l.default.func,previewOnFileName:l.default.bool}),u.defaultProps=(0,L.default)({},d.default.defaultProps,{prefix:"next-",limit:1/0,autoUpload:!0,closable:!0,onSelect:n,onProgress:n,onChange:n,onSuccess:n,onRemove:n,onError:n,onDrop:n,beforeUpload:n,afterSelect:n,previewOnFileName:!1}),a=function(){var u=this;this.onSelect=function(e){var t,n,a=u.props,r=a.autoUpload,o=a.afterSelect,i=a.onSelect,a=a.limit,l=u.state.value.length+e.length,s=a-u.state.value.length;s<=0||(t=e=e.map(function(e){e=(0,c.fileToObject)(e);return e.state="selected",e}),n=[],ai||l+a.width>o):t<0||e<0||t+a.height>u.height||e+a.width>u.width}function T(e,t,n,a){var r=a.overlayInfo,a=a.containerInfo,n=n.split("");return 1===n.length&&n.push(""),t<0&&(n=[n[0].replace("t","b"),n[1].replace("b","t")]),e<0&&(n=[n[0].replace("l","r"),n[1].replace("r","l")]),t+r.height>a.height&&(n=[n[0].replace("b","t"),n[1].replace("t","b")]),(n=e+r.width>a.width?[n[0].replace("r","l"),n[1].replace("l","r")]:n).join("")}function D(e,t,n){var a=n.overlayInfo,n=n.containerInfo;return(t=t<0?0:t)+a.height>n.height&&(t=n.height-a.height),{left:e=(e=e<0?0:e)+a.width>n.width?n.width-a.width:e,top:t}}function ve(e){var t=e.target,n=e.overlay,a=e.container,r=e.scrollNode,o=e.placement,i=e.placementOffset,i=void 0===i?0:i,l=e.points,l=void 0===l?["tl","bl"]:l,s=e.offset,s=void 0===s?[0,0]:s,u=e.position,u=void 0===u?"absolute":u,d=e.beforePosition,c=e.autoAdjust,c=void 0===c||c,f=e.autoHideScrollOverflow,f=void 0===f||f,e=e.rtl,p="offsetWidth"in(p=n)&&"offsetHeight"in p?{width:p.offsetWidth,height:p.offsetHeight}:{width:(p=p.getBoundingClientRect()).width,height:p.height},h=p.width,p=p.height;if("fixed"===u)return m={config:{placement:void 0,points:void 0},style:{position:u,left:s[0],top:s[1]}},d?d(m,{overlay:{node:n,width:h,height:p}}):m;var m=t.getBoundingClientRect(),g=m.width,y=m.height,v=m.left,_=m.top,m=x(a),b=m.left,m=m.top,w=a.scrollWidth,M=a.scrollHeight,k=a.scrollTop,S=a.scrollLeft,b={targetInfo:{width:g,height:y,left:v,top:_},containerInfo:{left:b,top:m,width:w,height:M,scrollTop:k,scrollLeft:S},overlayInfo:{width:h,height:p},points:l,placementOffset:i,offset:s,container:a,rtl:e},m=C(o,b),w=m.left,M=m.top,k=m.points,S=function(e){for(var t=e;t;){var n=fe(t,"overflow");if(null!=n&&n.match(/auto|scroll|hidden/))return t;t=t.parentNode}return document.documentElement}(a),E=(c&&o&&L(w,M,S,b)&&(o!==(l=T(w,M,o,b))&&(M=L(s=(i=C(l,b)).left,e=i.top,S,b)&&l!==(m=T(s,e,l,b))?(w=(c=D((a=C(o=m,b)).left,a.top,b)).left,c.top):(o=l,w=s,e)),w=(i=D(w,M,b)).left,M=i.top),{config:{placement:o,points:k},style:{position:u,left:Math.round(w),top:Math.round(M)}});return f&&o&&null!=r&&r.length&&r.forEach(function(e){var e=e.getBoundingClientRect(),t=e.top,n=e.left,a=e.width,e=e.height;E.style.display=_+y=e.length?{done:!0}:{done:!1,value:e[n++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);nt.clientHeight&&0")),"shouldUpdatePosition"in r&&(delete t.shouldUpdatePosition,d.log.warning("Warning: [ shouldUpdatePosition ] is deprecated at [ ]")),"minMargin"in r&&o("minMargin","top/bottom",""),"isFullScreen"in r&&(r.overFlowScroll=!r.isFullScreen,delete t.isFullScreen,o("isFullScreen","overFlowScroll","")),t;return["target","offset","beforeOpen","onOpen","afterOpen","beforePosition","onPosition","cache","safeNode","wrapperClassName","container"].forEach(function(e){var t,n,a;e in r&&(o(e,"overlayProps."+e,"Dialog"),t=(n=r).overlayProps,n=(0,l.default)(n,["overlayProps"]),a=(0,i.default)(((a={})[e]=r[e],a),t||{}),delete n[e],r=(0,i.default)({overlayProps:a},n))}),r}n.displayName="Dialog",n.Inner=p.default,n.show=function(e){return!1!==u.default.getContextProps(e,"Dialog").warning&&(e=v(e,d.log.deprecated)),(0,h.show)(e)},n.alert=function(e){return!1!==u.default.getContextProps(e,"Dialog").warning&&(e=v(e,d.log.deprecated)),(0,h.alert)(e)},n.confirm=function(e){return!1!==u.default.getContextProps(e,"Dialog").warning&&(e=v(e,d.log.deprecated)),(0,h.confirm)(e)},n.success=function(e){return(0,h.success)(e)},n.error=function(e){return(0,h.error)(e)},n.notice=function(e){return(0,h.notice)(e)},n.warning=function(e){return(0,h.warning)(e)},n.help=function(e){return(0,h.help)(e)},n.withContext=h.withContext,t.default=u.default.config(n,{transform:v}),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var i=v(n(2)),l=v(n(12)),a=v(n(7)),r=v(n(635)),o=v(n(640)),s=v(n(643)),u=v(n(644)),d=v(n(645)),c=v(n(646)),f=v(n(648)),p=v(n(649)),h=v(n(650)),m=v(n(653)),g=v(n(390)),y=v(n(391));function v(e){return e&&e.__esModule?e:{default:e}}var _=n(10).env.ieVersion,n=[s.default,f.default,u.default,d.default,c.default,o.default,h.default,m.default],b=n.reduce(function(e,t){return e=t(e)},r.default),n=(f.default._typeMark="lock",d.default._typeMark="expanded",s.default._typeMark="fixed",n.reduce(function(e,t){var n=!_;return e="lock"===t._typeMark?(n?(0,p.default):(0,f.default))(e):"expanded"===t._typeMark?n?(0,d.default)(e,!0):(0,d.default)(e):"fixed"===t._typeMark?n?(0,s.default)(e,!0):(0,s.default)(e):t(e)},r.default));b.Base=r.default,b.fixed=s.default,b.lock=f.default,b.selection=u.default,b.expanded=d.default,b.tree=o.default,b.virtual=c.default,b.list=h.default,b.sticky=m.default,b.GroupHeader=g.default,b.GroupFooter=y.default,b.StickyLock=a.default.config(n,{componentName:"Table"}),t.default=a.default.config(b,{componentName:"Table",transform:function(e,t){var n,a,r,o;return"expandedRowKeys"in e&&(t("expandedRowKeys","openRowKeys","Table"),o=(r=e).expandedRowKeys,r=(0,l.default)(r,["expandedRowKeys"]),e=(0,i.default)({openRowKeys:o},r)),"onExpandedChange"in e&&(t("onExpandedChange","onRowOpen","Table"),r=(o=e).onExpandedChange,o=(0,l.default)(o,["onExpandedChange"]),e=(0,i.default)({onRowOpen:r},o)),"isLoading"in e&&(t("isLoading","loading","Table"),o=(r=e).isLoading,r=(0,l.default)(r,["isLoading"]),e=(0,i.default)({loading:o},r)),"indentSize"in e&&(t("indentSize","indent","Table"),r=(o=e).indentSize,o=(0,l.default)(o,["indentSize"]),e=(0,i.default)({indent:r},o)),"optimization"in e&&(t("optimization","pure","Table"),o=(r=e).optimization,r=(0,l.default)(r,["optimization"]),e=(0,i.default)({pure:o},r)),"getRowClassName"in e&&(t("getRowClassName","getRowProps","Table"),n=(o=e).getRowClassName,a=o.getRowProps,r=(0,l.default)(o,["getRowClassName","getRowProps"]),e=n?(0,i.default)({getRowProps:function(){return(0,i.default)({className:n.apply(void 0,arguments)},a?a.apply(void 0,arguments):{})}},r):(0,i.default)({getRowProps:a},r)),"getRowProps"in e&&(t("getRowProps","rowProps","Table in 1.15.0"),r=(o=e).getRowProps,o=(0,l.default)(o,["getRowProps"]),e=(0,i.default)({rowProps:r},o)),"getCellProps"in e&&(t("getCellProps","cellProps","Table in 1.15.0"),o=(r=e).getCellProps,t=(0,l.default)(r,["getCellProps"]),e=(0,i.default)({cellProps:o},t)),e}}),e.exports=t.default},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var a=n(86);function r(t,e){var n,a=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),a.push.apply(a,n)),a}function o(t){for(var e=1;e 16.8.0")},p.prototype.validate=function(e,t){this.validateCallback(e,t)},p.prototype.reset=function(e){var t=1","Select");t=s(e,t);return e.onInputUpdate&&(t.onSearch=e.onInputUpdate,t.showSearch=!0),t}}),t.default=a.default.config(r.default,{transform:s,exportNames:["focusInput","handleSearchClear"]}),e.exports=t.default},function(e,t,n){"use strict";n.d(t,"f",function(){return a}),n.d(t,"g",function(){return r}),n.d(t,"i",function(){return o}),n.d(t,"c",function(){return i}),n.d(t,"d",function(){return l}),n.d(t,"j",function(){return s}),n.d(t,"l",function(){return u}),n.d(t,"k",function(){return d}),n.d(t,"h",function(){return c}),n.d(t,"b",function(){return f}),n.d(t,"a",function(){return p}),n.d(t,"e",function(){return h});var a="docsite_language",r="LANGUAGE_SWITCH",o="__REDUX_DEVTOOLS_EXTENSION__",i="GET_STATE",l="GET_SUBSCRIBERS",s="REMOVE_SUBSCRIBERS",u="USER_LIST",d="ROLE_LIST",c="PERMISSIONS_LIST",f="GET_NAMESPACES",p="GET_CONFIGURATION",h=[10,20,30,50,100]},function(e,t,n){"use strict";function s(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function u(t){this.setState(function(e){return null!=(e=this.constructor.getDerivedStateFromProps(t,e))?e:null}.bind(this))}function d(e,t){try{var n=this.props,a=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,a)}finally{this.props=n,this.state=a}}function a(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var n,a,r=null,o=null,i=null;if("function"==typeof t.componentWillMount?r="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(r="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?o="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(o="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?i="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(i="UNSAFE_componentWillUpdate"),null!==r||null!==o||null!==i)throw n=e.displayName||e.name,a="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()",Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+n+" uses "+a+" but also contains the following legacy lifecycles:"+(null!==r?"\n "+r:"")+(null!==o?"\n "+o:"")+(null!==i?"\n "+i:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks");if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=s,t.componentWillReceiveProps=u),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=d;var l=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){n=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;l.call(this,e,t,n)}}return e}n.r(t),n.d(t,"polyfill",function(){return a}),d.__suppressDeprecationWarning=u.__suppressDeprecationWarning=s.__suppressDeprecationWarning=!0},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var a=n(130);function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{a||null==l.return||l.return()}finally{if(r)throw o}}return n}}(e,t)||Object(a.a)(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(e,t,n){"use strict";n(41),n(537)},function(e,t,n){"use strict";t.__esModule=!0;var v=s(n(2)),a=s(n(4)),r=s(n(5)),o=s(n(6)),_=s(n(0)),i=s(n(3)),b=s(n(13)),w=s(n(61)),l=s(n(7)),M=n(10);function s(e){return e&&e.__esModule?e:{default:e}}u=_.default.Component,(0,o.default)(k,u),k.prototype.render=function(){var e=this.props,t=e.tip,n=e.visible,a=e.children,r=e.className,o=e.style,i=e.indicator,l=e.color,s=e.prefix,u=e.fullScreen,d=e.disableScroll,c=e.onVisibleChange,f=e.tipAlign,p=e.size,h=e.inline,m=e.rtl,e=e.safeNode,g=null,y=s+"loading-dot",p=(g=i||(i=l,p=(0,b.default)(((l={})[s+"loading-fusion-reactor"]=!0,l[s+"loading-medium-fusion-reactor"]="medium"===p,l)),_.default.createElement("div",{className:p,dir:m?"rtl":void 0},_.default.createElement("span",{className:y,style:{backgroundColor:i}}),_.default.createElement("span",{className:y,style:{backgroundColor:i}}),_.default.createElement("span",{className:y,style:{backgroundColor:i}}),_.default.createElement("span",{className:y,style:{backgroundColor:i}}))),(0,b.default)(((l={})[s+"loading"]=!0,l[s+"open"]=n,l[s+"loading-inline"]=h,l[r]=r,l))),y=(0,b.default)(((m={})[s+"loading-tip"]=!0,m[s+"loading-tip-fullscreen"]=u,m[s+"loading-right-tip"]="right"===f,m)),i=M.obj.pickOthers(k.propTypes,this.props),l=(0,b.default)(((h={})[s+"loading-component"]=n,h[s+"loading-wrap"]=!0,h));return u?[a,_.default.createElement(w.default,(0,v.default)({key:"overlay",hasMask:!0,align:"cc cc",safeNode:e,disableScroll:d},i,{className:r,style:o,visible:n,onRequestClose:c}),_.default.createElement("div",{className:y},_.default.createElement("div",{className:s+"loading-indicator"},g),_.default.createElement("div",{className:s+"loading-tip-content"},t),_.default.createElement("div",{className:s+"loading-tip-placeholder"},t)))]:_.default.createElement("div",(0,v.default)({className:p,style:o},i),n?_.default.createElement("div",{className:y},_.default.createElement("div",{className:s+"loading-indicator"},g),_.default.createElement("div",{className:s+"loading-tip-content"},t),_.default.createElement("div",{className:s+"loading-tip-placeholder"},t)):null,_.default.createElement("div",{className:l},n?_.default.createElement("div",{className:s+"loading-masker"}):null,a))},o=n=k,n.propTypes=(0,v.default)({},l.default.propTypes,{prefix:i.default.string,tip:i.default.any,tipAlign:i.default.oneOf(["right","bottom"]),visible:i.default.bool,onVisibleChange:i.default.func,className:i.default.string,style:i.default.object,size:i.default.oneOf(["large","medium"]),indicator:i.default.any,color:i.default.string,fullScreen:i.default.bool,disableScroll:i.default.bool,safeNode:i.default.any,children:i.default.any,inline:i.default.bool,rtl:i.default.bool}),n.defaultProps={prefix:"next-",visible:!0,onVisibleChange:M.func.noop,animate:null,tipAlign:"bottom",size:"large",inline:!0,disableScroll:!1};var u,i=o;function k(){return(0,a.default)(this,k),(0,r.default)(this,u.apply(this,arguments))}i.displayName="Loading",t.default=l.default.config(i),e.exports=t.default},function(e,t,n){"use strict";n(73),n(52),n(32),n(41),n(538)},function(e,t,n){"use strict";n(52);var a=n(27),r=n.n(a),o=n(70),a=n(133),a=n.n(a),i=n(412),l=n.n(i),s=n(47),u="Request error, please try again later!";function d(){var e=window.location.href,e=(localStorage.removeItem("token"),e.split("#")[0]);window.location.href="".concat(e,"#/login")}t.a=((i=a.a.create()).interceptors.request.use(function(e){var t=e.url,n=e.params,a=e.data,r=e.method,o=e.headers;if(n||(e.params={}),!t.includes("auth/users/login")){n={};try{n=JSON.parse(localStorage.token)}catch(e){console.log(e),d()}var i=n.accessToken,i=void 0===i?"":i,n=n.username,n=void 0===n?"":n;e.params.accessToken=i,t.includes("auth")||(e.params.username=n),e.headers=Object.assign({},o,{accessToken:i})}return a&&Object(s.d)(a)&&["post","put"].includes(r)&&(e.data=l.a.stringify(a),o||(e.headers={}),e.headers["Content-Type"]="application/x-www-form-urlencoded"),e},function(e){return Promise.reject(e)}),i.interceptors.response.use(function(e){var t=e.data;t.success,t.resultCode,t.resultMessage;return e.data},function(e){var t,n,a;return e.response?(t=void 0===(t=(n=e.response).data)?{}:t,n=n.status,a="HTTP ERROR: ".concat(n),"string"==typeof t?a=t:"object"===Object(o.a)(t)&&(a=t.message),r.a.error(a),[401,403].includes(n)&&["unknown user!","token invalid!","token expired!","session expired!"].includes(a)&&d(),Promise.reject(e.response)):(r.a.error(u),Promise.reject(e))}),i)},function(e,t,n){"use strict";t.__esModule=!0;var a=i(n(465)),r=i(n(477)),o="function"==typeof r.default&&"symbol"==typeof a.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function i(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===o(a.default)?function(e){return void 0===e?"undefined":o(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":o(e)}},function(e,t,n){"use strict";n.d(t,"a",function(){return w}),n.d(t,"b",function(){return x}),n.d(t,"c",function(){return m}),n.d(t,"d",function(){return C}),n.d(t,"e",function(){return h}),n.d(t,"f",function(){return E}),n.d(t,"g",function(){return L});function a(e){var t=Object(o.a)();return t.displayName=e,t}var r=n(57),t=n(0),l=n.n(t),s=n(54),o=n(413),u=n(56),d=n(39),t=n(181),c=n.n(t),i=(n(186),n(53)),t=n(97),f=n.n(t),p=a("Router-History"),h=a("Router"),m=function(n){function e(e){var t=n.call(this,e)||this;return t.state={location:e.history.location},t._isMounted=!1,t._pendingLocation=null,e.staticContext||(t.unlisten=e.history.listen(function(e){t._pendingLocation=e})),t}Object(r.a)(e,n),e.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var t=e.prototype;return t.componentDidMount=function(){var t=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen(function(e){t._isMounted&&t.setState({location:e})})),this._pendingLocation&&this.setState({location:this._pendingLocation})},t.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},t.render=function(){return l.a.createElement(h.Provider,{value:{history:this.props.history,location:this.state.location,match:e.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},l.a.createElement(p.Provider,{children:this.props.children||null,value:this.props.history}))},e}(l.a.Component),g=(l.a.Component,function(e){function t(){return e.apply(this,arguments)||this}Object(r.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(l.a.Component));var y={},v=1e4,_=0;function b(e,t){return void 0===t&&(t={}),"/"===(e=void 0===e?"/":e)?e:function(e){if(y[e])return y[e];var t=c.a.compile(e);return _e?t.splice(e,t.length-e,n):t.push(n),i({action:"PUSH",location:n,index:e,entries:t}))})},replace:function(e,t){var n=O(e,t,l(),u.location);o.confirmTransitionTo(n,"REPLACE",a,function(e){e&&i({action:"REPLACE",location:u.entries[u.index]=n})})},go:s,goBack:function(){s(-1)},goForward:function(){s(1)},canGo:function(e){return 0<=(e=u.index+e)&&ex',"Tag"),"readonly"!==n&&"interactive"!==n||r.log.warning("Warning: [ shape="+n+" ] is deprecated at [ Tag ]"),"secondary"===a&&r.log.warning("Warning: [ type=secondary ] is deprecated at [ Tag ]"),["count","marked","value","onChange"].forEach(function(e){e in t&&r.log.warning("Warning: [ "+e+" ] is deprecated at [ Tag ]")}),("selected"in t||"defaultSelected"in t)&&r.log.warning("Warning: [ selected|defaultSelected ] is deprecated at [ Tag ], use [ checked|defaultChecked ] at [ Tag.Selectable ] instead of it"),"closed"in t&&r.log.warning("Warning: [ closed ] is deprecated at [ Tag ], use [ onClose ] at [ Tag.Closeable ] instead of it"),"onSelect"in t&&e("onSelect","","Tag"),"afterClose"in t&&r.log.warning("Warning: [ afterClose ] is deprecated at [ Tag ], use [ afterClose ] at [ Tag.Closeable ] instead of it"),t}});o.Group=a.default.config(i.default),o.Selectable=a.default.config(l.default),o.Closable=a.default.config(n.default),o.Closeable=o.Closable,t.default=o,e.exports=t.default},function(e,t,n){"use strict";n(68),n(444)},function(e,t){e=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},function(e,t){e=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},function(e,t,n){e.exports=!n(105)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict";t.__esModule=!0;var a=o(n(341)),r=o(n(523)),n=o(n(524));function o(e){return e&&e.__esModule?e:{default:e}}a.default.Expand=r.default,a.default.OverlayAnimate=n.default,t.default=a.default,e.exports=t.default},function(e,t,n){"use strict";n(41),n(68),n(122),n(106),n(535)},function(e,t,n){"use strict";n.d(t,"b",function(){return l});var a=n(21),r=n(35),o=n(29),i={namespaces:[]},l=function(e){return function(n){return r.a.get("v1/console/namespaces",{params:e}).then(function(e){var t=e.code,e=e.data;n({type:o.b,data:200===t?e:[]})})}};t.a=function(){var e=0this.menuNode.clientHeight&&(this.menuNode.clientHeight+this.menuNode.scrollTop<(e=this.itemNode.offsetTop+this.itemNode.offsetHeight)?this.menuNode.scrollTop=e-this.menuNode.clientHeight:this.itemNode.offsetTop"===(d=e.charAt(o+1))){r+="(",o++,0[0-9][0-9][0-9][0-9])-(?[0-9][0-9]?)-(?[0-9][0-9]?)(?:(?:[Tt]|[ \t]+)(?[0-9][0-9]?):(?[0-9][0-9]):(?[0-9][0-9])(?:.(?[0-9]*))?(?:[ \t]*(?Z|(?[-+])(?[0-9][0-9]?)(?::(?[0-9][0-9]))?))?)?$","i"),r.LOCAL_TIMEZONE_OFFSET=60*(new Date).getTimezoneOffset()*1e3,r.trim=function(e,t){var n,a;return null==(n=this.REGEX_LEFT_TRIM_BY_CHAR[t=null==t?"\\s":t])&&(this.REGEX_LEFT_TRIM_BY_CHAR[t]=n=new RegExp("^"+t+t+"*")),n.lastIndex=0,null==(a=this.REGEX_RIGHT_TRIM_BY_CHAR[t])&&(this.REGEX_RIGHT_TRIM_BY_CHAR[t]=a=new RegExp(t+""+t+"*$")),a.lastIndex=0,e.replace(n,"").replace(a,"")},r.ltrim=function(e,t){var n;return null==(n=this.REGEX_LEFT_TRIM_BY_CHAR[t=null==t?"\\s":t])&&(this.REGEX_LEFT_TRIM_BY_CHAR[t]=n=new RegExp("^"+t+t+"*")),n.lastIndex=0,e.replace(n,"")},r.rtrim=function(e,t){var n;return null==(n=this.REGEX_RIGHT_TRIM_BY_CHAR[t=null==t?"\\s":t])&&(this.REGEX_RIGHT_TRIM_BY_CHAR[t]=n=new RegExp(t+""+t+"*$")),n.lastIndex=0,e.replace(n,"")},r.isEmpty=function(e){return!e||""===e||"0"===e||e instanceof Array&&0===e.length||this.isEmptyObject(e)},r.isEmptyObject=function(t){var n;return t instanceof Object&&0===function(){var e=[];for(n in t)a.call(t,n)&&e.push(n);return e}().length},r.subStrCount=function(e,t,n,a){var r,o,i,l,s=0;for(e=""+e,t=""+t,null!=n&&(e=e.slice(n)),n=(e=null!=a?e.slice(0,a):e).length,l=t.length,r=o=0,i=n;0<=i?o>6)+t(128|63&e):e<65536?t(224|e>>12)+t(128|e>>6&63)+t(128|63&e):t(240|e>>18)+t(128|e>>12&63)+t(128|e>>6&63)+t(128|63&e)},r.parseBoolean=function(e,t){var n;return null==t&&(t=!0),"string"==typeof e?(n=e.toLowerCase(),!(!t&&"no"===n)&&("0"!==n&&("false"!==n&&""!==n))):!!e},r.isNumeric=function(e){return this.REGEX_SPACES.lastIndex=0,"number"==typeof e||"string"==typeof e&&!isNaN(e)&&""!==e.replace(this.REGEX_SPACES,"")},r.stringToDate=function(e){var t,n,a,r,o,i,l,s,u;if(null==e||!e.length)return null;if(!(e=this.PATTERN_DATE.exec(e)))return null;if(u=parseInt(e.year,10),i=parseInt(e.month,10)-1,n=parseInt(e.day,10),null==e.hour)return t=new Date(Date.UTC(u,i,n));if(r=parseInt(e.hour,10),o=parseInt(e.minute,10),l=parseInt(e.second,10),null!=e.fraction){for(a=e.fraction.slice(0,3);a.length<3;)a+="0";a=parseInt(a,10)}else a=0;return null!=e.tz&&(s=6e4*(60*parseInt(e.tz_hour,10)+(null!=e.tz_minute?parseInt(e.tz_minute,10):0)),"-"===e.tz_sign&&(s*=-1)),t=new Date(Date.UTC(u,i,n,r,o,l,a)),s&&t.setTime(t.getTime()-s),t},r.strRepeat=function(e,t){for(var n="",a=0;ae.length)&&(t=e.length);for(var n=0,a=new Array(t);ndocument.F=Object<\/script>"),e.close(),u=e.F;t--;)delete u[s][i[t]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(a[s]=r(e),n=new a,a[s]=null,n[l]=e):n=u(),void 0===t?n:o(n,t)}},function(e,t,n){var a=n(81).f,r=n(82),o=n(91)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(91)},function(e,t,n){var a=n(74),r=n(75),o=n(118),i=n(150),l=n(81).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=!o&&a.Symbol||{});"_"==e.charAt(0)||e in t||l(t,e,{value:i.f(e)})}},function(e,t,n){"use strict";t.__esModule=!0;var a=d(n(202)),r=d(n(498)),o=d(n(499)),i=d(n(500)),l=d(n(501)),s=d(n(502)),u=d(n(503));function d(e){return e&&e.__esModule?e:{default:e}}n(504),a.default.extend(s.default),a.default.extend(l.default),a.default.extend(r.default),a.default.extend(o.default),a.default.extend(i.default),a.default.extend(u.default),a.default.locale("zh-cn");n=a.default;n.isSelf=a.default.isDayjs,a.default.localeData(),t.default=n,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var v=c(n(2)),o=c(n(4)),i=c(n(5)),a=c(n(6)),r=n(0),_=c(r),l=c(n(3)),s=n(30),b=c(n(13)),u=c(n(44)),w=c(n(24)),M=c(n(77)),d=c(n(7)),k=n(10);function c(e){return e&&e.__esModule?e:{default:e}}function f(){}p=r.Component,(0,a.default)(S,p),S.getDerivedStateFromProps=function(e){return"visible"in e?{visible:e.visible}:{}},S.prototype.render=function(){var e,t=this.props,n=t.prefix,a=(t.pure,t.className),r=t.style,o=t.type,i=t.shape,l=t.size,s=t.title,u=t.children,d=(t.defaultVisible,t.visible,t.iconType),c=t.closeable,f=(t.onClose,t.afterClose),p=t.animation,h=t.rtl,t=t.locale,m=(0,v.default)({},k.obj.pickOthers(Object.keys(S.propTypes),this.props)),g=this.state.visible,y=n+"message",o=(0,b.default)(((e={})[y]=!0,e[n+"message-"+o]=o,e[""+n+i]=i,e[""+n+l]=l,e[n+"title-content"]=!!s,e[n+"only-content"]=!s&&!!u,e[a]=a,e)),i=g?_.default.createElement("div",(0,v.default)({role:"alert",style:r},m,{className:o,dir:h?"rtl":void 0}),c?_.default.createElement("a",{role:"button","aria-label":t.closeAriaLabel,className:y+"-close",onClick:this.onClose},_.default.createElement(w.default,{type:"close"})):null,!1!==d?_.default.createElement(w.default,{className:y+"-symbol "+(!d&&y+"-symbol-icon"),type:d}):null,s?_.default.createElement("div",{className:y+"-title"},s):null,u?_.default.createElement("div",{className:y+"-content"},u):null):null;return p?_.default.createElement(M.default.Expand,{animationAppear:!1,afterLeave:f},i):i},r=n=S,n.propTypes={prefix:l.default.string,pure:l.default.bool,className:l.default.string,style:l.default.object,type:l.default.oneOf(["success","warning","error","notice","help","loading"]),shape:l.default.oneOf(["inline","addon","toast"]),size:l.default.oneOf(["medium","large"]),title:l.default.node,children:l.default.node,defaultVisible:l.default.bool,visible:l.default.bool,iconType:l.default.oneOfType([l.default.string,l.default.bool]),closeable:l.default.bool,onClose:l.default.func,afterClose:l.default.func,animation:l.default.bool,locale:l.default.object,rtl:l.default.bool},n.defaultProps={prefix:"next-",pure:!1,type:"success",shape:"inline",size:"medium",defaultVisible:!0,closeable:!1,onClose:f,afterClose:f,animation:!0,locale:u.default.Message};var p,a=r;function S(){var e,t;(0,o.default)(this,S);for(var n=arguments.length,a=Array(n),r=0;r=n.length?(s=!!(c=h(o,u)))&&"get"in c&&!("originalValue"in c.get)?c.get:o[u]:(s=_(o,u),o[u]),s&&!i&&(y[d]=o)}}return o}},function(e,t,n){"use strict";n=n(601);e.exports=Function.prototype.bind||n},function(e,t,n){"use strict";var a=String.prototype.replace,r=/%20/g,o="RFC1738",i="RFC3986";e.exports={default:i,formatters:{RFC1738:function(e){return a.call(e,r,"+")},RFC3986:function(e){return String(e)}},RFC1738:o,RFC3986:i}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var d=s(n(2)),a=s(n(4)),r=s(n(5)),o=s(n(6)),c=n(0),f=s(c),i=s(n(3)),p=s(n(13)),h=s(n(24)),l=n(10),m=s(n(94));function s(e){return e&&e.__esModule?e:{default:e}}var u,g=l.func.bindCtx,y=l.obj.pickOthers,i=(u=c.Component,(0,o.default)(v,u),v.prototype.getSelected=function(){var e=this.props,t=e._key,n=e.root,e=e.selected,a=n.props.selectMode,n=n.state.selectedKeys;return e||!!a&&-1e.length&&e.every(function(e,t){return e===n[t]})},t.isAvailablePos=function(e,t,n){var n=n[t],a=n.type,n=n.disabled;return r(e,t)&&("item"===a&&!n||"submenu"===a)});t.getFirstAvaliablelChildKey=function(t,n){var e=Object.keys(n).find(function(e){return a(t+"-0",e,n)});return e?n[e].key:null},t.getChildSelected=function(e){var t=e.selectMode,n=e.selectedKeys,a=e._k2n,e=e._key;if(!a)return!1;var r=(a[e]&&a[e].pos)+"-";return!!t&&n.some(function(e){return a[e]&&0===a[e].pos.indexOf(r)})}},function(e,t,n){"use strict";n(41),n(32),n(623)},function(e,t,n){var o=n(636),i=Object.prototype.hasOwnProperty;function l(e){return Array.isArray(e)?"array":typeof e}function s(e,t){var n,a=0,r=0;for(n in e)if(i.call(e,n)){if("style"===n){if(!o(e[n],t[n]))return!1}else if("children"!==n&&e[n]!==t[n])return!1;a++}for(n in t)i.call(t,n)&&r++;return a===r&&function e(t,n){var a=l(t);if(a!==l(n))return!1;switch(a){case"array":if(t.length!==n.length)return!1;for(var r=0;r=u,u=(0,O.default)(((u={})[n+"upload-inner"]=!0,u[n+"hidden"]=x,u)),C=this.props.children;if("card"===r&&(r=(0,O.default)(((r={})[n+"upload-card"]=!0,r[n+"disabled"]=s,r)),C=D.default.createElement("div",{className:r},D.default.createElement(P.default,{size:"large",type:"add",className:n+"upload-add-icon"}),D.default.createElement("div",{tabIndex:"0",role:"button",className:n+"upload-text"},C))),b)return"function"==typeof w?(b=(0,O.default)(((r={})[n+"form-preview"]=!0,r[o]=!!o,r)),D.default.createElement("div",{style:i,className:b},w(this.state.value,this.props))):t?D.default.createElement(Y.default,{isPreview:!0,listType:t,style:i,className:o,value:this.state.value}):null;n=s?N.func.prevent:p,r=N.obj.pickAttrsWith(this.props,"data-");return D.default.createElement("div",(0,L.default)({className:f,style:i},r),D.default.createElement(j.default,(0,L.default)({},e,{name:M,beforeUpload:c,dragable:a,disabled:s||x,className:u,onSelect:this.onSelect,onDrop:this.onDrop,onProgress:this.onProgress,onSuccess:this.onSuccess,onError:this.onError,ref:this.saveUploaderRef}),C),t||g?D.default.createElement(Y.default,{useDataURL:l,fileNameRender:k,actionRender:S,uploader:this,listType:t,value:this.state.value,closable:d,onRemove:n,progressProps:v,onCancel:h,onPreview:m,extraRender:y,rtl:_,previewOnFileName:E}):null)},i=u=h,u.displayName="Upload",u.propTypes=(0,L.default)({},d.default.propTypes,Y.default.propTypes,{prefix:l.default.string.isRequired,action:l.default.string,value:l.default.array,defaultValue:l.default.array,shape:l.default.oneOf(["card"]),listType:l.default.oneOf(["text","image","card"]),list:l.default.any,name:l.default.string,data:l.default.oneOfType([l.default.object,l.default.func]),formatter:l.default.func,limit:l.default.number,timeout:l.default.number,dragable:l.default.bool,closable:l.default.bool,useDataURL:l.default.bool,disabled:l.default.bool,onSelect:l.default.func,onProgress:l.default.func,onChange:l.default.func,onSuccess:l.default.func,afterSelect:l.default.func,onRemove:l.default.func,onError:l.default.func,beforeUpload:l.default.func,onDrop:l.default.func,className:l.default.string,style:l.default.object,children:l.default.node,autoUpload:l.default.bool,request:l.default.func,progressProps:l.default.object,rtl:l.default.bool,isPreview:l.default.bool,renderPreview:l.default.func,fileKeyName:l.default.string,fileNameRender:l.default.func,actionRender:l.default.func,previewOnFileName:l.default.bool}),u.defaultProps=(0,L.default)({},d.default.defaultProps,{prefix:"next-",limit:1/0,autoUpload:!0,closable:!0,onSelect:n,onProgress:n,onChange:n,onSuccess:n,onRemove:n,onError:n,onDrop:n,beforeUpload:n,afterSelect:n,previewOnFileName:!1}),a=function(){var u=this;this.onSelect=function(e){var t,n,a=u.props,r=a.autoUpload,o=a.afterSelect,i=a.onSelect,a=a.limit,l=u.state.value.length+e.length,s=a-u.state.value.length;s<=0||(t=e=e.map(function(e){e=(0,c.fileToObject)(e);return e.state="selected",e}),n=[],ai||l+a.width>o):t<0||e<0||t+a.height>u.height||e+a.width>u.width}function T(e,t,n,a){var r=a.overlayInfo,a=a.containerInfo,n=n.split("");return 1===n.length&&n.push(""),t<0&&(n=[n[0].replace("t","b"),n[1].replace("b","t")]),e<0&&(n=[n[0].replace("l","r"),n[1].replace("r","l")]),t+r.height>a.height&&(n=[n[0].replace("b","t"),n[1].replace("t","b")]),(n=e+r.width>a.width?[n[0].replace("r","l"),n[1].replace("l","r")]:n).join("")}function D(e,t,n){var a=n.overlayInfo,n=n.containerInfo;return(t=t<0?0:t)+a.height>n.height&&(t=n.height-a.height),{left:e=(e=e<0?0:e)+a.width>n.width?n.width-a.width:e,top:t}}function ve(e){var t=e.target,n=e.overlay,a=e.container,r=e.scrollNode,o=e.placement,i=e.placementOffset,i=void 0===i?0:i,l=e.points,l=void 0===l?["tl","bl"]:l,s=e.offset,s=void 0===s?[0,0]:s,u=e.position,u=void 0===u?"absolute":u,d=e.beforePosition,c=e.autoAdjust,c=void 0===c||c,f=e.autoHideScrollOverflow,f=void 0===f||f,e=e.rtl,p="offsetWidth"in(p=n)&&"offsetHeight"in p?{width:p.offsetWidth,height:p.offsetHeight}:{width:(p=p.getBoundingClientRect()).width,height:p.height},h=p.width,p=p.height;if("fixed"===u)return m={config:{placement:void 0,points:void 0},style:{position:u,left:s[0],top:s[1]}},d?d(m,{overlay:{node:n,width:h,height:p}}):m;var m=t.getBoundingClientRect(),g=m.width,y=m.height,v=m.left,_=m.top,m=x(a),b=m.left,m=m.top,w=a.scrollWidth,M=a.scrollHeight,k=a.scrollTop,S=a.scrollLeft,b={targetInfo:{width:g,height:y,left:v,top:_},containerInfo:{left:b,top:m,width:w,height:M,scrollTop:k,scrollLeft:S},overlayInfo:{width:h,height:p},points:l,placementOffset:i,offset:s,container:a,rtl:e},m=C(o,b),w=m.left,M=m.top,k=m.points,S=function(e){for(var t=e;t;){var n=fe(t,"overflow");if(null!=n&&n.match(/auto|scroll|hidden/))return t;t=t.parentNode}return document.documentElement}(a),E=(c&&o&&L(w,M,S,b)&&(o!==(l=T(w,M,o,b))&&(M=L(s=(i=C(l,b)).left,e=i.top,S,b)&&l!==(m=T(s,e,l,b))?(w=(c=D((a=C(o=m,b)).left,a.top,b)).left,c.top):(o=l,w=s,e)),w=(i=D(w,M,b)).left,M=i.top),{config:{placement:o,points:k},style:{position:u,left:Math.round(w),top:Math.round(M)}});return f&&o&&null!=r&&r.length&&r.forEach(function(e){var e=e.getBoundingClientRect(),t=e.top,n=e.left,a=e.width,e=e.height;E.style.display=_+y=e.length?{done:!0}:{done:!1,value:e[n++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);nt.clientHeight&&0r;)!i(a,n=t[r++])||~s(o,n)||o.push(n);return o}},function(e,t,n){var a=n(192);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==a(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";function y(){return this}var v=n(118),_=n(86),b=n(194),w=n(87),M=n(147),k=n(468),S=n(149),E=n(471),x=n(90)("iterator"),C=!([].keys&&"next"in[].keys()),L="values";e.exports=function(e,t,n,a,r,o,i){k(n,t,a);function l(e){if(!C&&e in f)return f[e];switch(e){case"keys":case L:return function(){return new n(this,e)}}return function(){return new n(this,e)}}var s,u,a=t+" Iterator",d=r==L,c=!1,f=e.prototype,p=f[x]||f["@@iterator"]||r&&f[r],h=p||l(r),m=r?d?l("entries"):h:void 0,g="Array"==t&&f.entries||p;if(g&&(g=E(g.call(new e)))!==Object.prototype&&g.next&&(S(g,a,!0),v||"function"==typeof g[x]||w(g,x,y)),d&&p&&p.name!==L&&(c=!0,h=function(){return p.call(this)}),v&&!i||!C&&!c&&f[x]||w(f,x,h),M[t]=h,M[a]=y,r)if(s={values:d?h:l(L),keys:o?h:l("keys"),entries:m},i)for(u in s)u in f||b(f,u,s[u]);else _(_.P+_.F*(C||c),t,s);return s}},function(e,t,n){e.exports=n(87)},function(e,t,n){var a=n(190),r=n(144).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return a(e,r)}},function(e,t,n){var a=n(120),r=n(116),o=n(89),i=n(139),l=n(82),s=n(188),u=Object.getOwnPropertyDescriptor;t.f=n(76)?u:function(e,t){if(e=o(e),t=i(t,!0),s)try{return u(e,t)}catch(e){}if(l(e,t))return r(!a.f.call(e,t),e[t])}},function(e,t,n){"use strict";t.__esModule=!0;var v=a(n(2));t.default=function(e,t,n){var a=e.prefix,r=e.locale,o=(e.defaultPropsConfig,e.pure),i=e.rtl,l=e.device,s=e.popupContainer,e=e.errorBoundary,u=t.nextPrefix,d=t.nextLocale,c=t.nextDefaultPropsConfig,f=t.nextPure,p=t.nextWarning,h=t.nextRtl,m=t.nextDevice,g=t.nextPopupContainer,t=t.nextErrorBoundary,a=a||u,u=void 0,y=n;switch(n){case"DatePicker2":y="DatePicker";break;case"Calendar2":y="Calendar";break;case"TimePicker2":y="TimePicker"}d&&(u=d[y])&&(u.momentLocale=d.momentLocale);n=void 0;r?n=b.obj.deepMerge({},_.default[y],u,r):u&&(n=b.obj.deepMerge({},_.default[y],u));d="boolean"==typeof o?o:f,r="boolean"==typeof i?i:h,u=(0,v.default)({},w(t),w(e));"open"in u||(u.open=!1);return{prefix:a,locale:n,pure:d,rtl:r,warning:p,defaultPropsConfig:c||{},device:l||m||void 0,popupContainer:s||g,errorBoundary:u}};var _=a(n(44)),b=n(10);function a(e){return e&&e.__esModule?e:{default:e}}var w=function(e){return null==e?{}:"boolean"==typeof e?{open:e}:(0,v.default)({open:!0},e)};e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.matches=t.hasDOM=void 0;var a=n(36),r=(a=a)&&a.__esModule?a:{default:a},o=(t.hasClass=s,t.addClass=u,t.removeClass=d,t.toggleClass=function(e,t){if(!l||!e)return!1;{var n;return e.classList?e.classList.toggle(t):(((n=s(e,t))?d:u)(e,t,!0),!n)}},t.getNodeHozWhitespace=function(e){var t=m(e,"paddingLeft"),n=m(e,"paddingRight"),a=m(e,"marginLeft"),e=m(e,"marginRight");return t+n+a+e},t.getStyle=m,t.setStyle=g,t.scrollbar=v,t.hasScroll=function(e){if("hidden"===m(e,"overflow"))return!1;var t=e.parentNode;return t&&t.scrollHeight>t.clientHeight&&0=t?e:""+Array(t+1-a.length).join(n)+e},t={s:o,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),a=Math.floor(n/60),r=n%60;return(t<=0?"+":"-")+o(a,2,"0")+":"+o(r,2,"0")},m:function e(t,n){if(t.date()1)return e(i[0])}else{var l=t.name;S[l]=t,r=l}return!a&&r&&(k=r),r||!a&&k},E=function(e,t){if(a(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new l(n)},x=t,l=(x.l=r,x.i=a,x.w=function(e,t){return E(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})},function(){function e(e){this.$L=r(e.locale,null,!0),this.parse(e)}var t=e.prototype;return t.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(x.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var a=t.match(i);if(a){var r=a[2]-1||0,o=(a[7]||"0").substring(0,3);return n?new Date(Date.UTC(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,o)):new Date(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},t.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},t.$utils=function(){return x},t.isValid=function(){return!(this.$d.toString()===w)},t.isSame=function(e,t){var n=E(e);return this.startOf(t)<=n&&n<=this.endOf(t)},t.isAfter=function(e,t){return E(e)r;)!i(a,n=t[r++])||~s(o,n)||o.push(n);return o}},function(e,t,n){var a=n(192);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==a(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";function y(){return this}var v=n(118),_=n(87),b=n(194),w=n(88),M=n(147),k=n(469),S=n(149),E=n(472),x=n(91)("iterator"),C=!([].keys&&"next"in[].keys()),L="values";e.exports=function(e,t,n,a,r,o,i){k(n,t,a);function l(e){if(!C&&e in f)return f[e];switch(e){case"keys":case L:return function(){return new n(this,e)}}return function(){return new n(this,e)}}var s,u,a=t+" Iterator",d=r==L,c=!1,f=e.prototype,p=f[x]||f["@@iterator"]||r&&f[r],h=p||l(r),m=r?d?l("entries"):h:void 0,g="Array"==t&&f.entries||p;if(g&&(g=E(g.call(new e)))!==Object.prototype&&g.next&&(S(g,a,!0),v||"function"==typeof g[x]||w(g,x,y)),d&&p&&p.name!==L&&(c=!0,h=function(){return p.call(this)}),v&&!i||!C&&!c&&f[x]||w(f,x,h),M[t]=h,M[a]=y,r)if(s={values:d?h:l(L),keys:o?h:l("keys"),entries:m},i)for(u in s)u in f||b(f,u,s[u]);else _(_.P+_.F*(C||c),t,s);return s}},function(e,t,n){e.exports=n(88)},function(e,t,n){var a=n(190),r=n(144).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return a(e,r)}},function(e,t,n){var a=n(120),r=n(116),o=n(90),i=n(139),l=n(82),s=n(188),u=Object.getOwnPropertyDescriptor;t.f=n(76)?u:function(e,t){if(e=o(e),t=i(t,!0),s)try{return u(e,t)}catch(e){}if(l(e,t))return r(!a.f.call(e,t),e[t])}},function(e,t,n){"use strict";t.__esModule=!0;var v=a(n(2));t.default=function(e,t,n){var a=e.prefix,r=e.locale,o=(e.defaultPropsConfig,e.pure),i=e.rtl,l=e.device,s=e.popupContainer,e=e.errorBoundary,u=t.nextPrefix,d=t.nextLocale,c=t.nextDefaultPropsConfig,f=t.nextPure,p=t.nextWarning,h=t.nextRtl,m=t.nextDevice,g=t.nextPopupContainer,t=t.nextErrorBoundary,a=a||u,u=void 0,y=n;switch(n){case"DatePicker2":y="DatePicker";break;case"Calendar2":y="Calendar";break;case"TimePicker2":y="TimePicker"}d&&(u=d[y])&&(u.momentLocale=d.momentLocale);n=void 0;r?n=b.obj.deepMerge({},_.default[y],u,r):u&&(n=b.obj.deepMerge({},_.default[y],u));d="boolean"==typeof o?o:f,r="boolean"==typeof i?i:h,u=(0,v.default)({},w(t),w(e));"open"in u||(u.open=!1);return{prefix:a,locale:n,pure:d,rtl:r,warning:p,defaultPropsConfig:c||{},device:l||m||void 0,popupContainer:s||g,errorBoundary:u}};var _=a(n(44)),b=n(10);function a(e){return e&&e.__esModule?e:{default:e}}var w=function(e){return null==e?{}:"boolean"==typeof e?{open:e}:(0,v.default)({open:!0},e)};e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.matches=t.hasDOM=void 0;var a=n(36),r=(a=a)&&a.__esModule?a:{default:a},o=(t.hasClass=s,t.addClass=u,t.removeClass=d,t.toggleClass=function(e,t){if(!l||!e)return!1;{var n;return e.classList?e.classList.toggle(t):(((n=s(e,t))?d:u)(e,t,!0),!n)}},t.getNodeHozWhitespace=function(e){var t=m(e,"paddingLeft"),n=m(e,"paddingRight"),a=m(e,"marginLeft"),e=m(e,"marginRight");return t+n+a+e},t.getStyle=m,t.setStyle=g,t.scrollbar=v,t.hasScroll=function(e){if("hidden"===m(e,"overflow"))return!1;var t=e.parentNode;return t&&t.scrollHeight>t.clientHeight&&0=t?e:""+Array(t+1-a.length).join(n)+e},t={s:o,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),a=Math.floor(n/60),r=n%60;return(t<=0?"+":"-")+o(a,2,"0")+":"+o(r,2,"0")},m:function e(t,n){if(t.date()1)return e(i[0])}else{var l=t.name;S[l]=t,r=l}return!a&&r&&(k=r),r||!a&&k},E=function(e,t){if(a(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new l(n)},x=t,l=(x.l=r,x.i=a,x.w=function(e,t){return E(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})},function(){function e(e){this.$L=r(e.locale,null,!0),this.parse(e)}var t=e.prototype;return t.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(x.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var a=t.match(i);if(a){var r=a[2]-1||0,o=(a[7]||"0").substring(0,3);return n?new Date(Date.UTC(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,o)):new Date(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},t.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},t.$utils=function(){return x},t.isValid=function(){return!(this.$d.toString()===w)},t.isSame=function(e,t){var n=E(e);return this.startOf(t)<=n&&n<=this.endOf(t)},t.isAfter=function(e,t){return E(e)=20?"ste":"de")},week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration @@ -54,7 +54,7 @@ function t(e,t,n){var a=e+" ";switch(n){case"ss":if(e===1)a+="sekunda";else if(e //! moment.js locale configuration var t;e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:true,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(this.hours()!==1?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(this.hours()!==1?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(this.hours()!==1?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(this.hours()!==1?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(this.hours()!==1?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=e===1?"r":e===2?"n":e===3?"r":e===4?"t":"è";if(t==="w"||t==="W")n="a";return e+n},week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration -var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,o;function i(e){return e>1&&e<5&&~~(e/10)!==1}function l(e,t,n,a){var r=e+" ";switch(n){case"s":return t||a?"pár sekund":"pár sekundami";case"ss":if(t||a)return r+(i(e)?"sekundy":"sekund");else return r+"sekundami";case"m":return t?"minuta":a?"minutu":"minutou";case"mm":if(t||a)return r+(i(e)?"minuty":"minut");else return r+"minutami";case"h":return t?"hodina":a?"hodinu":"hodinou";case"hh":if(t||a)return r+(i(e)?"hodiny":"hodin");else return r+"hodinami";case"d":return t||a?"den":"dnem";case"dd":if(t||a)return r+(i(e)?"dny":"dní");else return r+"dny";case"M":return t||a?"měsíc":"měsícem";case"MM":if(t||a)return r+(i(e)?"měsíce":"měsíců");else return r+"měsíci";case"y":return t||a?"rok":"rokem";case"yy":if(t||a)return r+(i(e)?"roky":"let");else return r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:l,ss:l,m:l,mm:l,h:l,hh:l,d:l,dd:l,M:l,MM:l,y:l,yy:l},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; +var t={format:"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),standalone:"ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince".split("_")},n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,o;function i(e){return e>1&&e<5&&~~(e/10)!==1}function l(e,t,n,a){var r=e+" ";switch(n){case"s":return t||a?"pár sekund":"pár sekundami";case"ss":if(t||a)return r+(i(e)?"sekundy":"sekund");else return r+"sekundami";case"m":return t?"minuta":a?"minutu":"minutou";case"mm":if(t||a)return r+(i(e)?"minuty":"minut");else return r+"minutami";case"h":return t?"hodina":a?"hodinu":"hodinou";case"hh":if(t||a)return r+(i(e)?"hodiny":"hodin");else return r+"hodinami";case"d":return t||a?"den":"dnem";case"dd":if(t||a)return r+(i(e)?"dny":"dní");else return r+"dny";case"M":return t||a?"měsíc":"měsícem";case"MM":if(t||a)return r+(i(e)?"měsíce":"měsíců");else return r+"měsíci";case"y":return t||a?"rok":"rokem";case"yy":if(t||a)return r+(i(e)?"roky":"let");else return r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:l,ss:l,m:l,mm:l,h:l,hh:l,d:l,dd:l,M:l,MM:l,y:l,yy:l},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t;e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){var t=/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран";return e+t},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration @@ -230,9 +230,9 @@ function t(e,t,n,a){var r=e+" ";switch(n){case"s":return t||a?"nekaj sekund":"ne //! moment.js locale configuration var t;e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:true,meridiemParse:/PD|MD/,isPM:function(e){return e.charAt(0)==="M"},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration -var r={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return e===1?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,t,n){var a=r.words[n];if(n.length===1)return t?a[0]:a[1];else return e+" "+r.correctGrammaticalCase(e,a)}},t;e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:true,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var e=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:r.translate,m:r.translate,mm:r.translate,h:r.translate,hh:r.translate,d:"dan",dd:r.translate,M:"mesec",MM:r.translate,y:"godinu",yy:r.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(8))},function(e,t,n){!function(e){"use strict"; +var i={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],d:["jedan dan","jednog dana"],dd:["dan","dana","dana"],M:["jedan mesec","jednog meseca"],MM:["mesec","meseca","meseci"],y:["jednu godinu","jedne godine"],yy:["godinu","godine","godina"]},correctGrammaticalCase:function(e,t){if(e%10>=1&&e%10<=4&&(e%100<10||e%100>=20))return e%10===1?t[0]:t[1];return t[2]},translate:function(e,t,n,a){var r=i.words[n],o;if(n.length===1){if(n==="y"&&t)return"jedna godina";return a||t?r[0]:r[1]}o=i.correctGrammaticalCase(e,r);if(n==="yy"&&t&&o==="godinu")return e+" godina";return e+" "+o}},t;e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:true,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var e=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:i.translate,m:i.translate,mm:i.translate,h:i.translate,hh:i.translate,d:i.translate,dd:i.translate,M:i.translate,MM:i.translate,y:i.translate,yy:i.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration -var r={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return e===1?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,t,n){var a=r.words[n];if(n.length===1)return t?a[0]:a[1];else return e+" "+r.correctGrammaticalCase(e,a)}},t;e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:true,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var e=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:r.translate,m:r.translate,mm:r.translate,h:r.translate,hh:r.translate,d:"дан",dd:r.translate,M:"месец",MM:r.translate,y:"годину",yy:r.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(8))},function(e,t,n){!function(e){"use strict"; +var i={words:{ss:["секунда","секунде","секунди"],m:["један минут","једног минута"],mm:["минут","минута","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],d:["један дан","једног дана"],dd:["дан","дана","дана"],M:["један месец","једног месеца"],MM:["месец","месеца","месеци"],y:["једну годину","једне године"],yy:["годину","године","година"]},correctGrammaticalCase:function(e,t){if(e%10>=1&&e%10<=4&&(e%100<10||e%100>=20))return e%10===1?t[0]:t[1];return t[2]},translate:function(e,t,n,a){var r=i.words[n],o;if(n.length===1){if(n==="y"&&t)return"једна година";return a||t?r[0]:r[1]}o=i.correctGrammaticalCase(e,r);if(n==="yy"&&t&&o==="годину")return e+" година";return e+" "+o}},t;e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:true,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var e=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:i.translate,m:i.translate,mm:i.translate,h:i.translate,hh:i.translate,d:i.translate,dd:i.translate,M:i.translate,MM:i.translate,y:i.translate,yy:i.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t;e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){if(e<11)return"ekuseni";else if(e<15)return"emini";else if(e<19)return"entsambama";else return"ebusuku"},meridiemHour:function(e,t){if(e===12)e=0;if(t==="ekuseni")return e;else if(t==="emini")return e>=11?e:e+12;else if(t==="entsambama"||t==="ebusuku"){if(e===0)return 0;return e+12}},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration @@ -256,7 +256,7 @@ var t;e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo //! moment.js locale configuration var o="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_"),t;function n(e){var t=e;t=e.indexOf("jaj")!==-1?t.slice(0,-3)+"leS":e.indexOf("jar")!==-1?t.slice(0,-3)+"waQ":e.indexOf("DIS")!==-1?t.slice(0,-3)+"nem":t+" pIq";return t}function a(e){var t=e;t=e.indexOf("jaj")!==-1?t.slice(0,-3)+"Hu’":e.indexOf("jar")!==-1?t.slice(0,-3)+"wen":e.indexOf("DIS")!==-1?t.slice(0,-3)+"ben":t+" ret";return t}function r(e,t,n,a){var r=i(e);switch(n){case"ss":return r+" lup";case"mm":return r+" tup";case"hh":return r+" rep";case"dd":return r+" jaj";case"MM":return r+" jar";case"yy":return r+" DIS"}}function i(e){var t=Math.floor(e%1e3/100),n=Math.floor(e%100/10),a=e%10,r="";if(t>0)r+=o[t]+"vatlh";if(n>0)r+=(r!==""?" ":"")+o[n]+"maH";if(a>0)r+=(r!==""?" ":"")+o[a];return r===""?"pagh":r}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:true,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:n,past:a,s:"puS lup",ss:r,m:"wa’ tup",mm:r,h:"wa’ rep",hh:r,d:"wa’ jaj",dd:r,M:"wa’ jar",MM:r,y:"wa’ DIS",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration -var o={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},t;e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){if(e<12)return n?"öö":"ÖÖ";else return n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return e==="ös"||e==="ÖS"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(e===0)return e+"'ıncı";var n=e%10,a=e%100-n,r=e>=100?100:null;return e+(o[n]||o[a]||o[r])}},week:{dow:1,doy:7}})}(n(8))},function(e,t,n){!function(e){"use strict"; +var o={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},t;e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pzt_Sal_Çar_Per_Cum_Cmt".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){if(e<12)return n?"öö":"ÖÖ";else return n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return e==="ös"||e==="ÖS"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(e===0)return e+"'ıncı";var n=e%10,a=e%100-n,r=e>=100?100:null;return e+(o[n]||o[a]||o[r])}},week:{dow:1,doy:7}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration var t;function n(e,t,n,a){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",""+e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",""+e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",""+e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",""+e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",""+e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",""+e+" ars"]};return a?r[n][0]:t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){if(e>11)return n?"d'o":"D'O";else return n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration @@ -286,7 +286,7 @@ var t;e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_ //! moment.js locale configuration var t;e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var a=e*100+t;if(a<600)return"凌晨";else if(a<900)return"早上";else if(a<1130)return"上午";else if(a<1230)return"中午";else if(a<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration -var t;e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var a=e*100+t;if(a<600)return"凌晨";else if(a<900)return"早上";else if(a<1130)return"上午";else if(a<1230)return"中午";else if(a<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){"use strict";t.__esModule=!0;var g=s(n(2)),y=s(n(12)),a=s(n(36)),r=s(n(4)),o=s(n(5)),i=s(n(6)),v=n(0),_=s(v),l=s(n(3)),b=n(154),w=s(n(521));function s(e){return e&&e.__esModule?e:{default:e}}function u(){}function M(e){return _.default.Children.toArray(e.children)[0]||null}d=v.Component,(0,i.default)(c,d),c.prototype.normalizeNames=function(e){return"string"==typeof e?{appear:e+"-appear",appearActive:e+"-appear-active",enter:e+"-enter",enterActive:e+"-enter-active",leave:e+"-leave",leaveActive:e+"-leave-active"}:"object"===(void 0===e?"undefined":(0,a.default)(e))?{appear:e.appear,appearActive:e.appear+"-active",enter:""+e.enter,enterActive:e.enter+"-active",leave:""+e.leave,leaveActive:e.leave+"-active"}:void 0},c.prototype.render=function(){var t=this,e=this.props,n=e.animation,a=e.children,r=e.animationAppear,o=e.singleMode,i=e.component,l=e.beforeAppear,s=e.onAppear,u=e.afterAppear,d=e.beforeEnter,c=e.onEnter,f=e.afterEnter,p=e.beforeLeave,h=e.onLeave,m=e.afterLeave,e=(0,y.default)(e,["animation","children","animationAppear","singleMode","component","beforeAppear","onAppear","afterAppear","beforeEnter","onEnter","afterEnter","beforeLeave","onLeave","afterLeave"]),a=v.Children.map(a,function(e){return _.default.createElement(w.default,{key:e.key,names:t.normalizeNames(n),onAppear:l,onAppearing:s,onAppeared:u,onEnter:d,onEntering:c,onEntered:f,onExit:p,onExiting:h,onExited:m},e)});return _.default.createElement(b.TransitionGroup,(0,g.default)({appear:r,component:o?M:i},e),a)},i=n=c,n.propTypes={animation:l.default.oneOfType([l.default.string,l.default.object]),animationAppear:l.default.bool,component:l.default.any,singleMode:l.default.bool,children:l.default.oneOfType([l.default.element,l.default.arrayOf(l.default.element)]),beforeAppear:l.default.func,onAppear:l.default.func,afterAppear:l.default.func,beforeEnter:l.default.func,onEnter:l.default.func,afterEnter:l.default.func,beforeLeave:l.default.func,onLeave:l.default.func,afterLeave:l.default.func},n.defaultProps={animationAppear:!0,component:"div",singleMode:!0,beforeAppear:u,onAppear:u,afterAppear:u,beforeEnter:u,onEnter:u,afterEnter:u,beforeLeave:u,onLeave:u,afterLeave:u};var d,l=i;function c(){return(0,r.default)(this,c),(0,o.default)(this,d.apply(this,arguments))}l.displayName="Animate",t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var a=function(e){{if(e&&e.__esModule)return e;var t,n={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&((t=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,a):{}).get||t.set?Object.defineProperty(n,a,t):n[a]=e[a]);return n.default=e,n}}(n(3)),o=l(n(0)),i=l(n(22)),r=n(30);n(342);function l(e){return e&&e.__esModule?e:{default:e}}var s="unmounted",u=(t.UNMOUNTED=s,"exited"),d=(t.EXITED=u,"entering"),c=(t.ENTERING=d,"entered"),f=(t.ENTERED=c,"exiting"),n=(t.EXITING=f,function(r){var e;function t(e,t){var n,a=r.call(this,e,t)||this,t=t.transitionGroup,t=t&&!t.isMounting?e.enter:e.appear;return a.appearStatus=null,e.in?t?(n=u,a.appearStatus=d):n=c:n=e.unmountOnExit||e.mountOnEnter?s:u,a.state={status:n},a.nextCallback=null,a}e=r,(n=t).prototype=Object.create(e.prototype),(n.prototype.constructor=n).__proto__=e;var n=t.prototype;return n.getChildContext=function(){return{transitionGroup:null}},t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===s?{status:u}:null},n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;e!==this.props&&(e=this.state.status,this.props.in?e!==d&&e!==c&&(t=d):e!==d&&e!==c||(t=f)),this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n=this.props.timeout,a=e=t=n;return null!=n&&"number"!=typeof n&&(a=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:a,enter:e,appear:t}},n.updateStatus=function(e,t){var n;void 0===e&&(e=!1),null!==t?(this.cancelNextCallback(),n=i.default.findDOMNode(this),t===d?this.performEnter(n,e):this.performExit(n)):this.props.unmountOnExit&&this.state.status===u&&this.setState({status:s})},n.performEnter=function(e,t){var n=this,a=this.props.enter,r=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,o=this.getTimeouts(),i=r?o.appear:o.enter;t||a?(this.props.onEnter(e,r),this.safeSetState({status:d},function(){n.props.onEntering(e,r),n.onTransitionEnd(e,i,function(){n.safeSetState({status:c},function(){n.props.onEntered(e,r)})})})):this.safeSetState({status:c},function(){n.props.onEntered(e)})},n.performExit=function(e){var t=this,n=this.props.exit,a=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:f},function(){t.props.onExiting(e),t.onTransitionEnd(e,a.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(t){var n=this,a=!0;return this.nextCallback=function(e){a&&(a=!1,n.nextCallback=null,t(e))},this.nextCallback.cancel=function(){a=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);n=null==t&&!this.props.addEndListener;!e||n?setTimeout(this.nextCallback,0):(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t))},n.render=function(){var e=this.state.status;if(e===s)return null;var t=this.props,n=t.children,t=function(e,t){if(null==e)return{};for(var n,a={},r=Object.keys(e),o=0;o 16.8.0"),null;function t(e){j.current=e,ne({})}function a(e,t){N(te,null),"function"==typeof S&&S(e,t)}function n(e){27===e.keyCode&&Y&&!P.current.size&&a("esc",e)}function r(){j.current||(t(!0),he.dom.setStyle(D.current,"display","none"),me.default.unlock(document.body,ee.current),s&&O.current&&(O.current.focus(),O.current=null),I())}var o=e.prefix,o=void 0===o?"next-":o,i=e.afterClose,I=void 0===i?ye:i,i=e.hasMask,l=void 0===i||i,i=e.autoFocus,s=void 0!==i&&i,i=e.className,R=e.title,A=e.children,H=e.footer,F=e.footerAlign,z=e.footerActions,u=e.onOk,u=void 0===u?ye:u,d=e.onCancel,W=e.okProps,V=e.cancelProps,c=e.locale,c=void 0===c?pe.default.Dialog:c,B=e.rtl,f=e.visible,p=e.closeMode,p=void 0===p?["close","esc"]:p,U=e.closeIcon,h=e.animation,h=void 0===h?{in:"fadeInUp",out:"fadeOutUp"}:h,m=e.cache,K=e.wrapperStyle,g=e.popupContainer,y=void 0===g?document.body:g,g=e.dialogRender,v=e.centered,_=e.top,_=void 0===_?v?40:100:_,b=e.bottom,b=void 0===b?40:b,w=e.width,w=void 0===w?520:w,G=e.height,M=e.isFullScreen,k=e.overflowScroll,M=void 0===k?!M:k,k=e.minMargin,S=e.onClose,q=e.style,E=(0,ie.default)(e,["prefix","afterClose","hasMask","autoFocus","className","title","children","footer","footerAlign","footerActions","onOk","onCancel","okProps","cancelProps","locale","rtl","visible","closeMode","closeIcon","animation","cache","wrapperStyle","popupContainer","dialogRender","centered","top","bottom","width","height","isFullScreen","overflowScroll","minMargin","onClose","style"]),x=("isFullScreen"in e&&he.log.deprecated("isFullScreen","overflowScroll","Dialog v2"),"minMargin"in e&&he.log.deprecated("minMargin","top/bottom","Dialog v2"),(0,le.useState)(f||!1)),$=x[0],J=x[1],x=(0,le.useState)(f),C=x[0],X=x[1],Q="string"==typeof y?function(){return document.getElementById(y)}:"function"!=typeof y?function(){return y}:y,x=(0,le.useState)(Q()),L=x[0],Z=x[1],T=(0,le.useRef)(null),D=(0,le.useRef)(null),O=(0,le.useRef)(null),ee=(0,le.useRef)(null),te=(0,le.useState)((0,he.guid)())[0],x=(0,le.useContext)(ge),N=x.setVisibleOverlayToParent,x=(0,ie.default)(x,["setVisibleOverlayToParent"]),P=(0,le.useRef)(new Map),j=(0,le.useRef)(!1),ne=(0,le.useState)()[1],Y=!1,ae=!1,re=!1;(Array.isArray(p)?p:[p]).forEach(function(e){switch(e){case"esc":Y=!0;break;case"mask":ae=!0;break;case"close":re=!0}}),(0,le.useEffect)(function(){"visible"in e&&X(f)},[f]),(0,le.useEffect)(function(){var e;C&&l&&(e={overflow:"hidden"},he.dom.hasScroll(document.body)&&he.dom.scrollbar().width&&(e.paddingRight=he.dom.getStyle(document.body,"paddingRight")+he.dom.scrollbar().width+"px"),ee.current=me.default.lock(document.body,e))},[C&&l]),(0,le.useEffect)(function(){if(C&&Y)return document.body.addEventListener("keydown",n,!1),function(){document.body.removeEventListener("keydown",n,!1)}},[C&&Y]),(0,le.useEffect)(function(){!$&&C&&J(!0)},[C]),(0,le.useEffect)(function(){L||setTimeout(function(){Z(Q())})},[L]);if((0,le.useEffect)(function(){return function(){r()}},[]),!1===$||!L)return null;if(!C&&!m&&j.current)return null;m=(0,de.default)(((p={})[o+"overlay-wrapper"]=!0,p.opened=C,p)),i=(0,de.default)(((p={})[o+"dialog-v2"]=!0,p[i]=!!i,p)),p={},k=void(v?_||b||!k?(_&&(p.marginTop=_),b&&(p.marginBottom=b)):(p.marginTop=k,p.marginBottom=k):(_&&(p.top=_),b&&(p.paddingBottom=b))),M&&(k="calc(100vh - "+(_+b)+"px)"),M={appear:300,enter:300,exit:250},_=se.default.createElement(fe.default.OverlayAnimate,{visible:C,animation:h,timeout:M,onEnter:function(){t(!1),he.dom.setStyle(D.current,"display","")},onEntered:function(){var e;s&&T.current&&T.current.bodyNode&&(0<(e=he.focus.getFocusNodeList(T.current.bodyNode)).length&&e[0]&&(O.current=document.activeElement,e[0].focus())),N(te,D.current)},onExited:r},se.default.createElement(ce.default,(0,oe.default)({},E,{style:v?(0,oe.default)({},p,q):q,v2:!0,ref:T,prefix:o,className:i,title:R,footer:H,footerAlign:F,footerActions:z,onOk:C?u:ye,onCancel:C?function(e){"function"==typeof d?d(e):a("cancelBtn",e)}:ye,okProps:W,cancelProps:V,locale:c,closeable:re,rtl:B,onClose:function(){for(var e=arguments.length,t=Array(e),n=0;n>6]+d[128|63&s]:s<55296||57344<=s?i+=d[224|s>>12]+d[128|s>>6&63]+d[128|63&s]:(l+=1,s=65536+((1023&s)<<10|1023&o.charCodeAt(l)),i+=d[240|s>>18]+d[128|s>>12&63]+d[128|s>>6&63]+d[128|63&s])}return i},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(m(e)){for(var n=[],a=0;athis.popupNode.offsetWidth&&p(this.popupNode,"width",l.offsetWidth+"px"),"outside"!==a||"hoz"===r&&1===n||(p(this.popupNode,"height",u.offsetHeight+"px"),this.popupNode.firstElementChild&&p(this.popupNode.firstElementChild,"overflow-y","auto")),this.popupProps);d.onOpen&&d.onOpen()}catch(e){return null}},S.prototype.handlePopupClose=function(){var e=this.props.root.popupNodes,t=e.indexOf(this.popupNode),e=(-1t?r[t+1]:r[0])}),n[a]||(o=r[0]),i.onSort(a,o)},i.keydownHandler=function(e){e.preventDefault(),e.stopPropagation(),e.keyCode===l.KEYCODE.ENTER&&i.handleClick()},i.onSort=function(e,t){var n={};n[e]=t,i.props.onSort(e,t,n)},(0,o.default)(i,e)}i.displayName="Sort",t.default=i,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=c(n(2)),a=c(n(4)),o=c(n(5)),i=c(n(6)),l=c(n(0)),s=c(n(3)),u=c(n(13)),d=c(n(385));function c(e){return e&&e.__esModule?e:{default:e}}f=l.default.Component,(0,i.default)(p,f),p.prototype.render=function(){var e=this.props,t=e.className,n=e.record,e=e.primaryKey,a=this.context.selectedRowKeys,n=(0,u.default)(((a={selected:-1 "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t){var i={}.hasOwnProperty,n=function(e){var t,n=o,a=e;for(t in a)i.call(a,t)&&(n[t]=a[t]);function r(){this.constructor=n}function o(e,t,n){this.message=e,this.parsedLine=t,this.snippet=n}return r.prototype=a.prototype,n.prototype=new r,n.__super__=a.prototype,o.prototype.toString=function(){return null!=this.parsedLine&&null!=this.snippet?" "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var y=m(n(2)),a=m(n(4)),r=m(n(5)),o=m(n(6)),i=n(0),v=m(i),l=n(22),s=m(n(3)),_=m(n(13)),u=n(10),f=m(n(50)),d=m(n(61)),b=m(n(11)),c=m(n(44)),p=m(n(671)),h=m(n(396)),w=n(173);function m(e){return e&&e.__esModule?e:{default:e}}var M=d.default.Popup,g=f.default.Item,k=f.default.Group,n=u.func.noop,S=u.func.bindCtx,E=u.func.makeChain;x=v.default.Component,(0,o.default)(C,x),C.prototype.componentDidMount=function(){var e=this;setTimeout(function(){return e.syncWidth()},0),u.events.on(window,"resize",this.handleResize)},C.prototype.componentDidUpdate=function(e,t){e.label===this.props.label&&t.value===this.state.value||this.syncWidth()},C.prototype.componentWillUnmount=function(){u.events.off(window,"resize",this.handleResize),clearTimeout(this.resizeTimeout)},C.prototype.syncWidth=function(){var e=this,t=this.props,n=t.popupStyle,t=t.popupProps;n&&"width"in n||t&&t.style&&"width"in t.style||(n=u.dom.getStyle(this.selectDOM,"width"))&&this.width!==n&&(this.width=n,this.popupRef&&this.shouldAutoWidth()&&setTimeout(function(){e.popupRef&&u.dom.setStyle(e.popupRef,"width",e.width)},0))},C.prototype.handleResize=function(){var e=this;clearTimeout(this.resizeTimeout),this.state.visible&&(this.resizeTimeout=setTimeout(function(){e.syncWidth()},200))},C.prototype.setDataSource=function(e){var t=e.dataSource,e=e.children;return i.Children.count(e)?this.dataStore.updateByDS(e,!0):Array.isArray(t)?this.dataStore.updateByDS(t,!1):[]},C.prototype.setVisible=function(e,t){this.props.disabled&&e||this.state.visible===e||("visible"in this.props||this.setState({visible:e}),this.props.onVisibleChange(e,t))},C.prototype.setFirstHightLightKeyForMenu=function(e){var t=this.state.highlightKey;this.props.autoHighlightFirstItem&&(this.dataStore.getMenuDS().length&&this.dataStore.getEnableDS().length&&(!t||e)&&(t=""+this.dataStore.getEnableDS()[0].value,this.setState({highlightKey:t}),this.props.onToggleHighlightItem(t,"autoFirstItem")),e&&!this.dataStore.getEnableDS().length&&(this.setState({highlightKey:null}),this.props.onToggleHighlightItem(null,"highlightKeyToNull")))},C.prototype.handleChange=function(e){var t;"value"in this.props||this.setState({value:e});for(var n=arguments.length,a=Array(1e.slidesToShow&&(n=e.slideWidth*e.slidesToShow*-1,o=e.slideHeight*e.slidesToShow*-1),e.slideCount%e.slidesToScroll!=0&&(t=e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow,(t=e.rtl?(e.slideIndex>=e.slideCount?e.slideCount-e.slideIndex:e.slideIndex)+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow:t)&&(o=e.slideIndex>e.slideCount?(n=(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideWidth*-1,(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideHeight*-1):(n=e.slideCount%e.slidesToScroll*e.slideWidth*-1,e.slideCount%e.slidesToScroll*e.slideHeight*-1)))):e.slideCount%e.slidesToScroll!=0&&e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow&&(n=(e.slidesToShow-e.slideCount%e.slidesToScroll)*e.slideWidth),e.centerMode&&(e.infinite?n+=e.slideWidth*Math.floor(e.slidesToShow/2):n=e.slideWidth*Math.floor(e.slidesToShow/2)),a=e.vertical?e.slideIndex*e.slideHeight*-1+o:e.slideIndex*e.slideWidth*-1+n,!0===e.variableWidth&&(t=void 0,a=(r=e.slideCount<=e.slidesToShow||!1===e.infinite?i.default.findDOMNode(e.trackRef).childNodes[e.slideIndex]:(t=e.slideIndex+e.slidesToShow,i.default.findDOMNode(e.trackRef).childNodes[t]))?-1*r.offsetLeft:0,!0===e.centerMode&&(r=!1===e.infinite?i.default.findDOMNode(e.trackRef).children[e.slideIndex]:i.default.findDOMNode(e.trackRef).children[e.slideIndex+e.slidesToShow+1])&&(a=-1*r.offsetLeft+(e.listWidth-r.offsetWidth)/2)),a)}},function(e,t,n){"use strict";t.__esModule=!0;var p=u(n(2)),h=u(n(12)),o=u(n(4)),i=u(n(5)),a=u(n(6)),m=u(n(0)),r=u(n(3)),g=u(n(13)),l=u(n(7)),y=u(n(24)),s=n(10);function u(e){return e&&e.__esModule?e:{default:e}}d=m.default.Component,(0,a.default)(c,d),c.prototype.render=function(){var e=this.props,t=e.title,n=e.children,a=e.className,r=e.isExpanded,o=e.disabled,i=e.style,l=e.prefix,s=e.onClick,u=e.id,e=(0,h.default)(e,["title","children","className","isExpanded","disabled","style","prefix","onClick","id"]),a=(0,g.default)(((d={})[l+"collapse-panel"]=!0,d[l+"collapse-panel-hidden"]=!r,d[l+"collapse-panel-expanded"]=r,d[l+"collapse-panel-disabled"]=o,d[a]=a,d)),d=(0,g.default)(((d={})[l+"collapse-panel-icon"]=!0,d[l+"collapse-panel-icon-expanded"]=r,d)),c=u?u+"-heading":void 0,f=u?u+"-region":void 0;return m.default.createElement("div",(0,p.default)({className:a,style:i,id:u},e),m.default.createElement("div",{id:c,className:l+"collapse-panel-title",onClick:s,onKeyDown:this.onKeyDown,tabIndex:"0","aria-disabled":o,"aria-expanded":r,"aria-controls":f,role:"button"},m.default.createElement(y.default,{type:"arrow-right",className:d,"aria-hidden":"true"}),t),m.default.createElement("div",{className:l+"collapse-panel-content",role:"region",id:f},n))},a=n=c,n.propTypes={prefix:r.default.string,style:r.default.object,children:r.default.any,isExpanded:r.default.bool,disabled:r.default.bool,title:r.default.node,className:r.default.string,onClick:r.default.func,id:r.default.string},n.defaultProps={prefix:"next-",isExpanded:!1,onClick:s.func.noop},n.isNextPanel=!0;var d,r=a;function c(){var e,n;(0,o.default)(this,c);for(var t=arguments.length,a=Array(t),r=0;r\n com.alibaba.nacos\n nacos-client\n ${version}\n
\n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\nimport java.util.concurrent.Executor;\nimport com.alibaba.nacos.api.NacosFactory;\nimport com.alibaba.nacos.api.config.ConfigService;\nimport com.alibaba.nacos.api.config.listener.Listener;\nimport com.alibaba.nacos.api.exception.NacosException;\n\n/**\n * Config service example\n *\n * @author Nacos\n *\n */\npublic class ConfigExample {\n\n\tpublic static void main(String[] args) throws NacosException, InterruptedException {\n\t\tString serverAddr = "localhost";\n\t\tString dataId = "'.concat(e.dataId,'";\n\t\tString group = "').concat(e.group,'";\n\t\tProperties properties = new Properties();\n\t\tproperties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);\n\t\tConfigService configService = NacosFactory.createConfigService(properties);\n\t\tString content = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tconfigService.addListener(dataId, group, new Listener() {\n\t\t\t@Override\n\t\t\tpublic void receiveConfigInfo(String configInfo) {\n\t\t\t\tSystem.out.println("recieve:" + configInfo);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Executor getExecutor() {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\n\t\tboolean isPublishOk = configService.publishConfig(dataId, group, "content");\n\t\tSystem.out.println(isPublishOk);\n\n\t\tThread.sleep(3000);\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\n\t\tboolean isRemoveOk = configService.removeConfig(dataId, group);\n\t\tSystem.out.println(isRemoveOk);\n\t\tThread.sleep(3000);\n\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tThread.sleep(300000);\n\n\t}\n}\n')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/*\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n string serverAddr = "http://localhost:8848";\n string dataId = "'.concat(e.dataId,'";\n string group = "').concat(e.group,'";\n\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Config(x =>\n {\n x.ServerAddresses = new List { serverAddr };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.ConfigUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var configSvc = serviceProvider.GetService();\n\n var content = await configSvc.GetConfig(dataId, group, 3000);\n Console.WriteLine(content);\n\n var listener = new ConfigListener();\n\n await configSvc.AddListener(dataId, group, listener);\n\n var isPublishOk = await configSvc.PublishConfig(dataId, group, "content");\n Console.WriteLine(isPublishOk);\n\n await Task.Delay(3000);\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n\n var isRemoveOk = await configSvc.RemoveConfig(dataId, group);\n Console.WriteLine(isRemoveOk);\n await Task.Delay(3000);\n\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n await Task.Delay(300000);\n }\n\n internal class ConfigListener : IListener\n {\n public void ReceiveConfigInfo(string configInfo)\n {\n Console.WriteLine("recieve:" + configInfo);\n }\n }\n}\n\n/*\nRefer to document: https://github.com/nacos-group/nacos-sdk-csharp/tree/dev/samples/MsConfigApp\nDemo for ASP.NET Core Integration\nMsConfigApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Hosting;\nusing Serilog;\nusing Serilog.Events;\n\npublic class Program\n{\n public static void Main(string[] args)\n {\n Log.Logger = new LoggerConfiguration()\n .Enrich.FromLogContext()\n .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)\n .MinimumLevel.Override("System", LogEventLevel.Warning)\n .MinimumLevel.Debug()\n .WriteTo.Console()\n .CreateLogger();\n\n try\n {\n Log.ForContext().Information("Application starting...");\n CreateHostBuilder(args, Log.Logger).Build().Run();\n }\n catch (System.Exception ex)\n {\n Log.ForContext().Fatal(ex, "Application start-up failed!!");\n }\n finally\n {\n Log.CloseAndFlush();\n }\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args, Serilog.ILogger logger) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureAppConfiguration((context, builder) =>\n {\n var c = builder.Build();\n builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), logAction: x => x.AddSerilog(logger));\n })\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.UseStartup().UseUrls("http://*:8787");\n })\n .UseSerilog();\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return E.a.createElement("div",null,E.a.createElement(g.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:E.a.createElement("div",null),onClose:this.closeDialog.bind(this)},E.a.createElement("div",{style:{height:500}},E.a.createElement(D.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},E.a.createElement(O.a,{shape:"text",style:{height:40,paddingBottom:10}},E.a.createElement(N,{title:"Java",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),E.a.createElement(N,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigboot_code)}),E.a.createElement(N,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloud_code)}),E.a.createElement(N,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),E.a.createElement(N,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),E.a.createElement(N,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),E.a.createElement(N,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),E.a.createElement(N,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),E.a.createElement("div",{ref:"codepreview"})))))}}]),n}(E.a.Component)).displayName="ShowCodeing",k=k))||k,k=(t(65),t(38)),k=t.n(k),A=(t(710),k.a.Row),P=k.a.Col,H=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(e){return Object(v.a)(this,n),(e=t.call(this,e)).state={visible:!1,title:"",content:"",isok:!0,dataId:"",group:""},e}return Object(_.a)(n,[{key:"componentDidMount",value:function(){this.initData()}},{key:"initData",value:function(){var e=this.props.locale;this.setState({title:(void 0===e?{}:e).confManagement})}},{key:"openDialog",value:function(e){this.setState({visible:!0,title:e.title,content:e.content,isok:e.isok,dataId:e.dataId,group:e.group,message:e.message})}},{key:"closeDialog",value:function(){this.setState({visible:!1})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e,t=E.a.createElement("div",{style:{textAlign:"right"}},E.a.createElement(d.a,{type:"primary",onClick:this.closeDialog.bind(this)},e.determine));return E.a.createElement("div",null,E.a.createElement(g.a,{visible:this.state.visible,footer:t,style:{width:555},onCancel:this.closeDialog.bind(this),onClose:this.closeDialog.bind(this),title:e.deletetitle},E.a.createElement("div",null,E.a.createElement(A,null,E.a.createElement(P,{span:"4",style:{paddingTop:16}},E.a.createElement(h.a,{type:"".concat(this.state.isok?"success":"delete","-filling"),style:{color:this.state.isok?"green":"red"},size:"xl"})),E.a.createElement(P,{span:"20"},E.a.createElement("div",null,E.a.createElement("h3",null,this.state.isok?e.deletedSuccessfully:e.deleteFailed),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Data ID:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.dataId)),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Group:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.group)),this.state.isok?"":E.a.createElement("p",{style:{color:"red"}},this.state.message)))))))}}]),n}(E.a.Component)).displayName="DeleteDialog",k=k))||k,k=(t(711),t(415)),F=t.n(k),z=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(){return Object(v.a)(this,n),t.apply(this,arguments)}return Object(_.a)(n,[{key:"render",value:function(){var e=this.props,t=e.data,t=void 0===t?{}:t,n=e.height,e=e.locale,a=void 0===e?{}:e;return E.a.createElement("div",null,"notice"===t.modeType?E.a.createElement("div",{"data-spm-click":"gostr=/aliyun;locaid=notice"},E.a.createElement(F.a,{style:{marginBottom:1l?b.a.createElement(u.a,{className:"pagination",total:i.count,pageSize:l,onChange:function(e){return a.onChangePage(e)}}):null,b.a.createElement(C,{ref:this.editInstanceDialog,serviceName:n,clusterName:t,groupName:e,openLoading:function(){return a.openLoading()},closeLoading:function(){return a.closeLoading()},getInstanceList:function(){return a.getInstanceList()}})):null}}]),n}(b.a.Component)).displayName="InstanceTable",l.defaultProps={filters:new Map},l=l))||l,L=function(e,t){return e.filter(function(e){var n=e.metadata,a=!0;return t.forEach(function(e,t){if(e!==n[t])return a=!1}),a})},T=l,D=t(47),O=t(31),l=(t(171),t(72)),l=t.n(l),N=l.a.Group,P=l.a.Closeable,j=v.a.Item;var R=n.a.config(function(e){function t(){var e;a(),o&&l&&(e=new Map(Array.from(p)).set(o,l),h(e),d(""),f(""),n())}function n(){i(""),s("")}function a(){d(o?"":"error"),f(l?"":"error")}var r=Object(_.useState)(""),o=(r=Object(O.a)(r,2))[0],i=r[1],r=Object(_.useState)(""),l=(r=Object(O.a)(r,2))[0],s=r[1],r=Object(_.useState)(""),u=(r=Object(O.a)(r,2))[0],d=r[1],r=Object(_.useState)(""),c=(r=Object(O.a)(r,2))[0],f=r[1],r=Object(_.useState)(new Map),p=(r=Object(O.a)(r,2))[0],h=r[1],r=void 0===(r=e.locale)?{}:r;return Object(_.useEffect)(function(){e.setFilters(p)},[p]),b.a.createElement(m.a,{contentHeight:"auto",className:"inner-card"},b.a.createElement(v.a,{inline:!0,size:"small"},b.a.createElement(j,{label:r.title},b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"key",value:o,trim:!0,onChange:function(e){return i(e)},onPressEnter:t,state:u})),b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"value",value:l,trim:!0,onChange:function(e){return s(e)},onPressEnter:t,state:c})),b.a.createElement(j,{label:""},b.a.createElement(g.a,{type:"primary",onClick:t,style:{marginRight:10}},r.addFilter),0\n com.alibaba.nacos\n nacos-client\n ${latest.version}\n \n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\n\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingFactory;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.listener.Event;\nimport com.alibaba.nacos.api.naming.listener.EventListener;\nimport com.alibaba.nacos.api.naming.listener.NamingEvent;\n\n/**\n * @author nkorange\n */\npublic class NamingExample {\n\n public static void main(String[] args) throws NacosException {\n\n Properties properties = new Properties();\n properties.setProperty("serverAddr", System.getProperty("serverAddr"));\n properties.setProperty("namespace", System.getProperty("namespace"));\n\n NamingService naming = NamingFactory.createNamingService(properties);\n\n naming.registerInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n naming.registerInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.deregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.subscribe("').concat(this.record.name,'", new EventListener() {\n @Override\n public void onEvent(Event event) {\n System.out.println(((NamingEvent)event).getServiceName());\n System.out.println(((NamingEvent)event).getInstances());\n }\n });\n }\n}')}},{key:"getSpringCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example\n* pom.xml\n \n com.alibaba.nacos\n nacos-spring-context\n ${latest.version}\n \n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring\npackage com.alibaba.nacos.example.spring;\n\nimport com.alibaba.nacos.api.annotation.NacosProperties;\nimport com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\n@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))\npublic class NacosConfiguration {\n\n}\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring/controller\npackage com.alibaba.nacos.example.spring.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringBootCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example\n* pom.xml\n \n com.alibaba.boot\n nacos-discovery-spring-boot-starter\n ${latest.version}\n \n*/\n/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/resources\n* application.properties\n nacos.discovery.server-addr=127.0.0.1:8848\n*/\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/java/com/alibaba/nacos/example/spring/boot/controller\n\npackage com.alibaba.nacos.example.spring.boot.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringCloudCode",value:function(e){return"/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/\n* pom.xml\n \n org.springframework.cloud\n spring-cloud-starter-alibaba-nacos-discovery\n ${latest.version}\n \n*/\n\n// nacos-spring-cloud-provider-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/resources\n* application.properties\nserver.port=18080\nspring.application.name=".concat(this.record.name,'\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosProviderApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(NacosProviderApplication.class, args);\n}\n\n @RestController\n class EchoController {\n @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)\n public String echo(@PathVariable String string) {\n return "Hello Nacos Discovery " + string;\n }\n }\n}\n\n// nacos-spring-cloud-consumer-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/resources\n* application.properties\nspring.application.name=micro-service-oauth2\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.cloud.client.loadbalancer.LoadBalanced;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.client.RestTemplate;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosConsumerApplication {\n\n @LoadBalanced\n @Bean\n public RestTemplate restTemplate() {\n return new RestTemplate();\n }\n\n public static void main(String[] args) {\n SpringApplication.run(NacosConsumerApplication.class, args);\n }\n\n @RestController\n public class TestController {\n\n private final RestTemplate restTemplate;\n\n @Autowired\n public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}\n\n @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)\n public String echo(@PathVariable String str) {\n return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);\n }\n }\n}')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Naming(x =>\n {\n x.ServerAddresses = new List { "http://localhost:8848/" };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.NamingUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var namingSvc = serviceProvider.GetService();\n\n await namingSvc.RegisterInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n await namingSvc.RegisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(await namingSvc.GetAllInstances("').concat(this.record.name,'")));\n\n await namingSvc.DeregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n var listener = new EventListener();\n\n await namingSvc.Subscribe("').concat(this.record.name,'", listener);\n }\n\n internal class EventListener : IEventListener\n {\n public Task OnEvent(IEvent @event)\n {\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(@event));\n return Task.CompletedTask;\n }\n }\n}\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for ASP.NET Core Integration\nApp.csproj\n\n\n \n\n*/\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/appsettings.json\n* appsettings.json\n{\n "nacos": {\n "ServerAddresses": [ "http://localhost:8848" ],\n "DefaultTimeOut": 15000,\n "Namespace": "cs",\n "ServiceName": "App1",\n "GroupName": "DEFAULT_GROUP",\n "ClusterName": "DEFAULT",\n "Port": 0,\n "Weight": 100,\n "RegisterEnabled": true,\n "InstanceEnabled": true,\n "Ephemeral": true,\n "NamingUseRpc": true,\n "NamingLoadCacheAtStart": ""\n }\n}\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/Startup.cs\nusing Nacos.AspNetCore.V2;\n\npublic class Startup\n{\n public Startup(IConfiguration configuration)\n {\n Configuration = configuration;\n }\n\n public IConfiguration Configuration { get; }\n\n public void ConfigureServices(IServiceCollection services)\n {\n // ....\n services.AddNacosAspNet(Configuration);\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // ....\n }\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}),this.cm.setSize("auto","490px"))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return T.a.createElement("div",null,T.a.createElement(o.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:T.a.createElement("div",null),onClose:this.closeDialog.bind(this)},T.a.createElement("div",{style:{height:500}},T.a.createElement(m.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},T.a.createElement(g.a,{shape:"text",style:{height:40,paddingBottom:10}},T.a.createElement(y,{title:"Java",key:0,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),T.a.createElement(y,{title:"Spring",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.springCode)}),T.a.createElement(y,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigbootCode)}),T.a.createElement(y,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloudCode)}),T.a.createElement(y,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),T.a.createElement(y,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),T.a.createElement(y,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),T.a.createElement(y,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),T.a.createElement(y,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),T.a.createElement("div",{ref:"codepreview"})))))}}]),n}(T.a.Component)).displayName="ShowServiceCodeing",p=p))||p,j=(n(733),n(29)),Y=L.a.Item,I=f.a.Row,R=f.a.Col,A=C.a.Column,f=(0,a.a.config)(((p=function(e){Object(d.a)(a,e);var t=Object(c.a)(a);function a(e){var n;return Object(l.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryServiceList()})},n.showcode=function(){setTimeout(function(){return n.queryServiceList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:e.healthyInstanceCount?"":"row-bg-red"}},n.editServiceDialog=T.a.createRef(),n.showcode=T.a.createRef(),n.state={loading:!1,total:0,pageSize:10,currentPage:1,dataSource:[],search:{serviceName:"",groupName:""},hasIpCount:!("false"===localStorage.getItem("hasIpCount"))},n.field=new i.a(Object(u.a)(n)),n}return Object(s.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryServiceList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.search,o=e.withInstances,o=void 0!==o&&o,e=e.hasIpCount,e=["hasIpCount=".concat(e),"withInstances=".concat(o),"pageNo=".concat(t),"pageSize=".concat(a),"serviceNameParam=".concat(r.serviceName),"groupNameParam=".concat(r.groupName)];this.openLoading(),Object(h.c)({url:"v1/ns/catalog/services?".concat(e.join("&")),success:function(){var e=0o&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:n.totalCount,pageSize:o,onChange:function(e){return t.setState({pageNo:e},function(){return t.getUsers()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.c)(e).then(function(e){return t.setState({pageNo:1},function(){return t.getUsers()}),e})},onCancel:function(){return t.colseCreateUser()}}),h.a.createElement(E.a,{username:e,onOk:function(e){return Object(m.k)(e).then(function(e){return t.getUsers(),e})},onCancel:function(){return t.setState({passwordResetUser:void 0})}}))}}]),n}(h.a.Component)).displayName="UserManagement",n=o))||n)||n;t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),d=n(31),a=(n(62),n(20)),c=n.n(a),a=(n(32),n(18)),f=n.n(a),i=n(14),l=n(15),p=n(17),h=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),m=n.n(r),r=n(43),g=n(45),o=n(79),y=n(48),v=(n(49),n(26)),_=n.n(v),b=n(23),v=(n(58),n(28)),w=n.n(v),v=(n(42),n(9)),M=n.n(v),k=M.a.Item,S=w.a.Option,E={labelCol:{fixedSpan:4},wrapperCol:{span:19}},x=Object(r.b)(function(e){return{namespaces:e.namespace.namespaces}},{getNamespaces:o.b,searchRoles:g.l})(v=(0,a.a.config)(((v=function(e){Object(p.a)(o,e);var r=Object(h.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ai&&m.a.createElement(s.a,{className:"users-pagination",current:l,total:t.totalCount,pageSize:i,onChange:function(e){return a.setState({pageNo:e},function(){return a.getPermissions()})}}),m.a.createElement(x,{visible:n,onOk:function(e){return Object(g.a)(e).then(function(e){return a.setState({pageNo:1},function(){return a.getPermissions()}),e})},onCancel:function(){return a.colseCreatePermission()}}))}}]),n}(m.a.Component)).displayName="PermissionsManagement",n=v))||n)||n);t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),a=(n(62),n(20)),d=n.n(a),a=(n(32),n(18)),c=n.n(a),i=n(14),l=n(15),f=n(17),p=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),h=n.n(r),r=n(43),m=n(45),g=n(48),o=(n(58),n(28)),y=n.n(o),o=(n(40),n(11)),v=n.n(o),o=(n(49),n(26)),_=n.n(o),b=n(23),o=(n(42),n(9)),w=n.n(o),M=w.a.Item,k={labelCol:{fixedSpan:4},wrapperCol:{span:19}},S=Object(r.b)(function(e){return{users:e.authority.users}},{searchUsers:m.m})(o=(0,a.a.config)(((o=function(e){Object(f.a)(o,e);var r=Object(p.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ao&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:t.totalCount,pageSize:o,onChange:function(e){return a.setState({pageNo:e},function(){return a.getRoles()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.b)(e).then(function(e){return a.getRoles(),e})},onCancel:function(){return a.colseCreateRole()}}))}}]),n}(h.a.Component)).displayName="RolesManagement",n=o))||n)||n);t.a=r},function(e,t,n){"use strict";n(41);function o(e){var t=void 0===(t=localStorage.token)?"{}":t,t=(Object(y.c)(t)&&JSON.parse(t)||{}).globalAdmin;return["naming"===e?void 0:v,{key:"serviceManagementVirtual",children:[{key:"serviceManagement",url:"/serviceManagement"},{key:"subscriberList",url:"/subscriberList"}]},t?_:void 0,{key:"namespace",url:"/namespace"},{key:"clusterManagementVirtual",children:[{key:"clusterManagement",url:"/clusterManagement"}]}].filter(function(e){return e})}var a=n(24),i=n.n(a),r=n(14),l=n(15),s=n(17),u=n(16),a=(n(25),n(7)),a=n.n(a),d=n(21),c=(n(78),n(50)),f=n.n(c),c=n(0),p=n.n(c),c=n(37),h=n(43),m=n(131),g=n(98),y=n(47),v={key:"configurationManagementVirtual",children:[{key:"configurationManagement",url:"/configurationManagement"},{key:"historyRollback",url:"/historyRollback"},{key:"listeningToQuery",url:"/listeningToQuery"}]},_={key:"authorityControl",children:[{key:"userList",url:"/userManagement"},{key:"roleManagement",url:"/rolesManagement"},{key:"privilegeManagement",url:"/permissionsManagement"}]},b=f.a.SubMenu,w=f.a.Item,c=(n=Object(h.b)(function(e){return Object(d.a)(Object(d.a)({},e.locale),e.base)},{getState:g.b}),h=a.a.config,Object(c.g)(a=n(a=h(((g=function(e){Object(s.a)(n,e);var t=Object(u.a)(n);function n(){return Object(r.a)(this,n),t.apply(this,arguments)}return Object(l.a)(n,[{key:"componentDidMount",value:function(){this.props.getState()}},{key:"goBack",value:function(){this.props.history.goBack()}},{key:"navTo",value:function(e){var t=this.props.location.search;this.props.history.push([e,t].join(""))}},{key:"isCurrentPath",value:function(e){return e===this.props.location.pathname?"current-path":void 0}},{key:"defaultOpenKeys",value:function(){for(var t=this,e=o(this.props.functionMode),n=0,a=e.length;nthis.state.pageSize&&k.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},k.a.createElement(y.a,{current:this.state.pageNo,total:a,pageSize:this.state.pageSize,onChange:function(e){return t.setState({pageNo:e},function(){return t.querySubscriberList()})}}))))}}]),a}(k.a.Component)).displayName="SubscriberList",c=n))||c)||c;t.a=f},function(e,t,n){"use strict";n(51);var a=n(33),f=n.n(a),a=(n(63),n(46)),p=n.n(a),a=(n(171),n(72)),h=n.n(a),a=(n(40),n(11)),m=n.n(a),a=(n(32),n(18)),g=n.n(a),a=(n(34),n(19)),r=n.n(a),a=(n(49),n(26)),o=n.n(a),i=n(14),l=n(15),s=n(23),u=n(17),d=n(16),a=(n(25),n(7)),a=n.n(a),c=(n(399),n(112)),y=n.n(c),c=(n(62),n(20)),v=n.n(c),c=(n(65),n(38)),c=n.n(c),_=(n(42),n(9)),b=n.n(_),_=n(0),w=n.n(_),M=n(1),k=n(48),_=n(133),S=n.n(_),E=(n(736),b.a.Item),x=c.a.Row,C=c.a.Col,L=v.a.Column,T=y.a.Panel,c=(0,a.a.config)(((_=function(e){Object(u.a)(a,e);var t=Object(d.a)(a);function a(e){var n;return Object(i.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryClusterStateList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:(e.voteFor,"")}},n.state={loading:!1,total:0,pageSize:10,currentPage:1,keyword:"",dataSource:[]},n.field=new o.a(Object(s.a)(n)),n}return Object(l.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryClusterStateList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.keyword,e=e.withInstances,e=["withInstances=".concat(void 0!==e&&e),"pageNo=".concat(t),"pageSize=".concat(a),"keyword=".concat(r)];Object(M.c)({url:"v1/core/cluster/nodes?".concat(e.join("&")),beforeSend:function(){return n.openLoading()},success:function(){var e=0this.state.pageSize&&w.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},w.a.createElement(p.a,{current:this.state.currentPage,total:this.state.total,pageSize:this.state.pageSize,onChange:function(e){return t.setState({currentPage:e},function(){return t.queryClusterStateList()})}}))))}}]),a}(w.a.Component)).displayName="ClusterNodeList",n=_))||n;t.a=c},function(e,t,F){"use strict";F.r(t),function(e){F(51);var t=F(33),a=F.n(t),t=(F(25),F(7)),r=F.n(t),o=F(14),i=F(15),l=F(17),s=F(16),n=F(21),t=F(0),u=F.n(t),t=F(22),t=F.n(t),d=F(115),c=F(407),f=F(419),p=F(43),h=F(37),m=F(96),g=(F(454),F(428)),y=F(29),v=F(429),_=F(422),b=F(430),w=F(431),M=F(423),k=F(432),S=F(433),E=F(434),x=F(435),C=F(436),L=F(420),T=F(424),D=F(421),O=F(437),N=F(438),P=F(425),j=F(426),I=F(427),R=F(417),Y=F(418),A=F(101),e=(F(739),e.hot,localStorage.getItem(y.f)||localStorage.setItem(y.f,"zh-CN"===navigator.language?"zh-CN":"en-US"),Object(d.b)(Object(n.a)(Object(n.a)({},Y.a),{},{routing:c.routerReducer}))),Y=Object(d.d)(e,Object(d.c)(Object(d.a)(f.a),window[y.i]?window[y.i]():function(e){return e})),H=[{path:"/",exact:!0,render:function(){return u.a.createElement(h.a,{to:"/welcome"})}},{path:"/welcome",component:R.a},{path:"/namespace",component:_.a},{path:"/newconfig",component:b.a},{path:"/configsync",component:w.a},{path:"/configdetail",component:M.a},{path:"/configeditor",component:k.a},{path:"/historyDetail",component:S.a},{path:"/configRollback",component:E.a},{path:"/historyRollback",component:x.a},{path:"/listeningToQuery",component:C.a},{path:"/configurationManagement",component:L.a},{path:"/serviceManagement",component:T.a},{path:"/serviceDetail",component:D.a},{path:"/subscriberList",component:O.a},{path:"/clusterManagement",component:N.a},{path:"/userManagement",component:P.a},{path:"/rolesManagement",component:I.a},{path:"/permissionsManagement",component:j.a}],e=Object(p.b)(function(e){return Object(n.a)({},e.locale)},{changeLanguage:A.a})(c=function(e){Object(l.a)(n,e);var t=Object(s.a)(n);function n(e){return Object(o.a)(this,n),(e=t.call(this,e)).state={shownotice:"none",noticecontent:"",nacosLoading:{}},e}return Object(i.a)(n,[{key:"componentDidMount",value:function(){var e=localStorage.getItem(y.f);this.props.changeLanguage(e)}},{key:"router",get:function(){return u.a.createElement(m.a,null,u.a.createElement(h.d,null,u.a.createElement(h.b,{path:"/login",component:v.a}),u.a.createElement(g.a,null,H.map(function(e){return u.a.createElement(h.b,Object.assign({key:e.path},e))}))))}},{key:"render",value:function(){var e=this.props.locale;return u.a.createElement(a.a,Object.assign({className:"nacos-loading",shape:"flower",tip:"loading...",visible:!1,fullScreen:!0},this.state.nacosLoading),u.a.createElement(r.a,{locale:e},this.router))}}]),n}(u.a.Component))||c;t.a.render(u.a.createElement(p.a,{store:Y},u.a.createElement(e,null)),document.getElementById("root"))}.call(this,F(440)(e))},function(e,t){e.exports=function(e){var t;return e.webpackPolyfill||((t=Object.create(e)).children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1),t}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(I,e,t){"use strict"; +var t;e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var a=e*100+t;if(a<600)return"凌晨";else if(a<900)return"早上";else if(a<1130)return"上午";else if(a<1230)return"中午";else if(a<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){"use strict";t.__esModule=!0;var u=p(n(2)),a=p(n(4)),r=p(n(5)),o=p(n(6)),i=n(0),d=p(i),l=p(n(3)),c=p(n(13)),s=p(n(7)),f=n(10);function p(e){return e&&e.__esModule?e:{default:e}}h=i.Component,(0,o.default)(m,h),m.prototype.render=function(){var e,t=this.props,n=t.prefix,a=t.type,r=t.size,o=t.className,i=t.rtl,l=t.style,t=t.children,s=f.obj.pickOthers((0,u.default)({},m.propTypes),this.props),n=(0,c.default)(((e={})[n+"icon"]=!0,e[n+"icon-"+a]=!!a,e[""+n+r]=!!r&&"string"==typeof r,e[o]=!!o,e)),o=(i&&-1!==["arrow-left","arrow-right","arrow-double-left","arrow-double-right","switch","sorting","descending","ascending"].indexOf(a)&&(s.dir="rtl"),"number"==typeof r?{width:r,height:r,lineHeight:r+"px",fontSize:r}:{});return d.default.createElement("i",(0,u.default)({},s,{style:(0,u.default)({},o,l),className:n}),t)},i=n=m,n.propTypes=(0,u.default)({},s.default.propTypes,{type:l.default.string,children:l.default.node,size:l.default.oneOfType([l.default.oneOf(["xxs","xs","small","medium","large","xl","xxl","xxxl","inherit"]),l.default.number]),className:l.default.string,style:l.default.object}),n.defaultProps={prefix:"next-",size:"medium"},n._typeMark="icon";var h,o=i;function m(){return(0,a.default)(this,m),(0,r.default)(this,h.apply(this,arguments))}o.displayName="Icon",t.default=s.default.config(o),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var g=s(n(2)),y=s(n(12)),a=s(n(36)),r=s(n(4)),o=s(n(5)),i=s(n(6)),v=n(0),_=s(v),l=s(n(3)),b=n(154),w=s(n(522));function s(e){return e&&e.__esModule?e:{default:e}}function u(){}function M(e){return _.default.Children.toArray(e.children)[0]||null}d=v.Component,(0,i.default)(c,d),c.prototype.normalizeNames=function(e){return"string"==typeof e?{appear:e+"-appear",appearActive:e+"-appear-active",enter:e+"-enter",enterActive:e+"-enter-active",leave:e+"-leave",leaveActive:e+"-leave-active"}:"object"===(void 0===e?"undefined":(0,a.default)(e))?{appear:e.appear,appearActive:e.appear+"-active",enter:""+e.enter,enterActive:e.enter+"-active",leave:""+e.leave,leaveActive:e.leave+"-active"}:void 0},c.prototype.render=function(){var t=this,e=this.props,n=e.animation,a=e.children,r=e.animationAppear,o=e.singleMode,i=e.component,l=e.beforeAppear,s=e.onAppear,u=e.afterAppear,d=e.beforeEnter,c=e.onEnter,f=e.afterEnter,p=e.beforeLeave,h=e.onLeave,m=e.afterLeave,e=(0,y.default)(e,["animation","children","animationAppear","singleMode","component","beforeAppear","onAppear","afterAppear","beforeEnter","onEnter","afterEnter","beforeLeave","onLeave","afterLeave"]),a=v.Children.map(a,function(e){return _.default.createElement(w.default,{key:e.key,names:t.normalizeNames(n),onAppear:l,onAppearing:s,onAppeared:u,onEnter:d,onEntering:c,onEntered:f,onExit:p,onExiting:h,onExited:m},e)});return _.default.createElement(b.TransitionGroup,(0,g.default)({appear:r,component:o?M:i},e),a)},i=n=c,n.propTypes={animation:l.default.oneOfType([l.default.string,l.default.object]),animationAppear:l.default.bool,component:l.default.any,singleMode:l.default.bool,children:l.default.oneOfType([l.default.element,l.default.arrayOf(l.default.element)]),beforeAppear:l.default.func,onAppear:l.default.func,afterAppear:l.default.func,beforeEnter:l.default.func,onEnter:l.default.func,afterEnter:l.default.func,beforeLeave:l.default.func,onLeave:l.default.func,afterLeave:l.default.func},n.defaultProps={animationAppear:!0,component:"div",singleMode:!0,beforeAppear:u,onAppear:u,afterAppear:u,beforeEnter:u,onEnter:u,afterEnter:u,beforeLeave:u,onLeave:u,afterLeave:u};var d,l=i;function c(){return(0,r.default)(this,c),(0,o.default)(this,d.apply(this,arguments))}l.displayName="Animate",t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var a=function(e){{if(e&&e.__esModule)return e;var t,n={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&((t=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,a):{}).get||t.set?Object.defineProperty(n,a,t):n[a]=e[a]);return n.default=e,n}}(n(3)),o=l(n(0)),i=l(n(22)),r=n(30);n(343);function l(e){return e&&e.__esModule?e:{default:e}}var s="unmounted",u=(t.UNMOUNTED=s,"exited"),d=(t.EXITED=u,"entering"),c=(t.ENTERING=d,"entered"),f=(t.ENTERED=c,"exiting"),n=(t.EXITING=f,function(r){var e;function t(e,t){var n,a=r.call(this,e,t)||this,t=t.transitionGroup,t=t&&!t.isMounting?e.enter:e.appear;return a.appearStatus=null,e.in?t?(n=u,a.appearStatus=d):n=c:n=e.unmountOnExit||e.mountOnEnter?s:u,a.state={status:n},a.nextCallback=null,a}e=r,(n=t).prototype=Object.create(e.prototype),(n.prototype.constructor=n).__proto__=e;var n=t.prototype;return n.getChildContext=function(){return{transitionGroup:null}},t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===s?{status:u}:null},n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;e!==this.props&&(e=this.state.status,this.props.in?e!==d&&e!==c&&(t=d):e!==d&&e!==c||(t=f)),this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n=this.props.timeout,a=e=t=n;return null!=n&&"number"!=typeof n&&(a=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:a,enter:e,appear:t}},n.updateStatus=function(e,t){var n;void 0===e&&(e=!1),null!==t?(this.cancelNextCallback(),n=i.default.findDOMNode(this),t===d?this.performEnter(n,e):this.performExit(n)):this.props.unmountOnExit&&this.state.status===u&&this.setState({status:s})},n.performEnter=function(e,t){var n=this,a=this.props.enter,r=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,o=this.getTimeouts(),i=r?o.appear:o.enter;t||a?(this.props.onEnter(e,r),this.safeSetState({status:d},function(){n.props.onEntering(e,r),n.onTransitionEnd(e,i,function(){n.safeSetState({status:c},function(){n.props.onEntered(e,r)})})})):this.safeSetState({status:c},function(){n.props.onEntered(e)})},n.performExit=function(e){var t=this,n=this.props.exit,a=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:f},function(){t.props.onExiting(e),t.onTransitionEnd(e,a.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(t){var n=this,a=!0;return this.nextCallback=function(e){a&&(a=!1,n.nextCallback=null,t(e))},this.nextCallback.cancel=function(){a=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);n=null==t&&!this.props.addEndListener;!e||n?setTimeout(this.nextCallback,0):(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t))},n.render=function(){var e=this.state.status;if(e===s)return null;var t=this.props,n=t.children,t=function(e,t){if(null==e)return{};for(var n,a={},r=Object.keys(e),o=0;o 16.8.0"),null;function t(e){j.current=e,ne({})}function a(e,t){N(te,null),"function"==typeof S&&S(e,t)}function n(e){27===e.keyCode&&Y&&!P.current.size&&a("esc",e)}function r(){j.current||(t(!0),he.dom.setStyle(D.current,"display","none"),me.default.unlock(document.body,ee.current),s&&O.current&&(O.current.focus(),O.current=null),I())}var o=e.prefix,o=void 0===o?"next-":o,i=e.afterClose,I=void 0===i?ye:i,i=e.hasMask,l=void 0===i||i,i=e.autoFocus,s=void 0!==i&&i,i=e.className,R=e.title,A=e.children,H=e.footer,F=e.footerAlign,z=e.footerActions,u=e.onOk,u=void 0===u?ye:u,d=e.onCancel,W=e.okProps,V=e.cancelProps,c=e.locale,c=void 0===c?pe.default.Dialog:c,B=e.rtl,f=e.visible,p=e.closeMode,p=void 0===p?["close","esc"]:p,U=e.closeIcon,h=e.animation,h=void 0===h?{in:"fadeInUp",out:"fadeOutUp"}:h,m=e.cache,K=e.wrapperStyle,g=e.popupContainer,y=void 0===g?document.body:g,g=e.dialogRender,v=e.centered,_=e.top,_=void 0===_?v?40:100:_,b=e.bottom,b=void 0===b?40:b,w=e.width,w=void 0===w?520:w,G=e.height,M=e.isFullScreen,k=e.overflowScroll,M=void 0===k?!M:k,k=e.minMargin,S=e.onClose,q=e.style,E=(0,ie.default)(e,["prefix","afterClose","hasMask","autoFocus","className","title","children","footer","footerAlign","footerActions","onOk","onCancel","okProps","cancelProps","locale","rtl","visible","closeMode","closeIcon","animation","cache","wrapperStyle","popupContainer","dialogRender","centered","top","bottom","width","height","isFullScreen","overflowScroll","minMargin","onClose","style"]),x=("isFullScreen"in e&&he.log.deprecated("isFullScreen","overflowScroll","Dialog v2"),"minMargin"in e&&he.log.deprecated("minMargin","top/bottom","Dialog v2"),(0,le.useState)(f||!1)),$=x[0],J=x[1],x=(0,le.useState)(f),C=x[0],X=x[1],Q="string"==typeof y?function(){return document.getElementById(y)}:"function"!=typeof y?function(){return y}:y,x=(0,le.useState)(Q()),L=x[0],Z=x[1],T=(0,le.useRef)(null),D=(0,le.useRef)(null),O=(0,le.useRef)(null),ee=(0,le.useRef)(null),te=(0,le.useState)((0,he.guid)())[0],x=(0,le.useContext)(ge),N=x.setVisibleOverlayToParent,x=(0,ie.default)(x,["setVisibleOverlayToParent"]),P=(0,le.useRef)(new Map),j=(0,le.useRef)(!1),ne=(0,le.useState)()[1],Y=!1,ae=!1,re=!1;(Array.isArray(p)?p:[p]).forEach(function(e){switch(e){case"esc":Y=!0;break;case"mask":ae=!0;break;case"close":re=!0}}),(0,le.useEffect)(function(){"visible"in e&&X(f)},[f]),(0,le.useEffect)(function(){var e;C&&l&&(e={overflow:"hidden"},he.dom.hasScroll(document.body)&&he.dom.scrollbar().width&&(e.paddingRight=he.dom.getStyle(document.body,"paddingRight")+he.dom.scrollbar().width+"px"),ee.current=me.default.lock(document.body,e))},[C&&l]),(0,le.useEffect)(function(){if(C&&Y)return document.body.addEventListener("keydown",n,!1),function(){document.body.removeEventListener("keydown",n,!1)}},[C&&Y]),(0,le.useEffect)(function(){!$&&C&&J(!0)},[C]),(0,le.useEffect)(function(){L||setTimeout(function(){Z(Q())})},[L]);if((0,le.useEffect)(function(){return function(){r()}},[]),!1===$||!L)return null;if(!C&&!m&&j.current)return null;m=(0,de.default)(((p={})[o+"overlay-wrapper"]=!0,p.opened=C,p)),i=(0,de.default)(((p={})[o+"dialog-v2"]=!0,p[i]=!!i,p)),p={},k=void(v?_||b||!k?(_&&(p.marginTop=_),b&&(p.marginBottom=b)):(p.marginTop=k,p.marginBottom=k):(_&&(p.top=_),b&&(p.paddingBottom=b))),M&&(k="calc(100vh - "+(_+b)+"px)"),M={appear:300,enter:300,exit:250},_=se.default.createElement(fe.default.OverlayAnimate,{visible:C,animation:h,timeout:M,onEnter:function(){t(!1),he.dom.setStyle(D.current,"display","")},onEntered:function(){var e;s&&T.current&&T.current.bodyNode&&(0<(e=he.focus.getFocusNodeList(T.current.bodyNode)).length&&e[0]&&(O.current=document.activeElement,e[0].focus())),N(te,D.current)},onExited:r},se.default.createElement(ce.default,(0,oe.default)({},E,{style:v?(0,oe.default)({},p,q):q,v2:!0,ref:T,prefix:o,className:i,title:R,footer:H,footerAlign:F,footerActions:z,onOk:C?u:ye,onCancel:C?function(e){"function"==typeof d?d(e):a("cancelBtn",e)}:ye,okProps:W,cancelProps:V,locale:c,closeable:re,rtl:B,onClose:function(){for(var e=arguments.length,t=Array(e),n=0;n>6]+d[128|63&s]:s<55296||57344<=s?i+=d[224|s>>12]+d[128|s>>6&63]+d[128|63&s]:(l+=1,s=65536+((1023&s)<<10|1023&o.charCodeAt(l)),i+=d[240|s>>18]+d[128|s>>12&63]+d[128|s>>6&63]+d[128|63&s])}return i},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(m(e)){for(var n=[],a=0;athis.popupNode.offsetWidth&&p(this.popupNode,"width",l.offsetWidth+"px"),"outside"!==a||"hoz"===r&&1===n||(p(this.popupNode,"height",u.offsetHeight+"px"),this.popupNode.firstElementChild&&p(this.popupNode.firstElementChild,"overflow-y","auto")),this.popupProps);d.onOpen&&d.onOpen()}catch(e){return null}},S.prototype.handlePopupClose=function(){var e=this.props.root.popupNodes,t=e.indexOf(this.popupNode),e=(-1t?r[t+1]:r[0])}),n[a]||(o=r[0]),i.onSort(a,o)},i.keydownHandler=function(e){e.preventDefault(),e.stopPropagation(),e.keyCode===l.KEYCODE.ENTER&&i.handleClick()},i.onSort=function(e,t){var n={};n[e]=t,i.props.onSort(e,t,n)},(0,o.default)(i,e)}i.displayName="Sort",t.default=i,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=c(n(2)),a=c(n(4)),o=c(n(5)),i=c(n(6)),l=c(n(0)),s=c(n(3)),u=c(n(13)),d=c(n(386));function c(e){return e&&e.__esModule?e:{default:e}}f=l.default.Component,(0,i.default)(p,f),p.prototype.render=function(){var e=this.props,t=e.className,n=e.record,e=e.primaryKey,a=this.context.selectedRowKeys,n=(0,u.default)(((a={selected:-1 "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t){var i={}.hasOwnProperty,n=function(e){var t,n=o,a=e;for(t in a)i.call(a,t)&&(n[t]=a[t]);function r(){this.constructor=n}function o(e,t,n){this.message=e,this.parsedLine=t,this.snippet=n}return r.prototype=a.prototype,n.prototype=new r,n.__super__=a.prototype,o.prototype.toString=function(){return null!=this.parsedLine&&null!=this.snippet?" "+this.message+" (line "+this.parsedLine+": '"+this.snippet+"')":" "+this.message},o}(Error);e.exports=n},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var y=m(n(2)),a=m(n(4)),r=m(n(5)),o=m(n(6)),i=n(0),v=m(i),l=n(22),s=m(n(3)),_=m(n(13)),u=n(10),f=m(n(50)),d=m(n(61)),b=m(n(11)),c=m(n(44)),p=m(n(672)),h=m(n(397)),w=n(173);function m(e){return e&&e.__esModule?e:{default:e}}var M=d.default.Popup,g=f.default.Item,k=f.default.Group,n=u.func.noop,S=u.func.bindCtx,E=u.func.makeChain;x=v.default.Component,(0,o.default)(C,x),C.prototype.componentDidMount=function(){var e=this;setTimeout(function(){return e.syncWidth()},0),u.events.on(window,"resize",this.handleResize)},C.prototype.componentDidUpdate=function(e,t){e.label===this.props.label&&t.value===this.state.value||this.syncWidth()},C.prototype.componentWillUnmount=function(){u.events.off(window,"resize",this.handleResize),clearTimeout(this.resizeTimeout)},C.prototype.syncWidth=function(){var e=this,t=this.props,n=t.popupStyle,t=t.popupProps;n&&"width"in n||t&&t.style&&"width"in t.style||(n=u.dom.getStyle(this.selectDOM,"width"))&&this.width!==n&&(this.width=n,this.popupRef&&this.shouldAutoWidth()&&setTimeout(function(){e.popupRef&&u.dom.setStyle(e.popupRef,"width",e.width)},0))},C.prototype.handleResize=function(){var e=this;clearTimeout(this.resizeTimeout),this.state.visible&&(this.resizeTimeout=setTimeout(function(){e.syncWidth()},200))},C.prototype.setDataSource=function(e){var t=e.dataSource,e=e.children;return i.Children.count(e)?this.dataStore.updateByDS(e,!0):Array.isArray(t)?this.dataStore.updateByDS(t,!1):[]},C.prototype.setVisible=function(e,t){this.props.disabled&&e||this.state.visible===e||("visible"in this.props||this.setState({visible:e}),this.props.onVisibleChange(e,t))},C.prototype.setFirstHightLightKeyForMenu=function(e){var t=this.state.highlightKey;this.props.autoHighlightFirstItem&&(this.dataStore.getMenuDS().length&&this.dataStore.getEnableDS().length&&(!t||e)&&(t=""+this.dataStore.getEnableDS()[0].value,this.setState({highlightKey:t}),this.props.onToggleHighlightItem(t,"autoFirstItem")),e&&!this.dataStore.getEnableDS().length&&(this.setState({highlightKey:null}),this.props.onToggleHighlightItem(null,"highlightKeyToNull")))},C.prototype.handleChange=function(e){var t;"value"in this.props||this.setState({value:e});for(var n=arguments.length,a=Array(1e.slidesToShow&&(n=e.slideWidth*e.slidesToShow*-1,o=e.slideHeight*e.slidesToShow*-1),e.slideCount%e.slidesToScroll!=0&&(t=e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow,(t=e.rtl?(e.slideIndex>=e.slideCount?e.slideCount-e.slideIndex:e.slideIndex)+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow:t)&&(o=e.slideIndex>e.slideCount?(n=(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideWidth*-1,(e.slidesToShow-(e.slideIndex-e.slideCount))*e.slideHeight*-1):(n=e.slideCount%e.slidesToScroll*e.slideWidth*-1,e.slideCount%e.slidesToScroll*e.slideHeight*-1)))):e.slideCount%e.slidesToScroll!=0&&e.slideIndex+e.slidesToScroll>e.slideCount&&e.slideCount>e.slidesToShow&&(n=(e.slidesToShow-e.slideCount%e.slidesToScroll)*e.slideWidth),e.centerMode&&(e.infinite?n+=e.slideWidth*Math.floor(e.slidesToShow/2):n=e.slideWidth*Math.floor(e.slidesToShow/2)),a=e.vertical?e.slideIndex*e.slideHeight*-1+o:e.slideIndex*e.slideWidth*-1+n,!0===e.variableWidth&&(t=void 0,a=(r=e.slideCount<=e.slidesToShow||!1===e.infinite?i.default.findDOMNode(e.trackRef).childNodes[e.slideIndex]:(t=e.slideIndex+e.slidesToShow,i.default.findDOMNode(e.trackRef).childNodes[t]))?-1*r.offsetLeft:0,!0===e.centerMode&&(r=!1===e.infinite?i.default.findDOMNode(e.trackRef).children[e.slideIndex]:i.default.findDOMNode(e.trackRef).children[e.slideIndex+e.slidesToShow+1])&&(a=-1*r.offsetLeft+(e.listWidth-r.offsetWidth)/2)),a)}},function(e,t,n){"use strict";t.__esModule=!0;var p=u(n(2)),h=u(n(12)),o=u(n(4)),i=u(n(5)),a=u(n(6)),m=u(n(0)),r=u(n(3)),g=u(n(13)),l=u(n(7)),y=u(n(24)),s=n(10);function u(e){return e&&e.__esModule?e:{default:e}}d=m.default.Component,(0,a.default)(c,d),c.prototype.render=function(){var e=this.props,t=e.title,n=e.children,a=e.className,r=e.isExpanded,o=e.disabled,i=e.style,l=e.prefix,s=e.onClick,u=e.id,e=(0,h.default)(e,["title","children","className","isExpanded","disabled","style","prefix","onClick","id"]),a=(0,g.default)(((d={})[l+"collapse-panel"]=!0,d[l+"collapse-panel-hidden"]=!r,d[l+"collapse-panel-expanded"]=r,d[l+"collapse-panel-disabled"]=o,d[a]=a,d)),d=(0,g.default)(((d={})[l+"collapse-panel-icon"]=!0,d[l+"collapse-panel-icon-expanded"]=r,d)),c=u?u+"-heading":void 0,f=u?u+"-region":void 0;return m.default.createElement("div",(0,p.default)({className:a,style:i,id:u},e),m.default.createElement("div",{id:c,className:l+"collapse-panel-title",onClick:s,onKeyDown:this.onKeyDown,tabIndex:"0","aria-disabled":o,"aria-expanded":r,"aria-controls":f,role:"button"},m.default.createElement(y.default,{type:"arrow-right",className:d,"aria-hidden":"true"}),t),m.default.createElement("div",{className:l+"collapse-panel-content",role:"region",id:f},n))},a=n=c,n.propTypes={prefix:r.default.string,style:r.default.object,children:r.default.any,isExpanded:r.default.bool,disabled:r.default.bool,title:r.default.node,className:r.default.string,onClick:r.default.func,id:r.default.string},n.defaultProps={prefix:"next-",isExpanded:!1,onClick:s.func.noop},n.isNextPanel=!0;var d,r=a;function c(){var e,n;(0,o.default)(this,c);for(var t=arguments.length,a=Array(t),r=0;r\n com.alibaba.nacos\n nacos-client\n ${version}\n \n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\nimport java.util.concurrent.Executor;\nimport com.alibaba.nacos.api.NacosFactory;\nimport com.alibaba.nacos.api.config.ConfigService;\nimport com.alibaba.nacos.api.config.listener.Listener;\nimport com.alibaba.nacos.api.exception.NacosException;\n\n/**\n * Config service example\n *\n * @author Nacos\n *\n */\npublic class ConfigExample {\n\n\tpublic static void main(String[] args) throws NacosException, InterruptedException {\n\t\tString serverAddr = "localhost";\n\t\tString dataId = "'.concat(e.dataId,'";\n\t\tString group = "').concat(e.group,'";\n\t\tProperties properties = new Properties();\n\t\tproperties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);\n\t\tConfigService configService = NacosFactory.createConfigService(properties);\n\t\tString content = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tconfigService.addListener(dataId, group, new Listener() {\n\t\t\t@Override\n\t\t\tpublic void receiveConfigInfo(String configInfo) {\n\t\t\t\tSystem.out.println("recieve:" + configInfo);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Executor getExecutor() {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\n\t\tboolean isPublishOk = configService.publishConfig(dataId, group, "content");\n\t\tSystem.out.println(isPublishOk);\n\n\t\tThread.sleep(3000);\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\n\t\tboolean isRemoveOk = configService.removeConfig(dataId, group);\n\t\tSystem.out.println(isRemoveOk);\n\t\tThread.sleep(3000);\n\n\t\tcontent = configService.getConfig(dataId, group, 5000);\n\t\tSystem.out.println(content);\n\t\tThread.sleep(300000);\n\n\t}\n}\n')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/*\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n string serverAddr = "http://localhost:8848";\n string dataId = "'.concat(e.dataId,'";\n string group = "').concat(e.group,'";\n\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Config(x =>\n {\n x.ServerAddresses = new List { serverAddr };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.ConfigUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var configSvc = serviceProvider.GetService();\n\n var content = await configSvc.GetConfig(dataId, group, 3000);\n Console.WriteLine(content);\n\n var listener = new ConfigListener();\n\n await configSvc.AddListener(dataId, group, listener);\n\n var isPublishOk = await configSvc.PublishConfig(dataId, group, "content");\n Console.WriteLine(isPublishOk);\n\n await Task.Delay(3000);\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n\n var isRemoveOk = await configSvc.RemoveConfig(dataId, group);\n Console.WriteLine(isRemoveOk);\n await Task.Delay(3000);\n\n content = await configSvc.GetConfig(dataId, group, 5000);\n Console.WriteLine(content);\n await Task.Delay(300000);\n }\n\n internal class ConfigListener : IListener\n {\n public void ReceiveConfigInfo(string configInfo)\n {\n Console.WriteLine("recieve:" + configInfo);\n }\n }\n}\n\n/*\nRefer to document: https://github.com/nacos-group/nacos-sdk-csharp/tree/dev/samples/MsConfigApp\nDemo for ASP.NET Core Integration\nMsConfigApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Hosting;\nusing Serilog;\nusing Serilog.Events;\n\npublic class Program\n{\n public static void Main(string[] args)\n {\n Log.Logger = new LoggerConfiguration()\n .Enrich.FromLogContext()\n .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)\n .MinimumLevel.Override("System", LogEventLevel.Warning)\n .MinimumLevel.Debug()\n .WriteTo.Console()\n .CreateLogger();\n\n try\n {\n Log.ForContext().Information("Application starting...");\n CreateHostBuilder(args, Log.Logger).Build().Run();\n }\n catch (System.Exception ex)\n {\n Log.ForContext().Fatal(ex, "Application start-up failed!!");\n }\n finally\n {\n Log.CloseAndFlush();\n }\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args, Serilog.ILogger logger) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureAppConfiguration((context, builder) =>\n {\n var c = builder.Build();\n builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), logAction: x => x.AddSerilog(logger));\n })\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.UseStartup().UseUrls("http://*:8787");\n })\n .UseSerilog();\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return E.a.createElement("div",null,E.a.createElement(g.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:E.a.createElement("div",null),onClose:this.closeDialog.bind(this)},E.a.createElement("div",{style:{height:500}},E.a.createElement(D.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},E.a.createElement(O.a,{shape:"text",style:{height:40,paddingBottom:10}},E.a.createElement(N,{title:"Java",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),E.a.createElement(N,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigboot_code)}),E.a.createElement(N,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloud_code)}),E.a.createElement(N,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),E.a.createElement(N,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),E.a.createElement(N,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),E.a.createElement(N,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),E.a.createElement(N,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),E.a.createElement("div",{ref:"codepreview"})))))}}]),n}(E.a.Component)).displayName="ShowCodeing",k=k))||k,k=(t(65),t(38)),k=t.n(k),A=(t(711),k.a.Row),P=k.a.Col,H=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(e){return Object(v.a)(this,n),(e=t.call(this,e)).state={visible:!1,title:"",content:"",isok:!0,dataId:"",group:""},e}return Object(_.a)(n,[{key:"componentDidMount",value:function(){this.initData()}},{key:"initData",value:function(){var e=this.props.locale;this.setState({title:(void 0===e?{}:e).confManagement})}},{key:"openDialog",value:function(e){this.setState({visible:!0,title:e.title,content:e.content,isok:e.isok,dataId:e.dataId,group:e.group,message:e.message})}},{key:"closeDialog",value:function(){this.setState({visible:!1})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e,t=E.a.createElement("div",{style:{textAlign:"right"}},E.a.createElement(d.a,{type:"primary",onClick:this.closeDialog.bind(this)},e.determine));return E.a.createElement("div",null,E.a.createElement(g.a,{visible:this.state.visible,footer:t,style:{width:555},onCancel:this.closeDialog.bind(this),onClose:this.closeDialog.bind(this),title:e.deletetitle},E.a.createElement("div",null,E.a.createElement(A,null,E.a.createElement(P,{span:"4",style:{paddingTop:16}},E.a.createElement(h.a,{type:"".concat(this.state.isok?"success":"delete","-filling"),style:{color:this.state.isok?"green":"red"},size:"xl"})),E.a.createElement(P,{span:"20"},E.a.createElement("div",null,E.a.createElement("h3",null,this.state.isok?e.deletedSuccessfully:e.deleteFailed),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Data ID:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.dataId)),E.a.createElement("p",null,E.a.createElement("span",{style:{color:"#999",marginRight:5}},"Group:"),E.a.createElement("span",{style:{color:"#c7254e"}},this.state.group)),this.state.isok?"":E.a.createElement("p",{style:{color:"red"}},this.state.message)))))))}}]),n}(E.a.Component)).displayName="DeleteDialog",k=k))||k,k=(t(712),t(416)),F=t.n(k),z=(0,n.a.config)(((k=function(e){Object(w.a)(n,e);var t=Object(M.a)(n);function n(){return Object(v.a)(this,n),t.apply(this,arguments)}return Object(_.a)(n,[{key:"render",value:function(){var e=this.props,t=e.data,t=void 0===t?{}:t,n=e.height,e=e.locale,a=void 0===e?{}:e;return E.a.createElement("div",null,"notice"===t.modeType?E.a.createElement("div",{"data-spm-click":"gostr=/aliyun;locaid=notice"},E.a.createElement(F.a,{style:{marginBottom:1l?b.a.createElement(u.a,{className:"pagination",total:i.count,pageSize:l,onChange:function(e){return a.onChangePage(e)}}):null,b.a.createElement(C,{ref:this.editInstanceDialog,serviceName:n,clusterName:t,groupName:e,openLoading:function(){return a.openLoading()},closeLoading:function(){return a.closeLoading()},getInstanceList:function(){return a.getInstanceList()}})):null}}]),n}(b.a.Component)).displayName="InstanceTable",l.defaultProps={filters:new Map},l=l))||l,L=function(e,t){return e.filter(function(e){var n=e.metadata,a=!0;return t.forEach(function(e,t){if(e!==n[t])return a=!1}),a})},T=l,D=t(47),O=t(31),l=(t(171),t(72)),l=t.n(l),N=l.a.Group,P=l.a.Closeable,j=v.a.Item;var R=n.a.config(function(e){function t(){var e;a(),o&&l&&(e=new Map(Array.from(p)).set(o,l),h(e),d(""),f(""),n())}function n(){i(""),s("")}function a(){d(o?"":"error"),f(l?"":"error")}var r=Object(_.useState)(""),o=(r=Object(O.a)(r,2))[0],i=r[1],r=Object(_.useState)(""),l=(r=Object(O.a)(r,2))[0],s=r[1],r=Object(_.useState)(""),u=(r=Object(O.a)(r,2))[0],d=r[1],r=Object(_.useState)(""),c=(r=Object(O.a)(r,2))[0],f=r[1],r=Object(_.useState)(new Map),p=(r=Object(O.a)(r,2))[0],h=r[1],r=void 0===(r=e.locale)?{}:r;return Object(_.useEffect)(function(){e.setFilters(p)},[p]),b.a.createElement(m.a,{contentHeight:"auto",className:"inner-card"},b.a.createElement(v.a,{inline:!0,size:"small"},b.a.createElement(j,{label:r.title},b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"key",value:o,trim:!0,onChange:function(e){return i(e)},onPressEnter:t,state:u})),b.a.createElement(j,null,b.a.createElement(y.a,{placeholder:"value",value:l,trim:!0,onChange:function(e){return s(e)},onPressEnter:t,state:c})),b.a.createElement(j,{label:""},b.a.createElement(g.a,{type:"primary",onClick:t,style:{marginRight:10}},r.addFilter),0\n com.alibaba.nacos\n nacos-client\n ${latest.version}\n \n*/\npackage com.alibaba.nacos.example;\n\nimport java.util.Properties;\n\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingFactory;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.listener.Event;\nimport com.alibaba.nacos.api.naming.listener.EventListener;\nimport com.alibaba.nacos.api.naming.listener.NamingEvent;\n\n/**\n * @author nkorange\n */\npublic class NamingExample {\n\n public static void main(String[] args) throws NacosException {\n\n Properties properties = new Properties();\n properties.setProperty("serverAddr", System.getProperty("serverAddr"));\n properties.setProperty("namespace", System.getProperty("namespace"));\n\n NamingService naming = NamingFactory.createNamingService(properties);\n\n naming.registerInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n naming.registerInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.deregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n System.out.println(naming.getAllInstances("').concat(this.record.name,'"));\n\n naming.subscribe("').concat(this.record.name,'", new EventListener() {\n @Override\n public void onEvent(Event event) {\n System.out.println(((NamingEvent)event).getServiceName());\n System.out.println(((NamingEvent)event).getInstances());\n }\n });\n }\n}')}},{key:"getSpringCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example\n* pom.xml\n \n com.alibaba.nacos\n nacos-spring-context\n ${latest.version}\n \n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring\npackage com.alibaba.nacos.example.spring;\n\nimport com.alibaba.nacos.api.annotation.NacosProperties;\nimport com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\n@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))\npublic class NacosConfiguration {\n\n}\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example/src/main/java/com/alibaba/nacos/example/spring/controller\npackage com.alibaba.nacos.example.spring.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringBootCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example\n* pom.xml\n \n com.alibaba.boot\n nacos-discovery-spring-boot-starter\n ${latest.version}\n \n*/\n/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/resources\n* application.properties\n nacos.discovery.server-addr=127.0.0.1:8848\n*/\n// Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-boot-example/nacos-spring-boot-discovery-example/src/main/java/com/alibaba/nacos/example/spring/boot/controller\n\npackage com.alibaba.nacos.example.spring.boot.controller;\n\nimport com.alibaba.nacos.api.annotation.NacosInjected;\nimport com.alibaba.nacos.api.exception.NacosException;\nimport com.alibaba.nacos.api.naming.NamingService;\nimport com.alibaba.nacos.api.naming.pojo.Instance;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.List;\n\nimport static org.springframework.web.bind.annotation.RequestMethod.GET;\n\n@Controller\n@RequestMapping("discovery")\npublic class DiscoveryController {\n\n @NacosInjected\n private NamingService namingService;\n\n @RequestMapping(value = "/get", method = GET)\n @ResponseBody\n public List get(@RequestParam String serviceName) throws NacosException {\n return namingService.getAllInstances(serviceName);\n }\n}'}},{key:"getSpringCloudCode",value:function(e){return"/* Refer to document: https://github.com/nacos-group/nacos-examples/blob/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/\n* pom.xml\n \n org.springframework.cloud\n spring-cloud-starter-alibaba-nacos-discovery\n ${latest.version}\n \n*/\n\n// nacos-spring-cloud-provider-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/resources\n* application.properties\nserver.port=18080\nspring.application.name=".concat(this.record.name,'\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-provider-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosProviderApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(NacosProviderApplication.class, args);\n}\n\n @RestController\n class EchoController {\n @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)\n public String echo(@PathVariable String string) {\n return "Hello Nacos Discovery " + string;\n }\n }\n}\n\n// nacos-spring-cloud-consumer-example\n\n/* Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/resources\n* application.properties\nspring.application.name=micro-service-oauth2\nspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example/nacos-spring-cloud-consumer-example/src/main/java/com/alibaba/nacos/example/spring/cloud\npackage com.alibaba.nacos.example.spring.cloud;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.cloud.client.loadbalancer.LoadBalanced;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.client.RestTemplate;\n\n/**\n * @author xiaojing\n */\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class NacosConsumerApplication {\n\n @LoadBalanced\n @Bean\n public RestTemplate restTemplate() {\n return new RestTemplate();\n }\n\n public static void main(String[] args) {\n SpringApplication.run(NacosConsumerApplication.class, args);\n }\n\n @RestController\n public class TestController {\n\n private final RestTemplate restTemplate;\n\n @Autowired\n public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}\n\n @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)\n public String echo(@PathVariable String str) {\n return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);\n }\n }\n}')}},{key:"getNodejsCode",value:function(e){return"TODO"}},{key:"getCppCode",value:function(e){return"TODO"}},{key:"getShellCode",value:function(e){return"TODO"}},{key:"getPythonCode",value:function(e){return"TODO"}},{key:"getCSharpCode",value:function(e){return'/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for Basic Nacos Opreation\nApp.csproj\n\n\n \n\n*/\n\nusing Microsoft.Extensions.DependencyInjection;\nusing Nacos.V2;\nusing Nacos.V2.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n IServiceCollection services = new ServiceCollection();\n\n services.AddNacosV2Naming(x =>\n {\n x.ServerAddresses = new List { "http://localhost:8848/" };\n x.Namespace = "cs-test";\n\n // swich to use http or rpc\n x.NamingUseRpc = true;\n });\n\n IServiceProvider serviceProvider = services.BuildServiceProvider();\n var namingSvc = serviceProvider.GetService();\n\n await namingSvc.RegisterInstance("'.concat(this.record.name,'", "11.11.11.11", 8888, "TEST1");\n\n await namingSvc.RegisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(await namingSvc.GetAllInstances("').concat(this.record.name,'")));\n\n await namingSvc.DeregisterInstance("').concat(this.record.name,'", "2.2.2.2", 9999, "DEFAULT");\n\n var listener = new EventListener();\n\n await namingSvc.Subscribe("').concat(this.record.name,'", listener);\n }\n\n internal class EventListener : IEventListener\n {\n public Task OnEvent(IEvent @event)\n {\n Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(@event));\n return Task.CompletedTask;\n }\n }\n}\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/\nDemo for ASP.NET Core Integration\nApp.csproj\n\n\n \n\n*/\n\n/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/appsettings.json\n* appsettings.json\n{\n "nacos": {\n "ServerAddresses": [ "http://localhost:8848" ],\n "DefaultTimeOut": 15000,\n "Namespace": "cs",\n "ServiceName": "App1",\n "GroupName": "DEFAULT_GROUP",\n "ClusterName": "DEFAULT",\n "Port": 0,\n "Weight": 100,\n "RegisterEnabled": true,\n "InstanceEnabled": true,\n "Ephemeral": true,\n "NamingUseRpc": true,\n "NamingLoadCacheAtStart": ""\n }\n}\n*/\n\n// Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/samples/App1/Startup.cs\nusing Nacos.AspNetCore.V2;\n\npublic class Startup\n{\n public Startup(IConfiguration configuration)\n {\n Configuration = configuration;\n }\n\n public IConfiguration Configuration { get; }\n\n public void ConfigureServices(IServiceCollection services)\n {\n // ....\n services.AddNacosAspNet(Configuration);\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // ....\n }\n}\n ')}},{key:"openDialog",value:function(e){var t=this;this.setState({dialogvisible:!0}),this.record=e,setTimeout(function(){t.getData()})}},{key:"closeDialog",value:function(){this.setState({dialogvisible:!1})}},{key:"createCodeMirror",value:function(e,t){var n=this.refs.codepreview;n&&(n.innerHTML="",this.cm=window.CodeMirror(n,{value:t,mode:e,height:400,width:500,lineNumbers:!0,theme:"xq-light",lint:!0,tabMode:"indent",autoMatchParens:!0,textWrapping:!0,gutters:["CodeMirror-lint-markers"],extraKeys:{F1:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}}}),this.cm.setSize("auto","490px"))}},{key:"changeTab",value:function(e,t){var n=this;setTimeout(function(){n[e]=!0,n.createCodeMirror("text/javascript",t)})}},{key:"render",value:function(){var e=this.props.locale,e=void 0===e?{}:e;return T.a.createElement("div",null,T.a.createElement(o.a,{title:e.sampleCode,style:{width:"80%"},visible:this.state.dialogvisible,footer:T.a.createElement("div",null),onClose:this.closeDialog.bind(this)},T.a.createElement("div",{style:{height:500}},T.a.createElement(m.a,{tip:e.loading,style:{width:"100%"},visible:this.state.loading},T.a.createElement(g.a,{shape:"text",style:{height:40,paddingBottom:10}},T.a.createElement(y,{title:"Java",key:0,onClick:this.changeTab.bind(this,"commoneditor1",this.defaultCode)}),T.a.createElement(y,{title:"Spring",key:1,onClick:this.changeTab.bind(this,"commoneditor1",this.springCode)}),T.a.createElement(y,{title:"Spring Boot",key:2,onClick:this.changeTab.bind(this,"commoneditor2",this.sprigbootCode)}),T.a.createElement(y,{title:"Spring Cloud",key:21,onClick:this.changeTab.bind(this,"commoneditor21",this.sprigcloudCode)}),T.a.createElement(y,{title:"Node.js",key:3,onClick:this.changeTab.bind(this,"commoneditor3",this.nodejsCode)}),T.a.createElement(y,{title:"C++",key:4,onClick:this.changeTab.bind(this,"commoneditor4",this.cppCode)}),T.a.createElement(y,{title:"Shell",key:5,onClick:this.changeTab.bind(this,"commoneditor5",this.shellCode)}),T.a.createElement(y,{title:"Python",key:6,onClick:this.changeTab.bind(this,"commoneditor6",this.pythonCode)}),T.a.createElement(y,{title:"C#",key:7,onClick:this.changeTab.bind(this,"commoneditor7",this.csharpCode)})),T.a.createElement("div",{ref:"codepreview"})))))}}]),n}(T.a.Component)).displayName="ShowServiceCodeing",p=p))||p,j=(n(734),n(29)),Y=L.a.Item,I=f.a.Row,R=f.a.Col,A=C.a.Column,f=(0,a.a.config)(((p=function(e){Object(d.a)(a,e);var t=Object(c.a)(a);function a(e){var n;return Object(l.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryServiceList()})},n.showcode=function(){setTimeout(function(){return n.queryServiceList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:e.healthyInstanceCount?"":"row-bg-red"}},n.editServiceDialog=T.a.createRef(),n.showcode=T.a.createRef(),n.state={loading:!1,total:0,pageSize:10,currentPage:1,dataSource:[],search:{serviceName:"",groupName:""},hasIpCount:!("false"===localStorage.getItem("hasIpCount"))},n.field=new i.a(Object(u.a)(n)),n}return Object(s.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryServiceList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.search,o=e.withInstances,o=void 0!==o&&o,e=e.hasIpCount,e=["hasIpCount=".concat(e),"withInstances=".concat(o),"pageNo=".concat(t),"pageSize=".concat(a),"serviceNameParam=".concat(r.serviceName),"groupNameParam=".concat(r.groupName)];this.openLoading(),Object(h.c)({url:"v1/ns/catalog/services?".concat(e.join("&")),success:function(){var e=0o&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:n.totalCount,pageSize:o,onChange:function(e){return t.setState({pageNo:e},function(){return t.getUsers()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.c)(e).then(function(e){return t.setState({pageNo:1},function(){return t.getUsers()}),e})},onCancel:function(){return t.colseCreateUser()}}),h.a.createElement(E.a,{username:e,onOk:function(e){return Object(m.k)(e).then(function(e){return t.getUsers(),e})},onCancel:function(){return t.setState({passwordResetUser:void 0})}}))}}]),n}(h.a.Component)).displayName="UserManagement",n=o))||n)||n;t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),d=n(31),a=(n(62),n(20)),c=n.n(a),a=(n(32),n(18)),f=n.n(a),i=n(14),l=n(15),p=n(17),h=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),m=n.n(r),r=n(43),g=n(45),o=n(79),y=n(48),v=(n(49),n(26)),_=n.n(v),b=n(23),v=(n(58),n(28)),w=n.n(v),v=(n(42),n(9)),M=n.n(v),k=M.a.Item,S=w.a.Option,E={labelCol:{fixedSpan:4},wrapperCol:{span:19}},x=Object(r.b)(function(e){return{namespaces:e.namespace.namespaces}},{getNamespaces:o.b,searchRoles:g.l})(v=(0,a.a.config)(((v=function(e){Object(p.a)(o,e);var r=Object(h.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ai&&m.a.createElement(s.a,{className:"users-pagination",current:l,total:t.totalCount,pageSize:i,onChange:function(e){return a.setState({pageNo:e},function(){return a.getPermissions()})}}),m.a.createElement(x,{visible:n,onOk:function(e){return Object(g.a)(e).then(function(e){return a.setState({pageNo:1},function(){return a.getPermissions()}),e})},onCancel:function(){return a.colseCreatePermission()}}))}}]),n}(m.a.Component)).displayName="PermissionsManagement",n=v))||n)||n);t.a=r},function(e,t,n){"use strict";n(63);var a=n(46),s=n.n(a),a=(n(34),n(19)),u=n.n(a),a=(n(62),n(20)),d=n.n(a),a=(n(32),n(18)),c=n.n(a),i=n(14),l=n(15),f=n(17),p=n(16),a=(n(25),n(7)),a=n.n(a),r=n(0),h=n.n(r),r=n(43),m=n(45),g=n(48),o=(n(58),n(28)),y=n.n(o),o=(n(40),n(11)),v=n.n(o),o=(n(49),n(26)),_=n.n(o),b=n(23),o=(n(42),n(9)),w=n.n(o),M=w.a.Item,k={labelCol:{fixedSpan:4},wrapperCol:{span:19}},S=Object(r.b)(function(e){return{users:e.authority.users}},{searchUsers:m.m})(o=(0,a.a.config)(((o=function(e){Object(f.a)(o,e);var r=Object(p.a)(o);function o(){var t;Object(i.a)(this,o);for(var e=arguments.length,n=new Array(e),a=0;ao&&h.a.createElement(s.a,{className:"users-pagination",current:i,total:t.totalCount,pageSize:o,onChange:function(e){return a.setState({pageNo:e},function(){return a.getRoles()})}}),h.a.createElement(S,{visible:l,onOk:function(e){return Object(m.b)(e).then(function(e){return a.getRoles(),e})},onCancel:function(){return a.colseCreateRole()}}))}}]),n}(h.a.Component)).displayName="RolesManagement",n=o))||n)||n);t.a=r},function(e,t,n){"use strict";n(41);function o(e){var t=void 0===(t=localStorage.token)?"{}":t,t=(Object(y.c)(t)&&JSON.parse(t)||{}).globalAdmin;return["naming"===e?void 0:v,{key:"serviceManagementVirtual",children:[{key:"serviceManagement",url:"/serviceManagement"},{key:"subscriberList",url:"/subscriberList"}]},t?_:void 0,{key:"namespace",url:"/namespace"},{key:"clusterManagementVirtual",children:[{key:"clusterManagement",url:"/clusterManagement"}]}].filter(function(e){return e})}var a=n(24),i=n.n(a),r=n(14),l=n(15),s=n(17),u=n(16),a=(n(25),n(7)),a=n.n(a),d=n(21),c=(n(78),n(50)),f=n.n(c),c=n(0),p=n.n(c),c=n(37),h=n(43),m=n(131),g=n(98),y=n(47),v={key:"configurationManagementVirtual",children:[{key:"configurationManagement",url:"/configurationManagement"},{key:"historyRollback",url:"/historyRollback"},{key:"listeningToQuery",url:"/listeningToQuery"}]},_={key:"authorityControl",children:[{key:"userList",url:"/userManagement"},{key:"roleManagement",url:"/rolesManagement"},{key:"privilegeManagement",url:"/permissionsManagement"}]},b=f.a.SubMenu,w=f.a.Item,c=(n=Object(h.b)(function(e){return Object(d.a)(Object(d.a)({},e.locale),e.base)},{getState:g.b}),h=a.a.config,Object(c.g)(a=n(a=h(((g=function(e){Object(s.a)(n,e);var t=Object(u.a)(n);function n(){return Object(r.a)(this,n),t.apply(this,arguments)}return Object(l.a)(n,[{key:"componentDidMount",value:function(){this.props.getState()}},{key:"goBack",value:function(){this.props.history.goBack()}},{key:"navTo",value:function(e){var t=this.props.location.search;this.props.history.push([e,t].join(""))}},{key:"isCurrentPath",value:function(e){return e===this.props.location.pathname?"current-path":void 0}},{key:"defaultOpenKeys",value:function(){for(var t=this,e=o(this.props.functionMode),n=0,a=e.length;nthis.state.pageSize&&k.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},k.a.createElement(y.a,{current:this.state.pageNo,total:a,pageSize:this.state.pageSize,onChange:function(e){return t.setState({pageNo:e},function(){return t.querySubscriberList()})}}))))}}]),a}(k.a.Component)).displayName="SubscriberList",c=n))||c)||c;t.a=f},function(e,t,n){"use strict";n(51);var a=n(33),f=n.n(a),a=(n(63),n(46)),p=n.n(a),a=(n(171),n(72)),h=n.n(a),a=(n(40),n(11)),m=n.n(a),a=(n(32),n(18)),g=n.n(a),a=(n(34),n(19)),r=n.n(a),a=(n(49),n(26)),o=n.n(a),i=n(14),l=n(15),s=n(23),u=n(17),d=n(16),a=(n(25),n(7)),a=n.n(a),c=(n(400),n(112)),y=n.n(c),c=(n(62),n(20)),v=n.n(c),c=(n(65),n(38)),c=n.n(c),_=(n(42),n(9)),b=n.n(_),_=n(0),w=n.n(_),M=n(1),k=n(48),_=n(133),S=n.n(_),E=(n(737),b.a.Item),x=c.a.Row,C=c.a.Col,L=v.a.Column,T=y.a.Panel,c=(0,a.a.config)(((_=function(e){Object(u.a)(a,e);var t=Object(d.a)(a);function a(e){var n;return Object(i.a)(this,a),(n=t.call(this,e)).getQueryLater=function(){setTimeout(function(){return n.queryClusterStateList()})},n.setNowNameSpace=function(e,t){return n.setState({nowNamespaceName:e,nowNamespaceId:t})},n.rowColor=function(e){return{className:(e.voteFor,"")}},n.state={loading:!1,total:0,pageSize:10,currentPage:1,keyword:"",dataSource:[]},n.field=new o.a(Object(s.a)(n)),n}return Object(l.a)(a,[{key:"openLoading",value:function(){this.setState({loading:!0})}},{key:"closeLoading",value:function(){this.setState({loading:!1})}},{key:"openEditServiceDialog",value:function(){try{this.editServiceDialog.current.getInstance().show(this.state.service)}catch(e){}}},{key:"queryClusterStateList",value:function(){var n=this,e=this.state,t=e.currentPage,a=e.pageSize,r=e.keyword,e=e.withInstances,e=["withInstances=".concat(void 0!==e&&e),"pageNo=".concat(t),"pageSize=".concat(a),"keyword=".concat(r)];Object(M.c)({url:"v1/core/cluster/nodes?".concat(e.join("&")),beforeSend:function(){return n.openLoading()},success:function(){var e=0this.state.pageSize&&w.a.createElement("div",{style:{marginTop:10,textAlign:"right"}},w.a.createElement(p.a,{current:this.state.currentPage,total:this.state.total,pageSize:this.state.pageSize,onChange:function(e){return t.setState({currentPage:e},function(){return t.queryClusterStateList()})}}))))}}]),a}(w.a.Component)).displayName="ClusterNodeList",n=_))||n;t.a=c},function(e,t,F){"use strict";F.r(t),function(e){F(51);var t=F(33),a=F.n(t),t=(F(25),F(7)),r=F.n(t),o=F(14),i=F(15),l=F(17),s=F(16),n=F(21),t=F(0),u=F.n(t),t=F(22),t=F.n(t),d=F(115),c=F(408),f=F(420),p=F(43),h=F(37),m=F(96),g=(F(455),F(429)),y=F(29),v=F(430),_=F(423),b=F(431),w=F(432),M=F(424),k=F(433),S=F(434),E=F(435),x=F(436),C=F(437),L=F(421),T=F(425),D=F(422),O=F(438),N=F(439),P=F(426),j=F(427),I=F(428),R=F(418),Y=F(419),A=F(101),e=(F(740),e.hot,localStorage.getItem(y.f)||localStorage.setItem(y.f,"zh-CN"===navigator.language?"zh-CN":"en-US"),Object(d.b)(Object(n.a)(Object(n.a)({},Y.a),{},{routing:c.routerReducer}))),Y=Object(d.d)(e,Object(d.c)(Object(d.a)(f.a),window[y.i]?window[y.i]():function(e){return e})),H=[{path:"/",exact:!0,render:function(){return u.a.createElement(h.a,{to:"/welcome"})}},{path:"/welcome",component:R.a},{path:"/namespace",component:_.a},{path:"/newconfig",component:b.a},{path:"/configsync",component:w.a},{path:"/configdetail",component:M.a},{path:"/configeditor",component:k.a},{path:"/historyDetail",component:S.a},{path:"/configRollback",component:E.a},{path:"/historyRollback",component:x.a},{path:"/listeningToQuery",component:C.a},{path:"/configurationManagement",component:L.a},{path:"/serviceManagement",component:T.a},{path:"/serviceDetail",component:D.a},{path:"/subscriberList",component:O.a},{path:"/clusterManagement",component:N.a},{path:"/userManagement",component:P.a},{path:"/rolesManagement",component:I.a},{path:"/permissionsManagement",component:j.a}],e=Object(p.b)(function(e){return Object(n.a)({},e.locale)},{changeLanguage:A.a})(c=function(e){Object(l.a)(n,e);var t=Object(s.a)(n);function n(e){return Object(o.a)(this,n),(e=t.call(this,e)).state={shownotice:"none",noticecontent:"",nacosLoading:{}},e}return Object(i.a)(n,[{key:"componentDidMount",value:function(){var e=localStorage.getItem(y.f);this.props.changeLanguage(e)}},{key:"router",get:function(){return u.a.createElement(m.a,null,u.a.createElement(h.d,null,u.a.createElement(h.b,{path:"/login",component:v.a}),u.a.createElement(g.a,null,H.map(function(e){return u.a.createElement(h.b,Object.assign({key:e.path},e))}))))}},{key:"render",value:function(){var e=this.props.locale;return u.a.createElement(a.a,Object.assign({className:"nacos-loading",shape:"flower",tip:"loading...",visible:!1,fullScreen:!0},this.state.nacosLoading),u.a.createElement(r.a,{locale:e},this.router))}}]),n}(u.a.Component))||c;t.a.render(u.a.createElement(p.a,{store:Y},u.a.createElement(e,null)),document.getElementById("root"))}.call(this,F(441)(e))},function(e,t){e.exports=function(e){var t;return e.webpackPolyfill||((t=Object.create(e)).children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1),t}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(I,e,t){"use strict"; /** @license React v16.14.0 * react.production.min.js * @@ -302,7 +302,7 @@ var t;e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var w=t(0),y=t(183),r=t(448);function R(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n