/*! For license information please see main.js.LICENSE.txt */
(()=>{"use strict";function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function t(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var r=function(){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t)}var r,n,i;return r=t,i=[{key:"replace",value:function(){"https://junit.org/junit5/"===location.href&&($(this.selectors.junitAbout).prevAll().remove(),$(this.selectors.junitLogo).attr("src",this.junitLogoUrl),$(this.selectors.junitFavicon).attr("href",this.junitLogoUrl))}}],(n=null)&&e(r.prototype,n),i&&e(r,i),Object.defineProperty(r,"prototype",{writable:!1}),t}();function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}t(r,"selectors",{reactBar:".css-lpiycv",junitAbout:"#about",junitLogo:'img[src="/junit5/assets/img/junit5-logo.png"]',junitFavicon:'link[rel="icon"]',codeceptBar:".sub-bar .message"}),t(r,"junitLogoUrl","https://raw.githubusercontent.com/duanluan/tampermonkey-scripts/main/core-socialist-values/src/junit/imgs/junit5-logo-csv.png");var i,a,o,l=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,i;return t=e,i=[{key:"replace",value:function(t,r){$(t).text().match(/ukraine|乌克兰|black|黑人/i)&&(e.loopReplaceBar(t),r&&new MutationObserver((function(r,n){e.loopReplaceBar(t)})).observe($(r)[0],{childList:!0}))}},{key:"loopReplaceBar",value:function(t){if($($(t)[0]).text().replace(/\s+/g,"")!==e.txt)var r=setInterval((function(){$($(t)[0]).text().replace(/\s+/g,"")===e.txt&&clearInterval(r),e.replaceBar(t)}),1e3)}},{key:"replaceBar",value:function(e){var t=".csv_bar",r=".csv_bar .csv_bar_ul";$(e).css({minHeight:"40px"}),$(e).html("\n <div class=\"csv_bar\">\n <ul class='csv_bar_ul'><li>富强</li><li>民主</li><li>文明</li><li>和谐</li><li>自由</li><li>平等</li><li>公正</li><li>法治</li><li>爱国</li><li>敬业</li><li>诚信</li><li>友善</li></ul><br>\n <ul class='csv_bar_ul'><li>Prosperity</li><li>Democracy</li><li>Civility</li><li>Harmony</li><li>Freedom</li><li>Equality</li><li>Justice</li><li>Rule of law</li><li>Patriotism</li><li>Dedication</li><li>Integrity</li><li>Friendship</li>\n </ul>\n </div>");var n=$(t);2==n.length&&n.eq(0).remove(),$(r).css({display:"inline-block",listStyle:"none",margin:0,padding:0,width:"auto"}),$(r+" li").css({color:"#DE2910",fontWeight:"bold",fontFamily:"KaiTi",float:"left",paddingRight:"10px","min-width":"80px",textAlign:"center"}),$(r+":first").css("verticalAlign","bottom"),$(r+":first li").css("fontSize","18px"),$(r+":eq(1) li").css("fontSize","13px")}}],(r=null)&&n(t.prototype,r),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function c(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}o="富强民主文明和谐自由平等公正法治爱国敬业诚信友善ProsperityDemocracyCivilityHarmonyFreedomEqualityJusticeRuleoflawPatriotismDedicationIntegrityFriendship",(a="txt")in(i=l)?Object.defineProperty(i,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):i[a]=o;var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,n;return t=e,n=[{key:"replace",value:function(){"reactjs.org"===location.host&&l.replace(this.selectors.bar,this.selectors.observingBar)}}],(r=null)&&c(t.prototype,r),n&&c(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(s,"selectors",{bar:".css-lpiycv",observingBar:"#gatsby-focus-wrapper"});var f=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,n;return t=e,n=[{key:"replace",value:function(){if("angular.io"===location.host&&!localStorage.getItem("aio-notification/war-ukraine")){var e=$(this.selectors.bar);e.length>0&&-1!=e.text().toLowerCase().indexOf("ukraine")&&$(this.selectors.dismissNotificationBtn)[0].click()}}}],(r=null)&&u(t.prototype,r),n&&u(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function b(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(f,"selectors",{bar:".mat-toolbar-row.notification-container",dismissNotificationBtn:'button[aria-label="Dismiss notification"]'});var p=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,n;return t=e,n=[{key:"replace",value:function(){"codecept.io"===location.host&&l.replace(this.selectors.bar,null)}}],(r=null)&&b(t.prototype,r),n&&b(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function v(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(p,"selectors",{bar:".sub-bar .message",observingBar:"#app"});var y=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,n;return t=e,n=[{key:"replace",value:function(){if("https://github.com/"===location.href){var e=$(this.selectors.notice);e.length>0&&-1!=e.text().toLowerCase().indexOf("ukraine")&&e.remove()}}}],(r=null)&&v(t.prototype,r),n&&v(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function g(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(y,"selectors",{notice:".border.js-notice"});var h=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,n;return t=e,n=[{key:"replace",value:function(){"docs.nestjs.com"===location.host&&(l.replace(this.selectors.bar,null),$(this.selectors.bar).css("padding","0"))}}],(r=null)&&g(t.prototype,r),n&&g(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function m(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(h,"selectors",{bar:".top-bar",observingBar:".ng-star-inserted"});var d=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,n;return t=e,n=[{key:"replace",value:function(){"emberjs.com"===location.host&&(l.replace(this.selectors.bar,null),$(this.selectors.bar).css({backgroundColor:"#1c1e24",padding:0}))}}],(r=null)&&m(t.prototype,r),n&&m(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function w(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(d,"selectors",{bar:".callout-banner"});var j=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r,n;return t=e,n=[{key:"replace",value:function(){"www.electronjs.org"===location.host&&(l.replace(this.selectors.bar,null),$(this.selectors.bar).css({padding:0}))}}],(r=null)&&w(t.prototype,r),n&&w(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(j,"selectors",{bar:".announcement-banner"}),s.replace(),f.replace(),r.replace(),p.replace(),y.replace(),h.replace(),d.replace(),j.replace()})// ==UserScript==
// @name 社会主义核心价值观(Core Socialist Values)
// @namespace http://tampermonkey.net/
// @version 0.7.0
// @description 替换政治相关条幅为社会主义核心价值观,替换政治相关 Logo 颜色为中国红,去除政治相关通知,让技术远离政治。
// @author duanluan
// @license Apache 2.0
// @match *://reactjs.org/*
// @match *://angular.io/*
// @match *://junit.org/*
// @match *://codecept.io/*
// @match *://github.com/*
// @match *://docs.nestjs.com/*
// @match *://emberjs.com/*
// @match *://www.electronjs.org/*
// @icon <$ICON$>
// @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.slim.min.js
// @grant none
// ==/UserScript==
();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoiO3FUQUFxQkEsRUFBQUEsMktBWW5CLFdBQ3dCLDhCQUFsQkMsU0FBU0MsT0FDWEMsRUFBRUMsS0FBS0MsVUFBVUMsWUFBWUMsVUFBVUMsU0FDdkNMLEVBQUVDLEtBQUtDLFVBQVVJLFdBQVdDLEtBQUssTUFBT04sS0FBS08sY0FDN0NSLEVBQUVDLEtBQUtDLFVBQVVPLGNBQWNGLEtBQUssT0FBUU4sS0FBS08sNEdBaEJsQ1gsMktBQUFBLEVBQUFBLFlBRVEsQ0FDekJhLFNBQVUsY0FDVlAsV0FBWSxTQUNaRyxVQUFXLGdEQUNYRyxhQUFjLG1CQUNkRSxZQUFhLHdCQVBJZCxFQUFBQSxlQVVXLDJJQ1ZYZSxFQUFBQSwyS0FPbkIsU0FBZUMsRUFBVUMsR0FDbEJkLEVBQUVhLEdBQVVFLE9BQU9DLE1BQU0sMkJBRzlCSixFQUFJSyxlQUFlSixHQUNmQyxHQUVGLElBQUlJLGtCQUFpQixTQUFDQyxFQUE2QkMsR0FDakRSLEVBQUlLLGVBQWVKLE1BQ2xCUSxRQUFRckIsRUFBRWMsR0FBbUIsR0FBSSxDQUFDUSxXQUFXLG1DQU9wRCxTQUE4QlQsR0FDNUIsR0FBSWIsRUFBRUEsRUFBRWEsR0FBVSxJQUFJRSxPQUFPUSxRQUFRLE9BQVEsTUFBUVgsRUFBSVksSUFHekQsSUFBTUMsRUFBU0MsYUFBWSxXQUNyQjFCLEVBQUVBLEVBQUVhLEdBQVUsSUFBSUUsT0FBT1EsUUFBUSxPQUFRLE1BQVFYLEVBQUlZLEtBQ3ZERyxjQUFjRixHQUVoQmIsRUFBSWdCLFdBQVdmLEtBQ2QsK0JBR0wsU0FBMEJBLEdBQ3hCLElBQU1nQixFQUFjLFdBQVlDLEVBQWdCRCx1QkFFaEQ3QixFQUFFYSxHQUFVa0IsSUFBSSxDQUFDLFVBQWEsU0FDOUIvQixFQUFFYSxHQUFVbUIsS0FBWiwyZEFRQSxJQUFNQyxFQUFPakMsRUFBRTZCLEdBQ0ksR0FBZkksRUFBS0MsUUFDUEQsRUFBS0UsR0FBRyxHQUFHOUIsU0FHYkwsRUFBRThCLEdBQWVDLElBQUksQ0FBQyxRQUFXLGVBQWdCLFVBQWEsT0FBUSxPQUFVLEVBQUcsUUFBVyxFQUFHLE1BQVMsU0FDMUcvQixFQUFFOEIsRUFBZ0IsT0FBT0MsSUFBSSxDQUFDLE1BQVMsVUFBVyxXQUFjLE9BQVEsV0FBYyxRQUFTLE1BQVMsT0FBUSxhQUFnQixPQUFRLFlBQWEsT0FBUSxVQUFhLFdBQzFLL0IsRUFBRThCLEVBQWdCLFVBQVVDLElBQUksZ0JBQWlCLFVBQ2pEL0IsRUFBRThCLEVBQWdCLGFBQWFDLElBQUksV0FBWSxRQUMvQy9CLEVBQUU4QixFQUFnQixhQUFhQyxJQUFJLFdBQVkscUdBeEQ5Qm5CLDJLQW9CRSxzSUFwQkZBLFdBQUFBLDZGQ0VBd0IsRUFBQUEsMktBT25CLFdBQ3dCLGdCQUFsQnRDLFNBQVN1QyxNQUNYekIsRUFBSVcsUUFBUXRCLEtBQUtDLFVBQVVvQyxJQUFLckMsS0FBS0MsVUFBVXFDLDJHQVRoQ0gsd1JBQUFBLEVBQUFBLFlBRVEsQ0FDekJFLElBQUssY0FDTEMsYUFBYyw4QkNOR0MsRUFBQUEsMktBT25CLFdBQ0UsR0FBc0IsZUFBbEIxQyxTQUFTdUMsT0FFTkksYUFBYUMsUUFBUSxnQ0FBaUMsQ0FFekQsSUFBTVQsRUFBT2pDLEVBQUVDLEtBQUtDLFVBQVVvQyxLQUMxQkwsRUFBS0MsT0FBUyxJQUFzRCxHQUFqREQsRUFBS2xCLE9BQU80QixjQUFjQyxRQUFRLFlBRXZENUMsRUFBRUMsS0FBS0MsVUFBVTJDLHdCQUF3QixHQUFHQyxzR0FmakNOLHdSQUFBQSxFQUFBQSxZQUVRLENBQ3pCRixJQUFLLDBDQUNMTyx1QkFBd0Isa0RDRlBFLEVBQUFBLDJLQU9uQixXQUN3QixnQkFBbEJqRCxTQUFTdUMsTUFDWHpCLEVBQUlXLFFBQVF0QixLQUFLQyxVQUFVb0MsSUFBSyxtR0FUakJTLHdSQUFBQSxFQUFBQSxZQUVBLENBQ2pCVCxJQUFLLG9CQUNMQyxhQUFjLGFDTkdTLEVBQUFBLDJLQU1uQixXQUNFLEdBQXNCLHdCQUFsQmxELFNBQVNDLEtBQWdDLENBQzNDLElBQU1rRCxFQUFVakQsRUFBRUMsS0FBS0MsVUFBVWdELFFBQzdCRCxFQUFRZixPQUFTLElBQXlELEdBQXBEZSxFQUFRbEMsT0FBTzRCLGNBQWNDLFFBQVEsWUFDN0RLLEVBQVE1Qyx1R0FWSzJDLHdSQUFBQSxFQUFBQSxZQUVBLENBQ2pCRSxPQUFRLDBCQ0RTSCxFQUFBQSwyS0FPbkIsV0FDd0Isb0JBQWxCakQsU0FBU3VDLE9BQ1h6QixFQUFJVyxRQUFRdEIsS0FBS0MsVUFBVW9DLElBQUssTUFDaEN0QyxFQUFFQyxLQUFLQyxVQUFVb0MsS0FBS1AsSUFBSSxVQUFXLG1HQVZ0QmdCLHdSQUFBQSxFQUFBQSxZQUVBLENBQ2pCVCxJQUFLLFdBQ0xDLGFBQWMsMEJDSkdZLEVBQUFBLDJLQU1uQixXQUN3QixnQkFBbEJyRCxTQUFTdUMsT0FDWHpCLEVBQUlXLFFBQVF0QixLQUFLQyxVQUFVb0MsSUFBSyxNQUNoQ3RDLEVBQUVDLEtBQUtDLFVBQVVvQyxLQUFLUCxJQUFJLENBQUMsZ0JBQW1CLFVBQVcsUUFBVyxrR0FUckRvQix3UkFBQUEsRUFBQUEsWUFFQSxDQUNqQmIsSUFBSyx3QkNIWWMsRUFBQUEsMktBTW5CLFdBQ3dCLHVCQUFsQnRELFNBQVN1QyxPQUNYekIsRUFBSVcsUUFBUXRCLEtBQUtDLFVBQVVvQyxJQUFLLE1BQ2hDdEMsRUFBRUMsS0FBS0MsVUFBVW9DLEtBQUtQLElBQUksQ0FBQyxRQUFXLGtHQVR2QnFCLGtIQUFBQSxFQUFBQSxZQUVBLENBQ2pCZCxJQUFLLHlCQ1FQRixFQUFNYixVQUNOaUIsRUFBUWpCLFVBQ1IxQixFQUFNMEIsVUFDTndCLEVBQVN4QixVQUNUeUIsRUFBT3pCLFVBQ1A4QixFQUFBQSxVQUNBRixFQUFNNUIsVUFDTjZCLEVBQVM3QiIsInNvdXJjZXMiOlsid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL2p1bml0L0p1bml0LnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL2NvbW1vbi9CYXIudHMiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy8uL2NvcmUtc29jaWFsaXN0LXZhbHVlcy9zcmMvcmVhY3QvUmVhY3QudHMiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy8uL2NvcmUtc29jaWFsaXN0LXZhbHVlcy9zcmMvYW5ndWxhci9Bbmd1bGFyLnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL2NvZGVjZXB0L0NvZGVjZXB0LnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL2dpdGh1Yi9HaXRodWIudHMiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy8uL2NvcmUtc29jaWFsaXN0LXZhbHVlcy9zcmMvbmVzdC9OZXN0LnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL2VtYmVyL0VtYmVyLnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL2VsZWN0cm9uL0VsZWN0cm9uLnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgSnVuaXQge1xuXG4gIHByaXZhdGUgc3RhdGljIHNlbGVjdG9ycyA9IHtcbiAgICByZWFjdEJhcjogJy5jc3MtbHBpeWN2JyxcbiAgICBqdW5pdEFib3V0OiAnI2Fib3V0JyxcbiAgICBqdW5pdExvZ286ICdpbWdbc3JjPVwiL2p1bml0NS9hc3NldHMvaW1nL2p1bml0NS1sb2dvLnBuZ1wiXScsXG4gICAganVuaXRGYXZpY29uOiAnbGlua1tyZWw9XCJpY29uXCJdJyxcbiAgICBjb2RlY2VwdEJhcjogJy5zdWItYmFyIC5tZXNzYWdlJyxcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGp1bml0TG9nb1VybCA9ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZHVhbmx1YW4vdGFtcGVybW9ua2V5LXNjcmlwdHMvbWFpbi9jb3JlLXNvY2lhbGlzdC12YWx1ZXMvc3JjL2p1bml0L2ltZ3MvanVuaXQ1LWxvZ28tY3N2LnBuZydcblxuICBzdGF0aWMgcmVwbGFjZSgpIHtcbiAgICBpZiAobG9jYXRpb24uaHJlZiA9PT0gJ2h0dHBzOi8vanVuaXQub3JnL2p1bml0NS8nKSB7XG4gICAgICAkKHRoaXMuc2VsZWN0b3JzLmp1bml0QWJvdXQpLnByZXZBbGwoKS5yZW1vdmUoKTtcbiAgICAgICQodGhpcy5zZWxlY3RvcnMuanVuaXRMb2dvKS5hdHRyKCdzcmMnLCB0aGlzLmp1bml0TG9nb1VybCk7XG4gICAgICAkKHRoaXMuc2VsZWN0b3JzLmp1bml0RmF2aWNvbikuYXR0cignaHJlZicsIHRoaXMuanVuaXRMb2dvVXJsKTtcbiAgICB9XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhciB7XG5cbiAgLyoqXG4gICAqIOabv+aNouadoeW5hVxuICAgKiBAcGFyYW0gc2VsZWN0b3Ig5p2h5bmF6YCJ5oup5ZmoXG4gICAqIEBwYXJhbSBvYnNlcnZpbmdTZWxlY3RvciDlj5jljJbpgInmi6nlmahcbiAgICovXG4gIHN0YXRpYyByZXBsYWNlKHNlbGVjdG9yLCBvYnNlcnZpbmdTZWxlY3Rvcikge1xuICAgIGlmICghJChzZWxlY3RvcikudGV4dCgpLm1hdGNoKC91a3JhaW5lfOS5jOWFi+WFsHxibGFja3zpu5HkurovaSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgQmFyLmxvb3BSZXBsYWNlQmFyKHNlbGVjdG9yKTtcbiAgICBpZiAob2JzZXJ2aW5nU2VsZWN0b3IpIHtcbiAgICAgIC8vIOebkeWQrOadoeW5heWPmOWMlu+8jOWPmOWMluWQjuWGjeasoeaJp+ihjFxuICAgICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uczogTXV0YXRpb25SZWNvcmRbXSwgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgQmFyLmxvb3BSZXBsYWNlQmFyKHNlbGVjdG9yKTtcbiAgICAgIH0pLm9ic2VydmUoJChvYnNlcnZpbmdTZWxlY3RvcilbMF0sIHtjaGlsZExpc3Q6IHRydWV9KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHR4dCA9ICflr4zlvLrmsJHkuLvmlofmmI7lkozosJDoh6rnlLHlubPnrYnlhazmraPms5XmsrvniLHlm73mlazkuJror5rkv6Hlj4vlloRQcm9zcGVyaXR5RGVtb2NyYWN5Q2l2aWxpdHlIYXJtb255RnJlZWRvbUVxdWFsaXR5SnVzdGljZVJ1bGVvZmxhd1BhdHJpb3Rpc21EZWRpY2F0aW9uSW50ZWdyaXR5RnJpZW5kc2hpcCc7XG5cbiAgLy8g5b6q546v5pu/5o2i5p2h5bmFXG4gIHByaXZhdGUgc3RhdGljIGxvb3BSZXBsYWNlQmFyKHNlbGVjdG9yKSB7XG4gICAgaWYgKCQoJChzZWxlY3RvcilbMF0pLnRleHQoKS5yZXBsYWNlKC9cXHMrL2csIFwiXCIpID09PSBCYXIudHh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzU3RvcCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICgkKCQoc2VsZWN0b3IpWzBdKS50ZXh0KCkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKSA9PT0gQmFyLnR4dCkge1xuICAgICAgICBjbGVhckludGVydmFsKGlzU3RvcCk7XG4gICAgICB9XG4gICAgICBCYXIucmVwbGFjZUJhcihzZWxlY3Rvcik7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZXBsYWNlQmFyKHNlbGVjdG9yKSB7XG4gICAgY29uc3QgYmFyU2VsZWN0b3IgPSAnLmNzdl9iYXInLCBiYXJVbFNlbGVjdG9yID0gYmFyU2VsZWN0b3IgKyAnIC5jc3ZfYmFyX3VsJztcblxuICAgICQoc2VsZWN0b3IpLmNzcyh7J21pbkhlaWdodCc6ICc0MHB4J30pO1xuICAgICQoc2VsZWN0b3IpLmh0bWwoYFxuICAgIDxkaXYgY2xhc3M9XCJjc3ZfYmFyXCI+XG4gICAgICA8dWwgY2xhc3M9J2Nzdl9iYXJfdWwnPjxsaT7lr4zlvLo8L2xpPjxsaT7msJHkuLs8L2xpPjxsaT7mlofmmI48L2xpPjxsaT7lkozosJA8L2xpPjxsaT7oh6rnlLE8L2xpPjxsaT7lubPnrYk8L2xpPjxsaT7lhazmraM8L2xpPjxsaT7ms5Xmsrs8L2xpPjxsaT7niLHlm708L2xpPjxsaT7mlazkuJo8L2xpPjxsaT7or5rkv6E8L2xpPjxsaT7lj4vlloQ8L2xpPjwvdWw+PGJyPlxuICAgICAgPHVsIGNsYXNzPSdjc3ZfYmFyX3VsJz48bGk+UHJvc3Blcml0eTwvbGk+PGxpPkRlbW9jcmFjeTwvbGk+PGxpPkNpdmlsaXR5PC9saT48bGk+SGFybW9ueTwvbGk+PGxpPkZyZWVkb208L2xpPjxsaT5FcXVhbGl0eTwvbGk+PGxpPkp1c3RpY2U8L2xpPjxsaT5SdWxlIG9mIGxhdzwvbGk+PGxpPlBhdHJpb3Rpc208L2xpPjxsaT5EZWRpY2F0aW9uPC9saT48bGk+SW50ZWdyaXR5PC9saT48bGk+RnJpZW5kc2hpcDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PmApO1xuXG4gICAgLy8g6YG/5YWN5Ye6546w5aSa5Liq5a+86Ie05qC35byP5re75Yqg5aSx6LSlXG4gICAgY29uc3QgJGJhciA9ICQoYmFyU2VsZWN0b3IpO1xuICAgIGlmICgkYmFyLmxlbmd0aCA9PSAyKSB7XG4gICAgICAkYmFyLmVxKDApLnJlbW92ZSgpO1xuICAgIH1cblxuICAgICQoYmFyVWxTZWxlY3RvcikuY3NzKHsnZGlzcGxheSc6ICdpbmxpbmUtYmxvY2snLCAnbGlzdFN0eWxlJzogJ25vbmUnLCAnbWFyZ2luJzogMCwgJ3BhZGRpbmcnOiAwLCAnd2lkdGgnOiAnYXV0byd9KTtcbiAgICAkKGJhclVsU2VsZWN0b3IgKyAnIGxpJykuY3NzKHsnY29sb3InOiAnI0RFMjkxMCcsICdmb250V2VpZ2h0JzogJ2JvbGQnLCAnZm9udEZhbWlseSc6ICdLYWlUaScsICdmbG9hdCc6ICdsZWZ0JywgJ3BhZGRpbmdSaWdodCc6ICcxMHB4JywgJ21pbi13aWR0aCc6ICc4MHB4JywgJ3RleHRBbGlnbic6ICdjZW50ZXInfSk7XG4gICAgJChiYXJVbFNlbGVjdG9yICsgJzpmaXJzdCcpLmNzcygndmVydGljYWxBbGlnbicsICdib3R0b20nKTtcbiAgICAkKGJhclVsU2VsZWN0b3IgKyAnOmZpcnN0IGxpJykuY3NzKCdmb250U2l6ZScsICcxOHB4Jyk7XG4gICAgJChiYXJVbFNlbGVjdG9yICsgJzplcSgxKSBsaScpLmNzcygnZm9udFNpemUnLCAnMTNweCcpO1xuICB9XG59XG4iLCJpbXBvcnQgQmFyIGZyb20gXCIuLi9jb21tb24vQmFyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWN0IHtcblxuICBwcml2YXRlIHN0YXRpYyBzZWxlY3RvcnMgPSB7XG4gICAgYmFyOiAnLmNzcy1scGl5Y3YnLFxuICAgIG9ic2VydmluZ0JhcjogJyNnYXRzYnktZm9jdXMtd3JhcHBlcicsXG4gIH1cblxuICBzdGF0aWMgcmVwbGFjZSgpIHtcbiAgICBpZiAobG9jYXRpb24uaG9zdCA9PT0gJ3JlYWN0anMub3JnJykge1xuICAgICAgQmFyLnJlcGxhY2UodGhpcy5zZWxlY3RvcnMuYmFyLCB0aGlzLnNlbGVjdG9ycy5vYnNlcnZpbmdCYXIpO1xuICAgIH1cbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQW5ndWxhciB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2VsZWN0b3JzID0ge1xuICAgIGJhcjogJy5tYXQtdG9vbGJhci1yb3cubm90aWZpY2F0aW9uLWNvbnRhaW5lcicsXG4gICAgZGlzbWlzc05vdGlmaWNhdGlvbkJ0bjogJ2J1dHRvblthcmlhLWxhYmVsPVwiRGlzbWlzcyBub3RpZmljYXRpb25cIl0nLFxuICB9XG5cbiAgc3RhdGljIHJlcGxhY2UoKSB7XG4gICAgaWYgKGxvY2F0aW9uLmhvc3QgPT09ICdhbmd1bGFyLmlvJykge1xuICAgICAgLy8g5LiN5a2Y5Zyo5piv5ZCm5YWz6Zet6YCa55+l55qE5pys5Zyw5a2Y5YKo5pe2XG4gICAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhaW8tbm90aWZpY2F0aW9uL3dhci11a3JhaW5lJykpIHtcbiAgICAgICAgLy8g5aaC5p6c6YCa55+l5Lit5a2Y5Zyo5YWz6ZSu6K+NXG4gICAgICAgIGNvbnN0ICRiYXIgPSAkKHRoaXMuc2VsZWN0b3JzLmJhcik7XG4gICAgICAgIGlmICgkYmFyLmxlbmd0aCA+IDAgJiYgJGJhci50ZXh0KCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCd1a3JhaW5lJykgIT0gLTEpIHtcbiAgICAgICAgICAvLyDngrnlh7vlhbPpl63pgJrnn6VcbiAgICAgICAgICAkKHRoaXMuc2VsZWN0b3JzLmRpc21pc3NOb3RpZmljYXRpb25CdG4pWzBdLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJpbXBvcnQgQmFyIGZyb20gXCIuLi9jb21tb24vQmFyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvZGVjZXB0IHtcblxuICBzdGF0aWMgc2VsZWN0b3JzID0ge1xuICAgIGJhcjogJy5zdWItYmFyIC5tZXNzYWdlJyxcbiAgICBvYnNlcnZpbmdCYXI6ICcjYXBwJ1xuICB9XG5cbiAgc3RhdGljIHJlcGxhY2UoKSB7XG4gICAgaWYgKGxvY2F0aW9uLmhvc3QgPT09ICdjb2RlY2VwdC5pbycpIHtcbiAgICAgIEJhci5yZXBsYWNlKHRoaXMuc2VsZWN0b3JzLmJhciwgbnVsbCk7XG4gICAgfVxuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBHaXRodWIge1xuXG4gIHN0YXRpYyBzZWxlY3RvcnMgPSB7XG4gICAgbm90aWNlOiAnLmJvcmRlci5qcy1ub3RpY2UnXG4gIH1cblxuICBzdGF0aWMgcmVwbGFjZSgpIHtcbiAgICBpZiAobG9jYXRpb24uaHJlZiA9PT0gJ2h0dHBzOi8vZ2l0aHViLmNvbS8nKSB7XG4gICAgICBjb25zdCAkbm90aWNlID0gJCh0aGlzLnNlbGVjdG9ycy5ub3RpY2UpO1xuICAgICAgaWYgKCRub3RpY2UubGVuZ3RoID4gMCAmJiAkbm90aWNlLnRleHQoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3VrcmFpbmUnKSAhPSAtMSkge1xuICAgICAgICAkbm90aWNlLnJlbW92ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IEJhciBmcm9tIFwiLi4vY29tbW9uL0JhclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2RlY2VwdCB7XG5cbiAgc3RhdGljIHNlbGVjdG9ycyA9IHtcbiAgICBiYXI6ICcudG9wLWJhcicsXG4gICAgb2JzZXJ2aW5nQmFyOiAnLm5nLXN0YXItaW5zZXJ0ZWQnXG4gIH1cblxuICBzdGF0aWMgcmVwbGFjZSgpIHtcbiAgICBpZiAobG9jYXRpb24uaG9zdCA9PT0gJ2RvY3MubmVzdGpzLmNvbScpIHtcbiAgICAgIEJhci5yZXBsYWNlKHRoaXMuc2VsZWN0b3JzLmJhciwgbnVsbCk7XG4gICAgICAkKHRoaXMuc2VsZWN0b3JzLmJhcikuY3NzKCdwYWRkaW5nJywgJzAnKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBCYXIgZnJvbSBcIi4uL2NvbW1vbi9CYXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1iZXIge1xuXG4gIHN0YXRpYyBzZWxlY3RvcnMgPSB7XG4gICAgYmFyOiAnLmNhbGxvdXQtYmFubmVyJyxcbiAgfVxuXG4gIHN0YXRpYyByZXBsYWNlKCkge1xuICAgIGlmIChsb2NhdGlvbi5ob3N0ID09PSAnZW1iZXJqcy5jb20nKSB7XG4gICAgICBCYXIucmVwbGFjZSh0aGlzLnNlbGVjdG9ycy5iYXIsIG51bGwpO1xuICAgICAgJCh0aGlzLnNlbGVjdG9ycy5iYXIpLmNzcyh7J2JhY2tncm91bmRDb2xvcic6ICcjMWMxZTI0JywgJ3BhZGRpbmcnOiAwfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgQmFyIGZyb20gXCIuLi9jb21tb24vQmFyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVsZWN0cm9uIHtcblxuICBzdGF0aWMgc2VsZWN0b3JzID0ge1xuICAgIGJhcjogJy5hbm5vdW5jZW1lbnQtYmFubmVyJyxcbiAgfVxuXG4gIHN0YXRpYyByZXBsYWNlKCkge1xuICAgIGlmIChsb2NhdGlvbi5ob3N0ID09PSAnd3d3LmVsZWN0cm9uanMub3JnJykge1xuICAgICAgQmFyLnJlcGxhY2UodGhpcy5zZWxlY3RvcnMuYmFyLCBudWxsKTtcbiAgICAgICQodGhpcy5zZWxlY3RvcnMuYmFyKS5jc3MoeydwYWRkaW5nJzogMH0pO1xuICAgIH1cbiAgfVxufVxuIiwiLy8g5pu/5o2i5ZCO55qE5p2h5bmF5Y676Zmk56m65qC85o2i6KGM5ZCO55qE5paH5pysXG5pbXBvcnQgSnVuaXQgZnJvbSBcIi4vanVuaXQvSnVuaXRcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwiLi9yZWFjdC9SZWFjdFwiO1xuaW1wb3J0IEFuZ3VsYXIgZnJvbSBcIi4vYW5ndWxhci9Bbmd1bGFyXCI7XG5pbXBvcnQgQ29kZWNlcHQgZnJvbSBcIi4vY29kZWNlcHQvQ29kZWNlcHRcIjtcbmltcG9ydCBHaXRodWIgZnJvbSBcIi4vZ2l0aHViL0dpdGh1YlwiO1xuaW1wb3J0IE5lc3QgZnJvbSBcIi4vbmVzdC9OZXN0XCI7XG5pbXBvcnQgRW1iZXIgZnJvbSBcIi4vZW1iZXIvRW1iZXJcIjtcbmltcG9ydCBFbGVjdHJvbiBmcm9tIFwiLi9lbGVjdHJvbi9FbGVjdHJvblwiO1xuXG4oKCkgPT4ge1xuICAndXNlIHN0cmljdCc7XG5cbiAgUmVhY3QucmVwbGFjZSgpO1xuICBBbmd1bGFyLnJlcGxhY2UoKTtcbiAgSnVuaXQucmVwbGFjZSgpO1xuICBDb2RlY2VwdC5yZXBsYWNlKCk7XG4gIEdpdGh1Yi5yZXBsYWNlKCk7XG4gIE5lc3QucmVwbGFjZSgpO1xuICBFbWJlci5yZXBsYWNlKCk7XG4gIEVsZWN0cm9uLnJlcGxhY2UoKTtcbn0pKCk7XG5cbi8vID09VXNlclNjcmlwdD09XG4vLyBAbmFtZSAgICAgICAgIOekvuS8muS4u+S5ieaguOW/g+S7t+WAvOingu+8iENvcmUgU29jaWFsaXN0IFZhbHVlc++8iVxuLy8gQG5hbWVzcGFjZSAgICBodHRwOi8vdGFtcGVybW9ua2V5Lm5ldC9cbi8vIEB2ZXJzaW9uICAgICAgMC43LjBcbi8vIEBkZXNjcmlwdGlvbiAg5pu/5o2i5pS/5rK755u45YWz5p2h5bmF5Li656S+5Lya5Li75LmJ5qC45b+D5Lu35YC86KeC77yM5pu/5o2i5pS/5rK755u45YWzIExvZ28g6aKc6Imy5Li65Lit5Zu957qi77yM5Y676Zmk5pS/5rK755u45YWz6YCa55+l77yM6K6p5oqA5pyv6L+c56a75pS/5rK744CCXG4vLyBAYXV0aG9yICAgICAgIGR1YW5sdWFuXG4vLyBAbGljZW5zZSAgICAgIEFwYWNoZSAyLjBcbi8vIEBtYXRjaCAgICAgICAgKjovL3JlYWN0anMub3JnLypcbi8vIEBtYXRjaCAgICAgICAgKjovL2FuZ3VsYXIuaW8vKlxuLy8gQG1hdGNoICAgICAgICAqOi8vanVuaXQub3JnLypcbi8vIEBtYXRjaCAgICAgICAgKjovL2NvZGVjZXB0LmlvLypcbi8vIEBtYXRjaCAgICAgICAgKjovL2dpdGh1Yi5jb20vKlxuLy8gQG1hdGNoICAgICAgICAqOi8vZG9jcy5uZXN0anMuY29tLypcbi8vIEBtYXRjaCAgICAgICAgKjovL2VtYmVyanMuY29tLypcbi8vIEBtYXRjaCAgICAgICAgKjovL3d3dy5lbGVjdHJvbmpzLm9yZy8qXG4vLyBAaWNvbiAgICAgICAgIDwkSUNPTiQ+XG4vLyBAcmVxdWlyZSAgICAgIGh0dHBzOi8vY2RuLmJvb3RjZG4ubmV0L2FqYXgvbGlicy9qcXVlcnkvMy42LjAvanF1ZXJ5LnNsaW0ubWluLmpzXG4vLyBAZ3JhbnQgICAgICAgIG5vbmVcbi8vID09L1VzZXJTY3JpcHQ9PVxuIl0sIm5hbWVzIjpbIkp1bml0IiwibG9jYXRpb24iLCJocmVmIiwiJCIsInRoaXMiLCJzZWxlY3RvcnMiLCJqdW5pdEFib3V0IiwicHJldkFsbCIsInJlbW92ZSIsImp1bml0TG9nbyIsImF0dHIiLCJqdW5pdExvZ29VcmwiLCJqdW5pdEZhdmljb24iLCJyZWFjdEJhciIsImNvZGVjZXB0QmFyIiwiQmFyIiwic2VsZWN0b3IiLCJvYnNlcnZpbmdTZWxlY3RvciIsInRleHQiLCJtYXRjaCIsImxvb3BSZXBsYWNlQmFyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm9ic2VydmVyIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsInJlcGxhY2UiLCJ0eHQiLCJpc1N0b3AiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJyZXBsYWNlQmFyIiwiYmFyU2VsZWN0b3IiLCJiYXJVbFNlbGVjdG9yIiwiY3NzIiwiaHRtbCIsIiRiYXIiLCJsZW5ndGgiLCJlcSIsIlJlYWN0IiwiaG9zdCIsImJhciIsIm9ic2VydmluZ0JhciIsIkFuZ3VsYXIiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwiZGlzbWlzc05vdGlmaWNhdGlvbkJ0biIsImNsaWNrIiwiQ29kZWNlcHQiLCJHaXRodWIiLCIkbm90aWNlIiwibm90aWNlIiwiRW1iZXIiLCJFbGVjdHJvbiIsIk5lc3QiXSwic291cmNlUm9vdCI6IiJ9