diff --git a/dist/js/angular-better-message.min.js b/dist/js/angular-better-message.min.js index 21c327b..fa6db84 100644 --- a/dist/js/angular-better-message.min.js +++ b/dist/js/angular-better-message.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";angular.module("AngularBetterMessage",[])}(),function(){"use strict";var e=function(e){this.onClick=function(){if(!_.isUndefined(e.onClick)){var s=_.isUndefined(e.message)?null:e.message,t=_.isUndefined(e.state)?null:e.state,a=_.isUndefined(e.key)?null:e.key,n=_.isUndefined(e.data)?null:e.data;e.onClick({message:s,state:t,key:a,data:n})}e.close()}};e.$inject=["$scope"],angular.module("AngularBetterMessage").controller("AngularBetterMessageCtrl",e)}(),function(){"use strict";var e=function(e,s,t,a,n,o){return{restrict:"EA",scope:{api:"=",message:"=",state:"=",key:"=",data:"=",message_icon_class:"=messageIconClass",prompt:"=",prompt_button_class:"=promptButtonClass",prompt_icon_class:"=promptIconClass",display_seconds:"=displaySeconds",show_count_down:"=showCountDown",fixed_position_on_scroll:"=fixedPositionOnScroll",always_detached:"=alwaysDetached",onClick:"&onPromptClick"},controller:"AngularBetterMessageCtrl as ctrl",link:function(s,i,c,l){var d=s.api||{};s.message_class=a,s.prompt_class=n;var r,u,p;s.is_visible=!1;var f,m=angular.element(e);d.close=function(){s.close()},d.update=function(){s.update()},s.close=function(){s.is_visible=!1},s.wait=function(){r=window.setTimeout(function(){0===--s.count_down?(window.clearTimeout(r),s.close(),s.$apply()):(s.wait(),s.$apply())},1e3)},s.checkPosition=function(){s.is_visible&&!i.hasClass("detached")&&_.isNull(i[0].offsetParent)?u=window.setTimeout(function(){s.checkPosition(),s.$apply()},100):(p=i[0].getBoundingClientRect().top,s.updateDetached())},s.updateDetached=function(){window.clearTimeout(u),s.always_detached||!i.hasClass("detached")&&0>=p&&e.pageYOffset>0?(s.updateDetachedClass(!0),f=e.pageYOffset):i.hasClass("detached")&&!_.isUndefined(f)&&e.pageYOffset<=f&&s.updateDetachedClass(!1)},s.updateDetachedClass=function(e){e?i.hasClass("detached")||i.addClass("detached"):i.hasClass("detached")&&i.removeClass("detached")},s.update=function(){s.is_visible=!0,s.fixed_position_on_scroll&&s.checkPosition(),s.count_down=_.parseInt(s.display_seconds),window.clearTimeout(r),_.isUndefined(s.count_down)||0===s.count_down||(s.wait(),s.outer_prompt_class=o)},s.$watch("display_seconds",function(e){_.isUndefined(e)||""===e||(s.display_seconds=_.parseInt(e),s.count_down=_.parseInt(e))}),s.$watch("message",function(e){var a=angular.element(i[0].querySelector(".angular-better-message-wrapper"));if(a.empty(),_.isUndefined(e)||""===e)window.clearTimeout(r),s.close();else{var n=t(""+e+"")(s.$parent.$parent);a.append(n),s.update()}}),s.$watch("prompt",function(e){_.isUndefined(e)||""===e?s.outer_prompt_class="":s.outer_prompt_class=o}),s.$watch("always_detached",function(){s.updateDetachedClass(s.always_detached)}),s.fixed_position_on_scroll&&m.on("scroll",function(){_.isUndefined(s.message)||""===s.message||s.checkPosition()})},replace:!0,templateUrl:"html/angular-better-message.html"}};e.$inject=["$window","$timeout","$compile","ANGULAR_BETTER_MESSAGE_CLASS","ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS"],angular.module("AngularBetterMessage").directive("angularBetterMessage",e)}(),function(){"use strict";angular.module("AngularBetterMessage").constant("ANGULAR_BETTER_MESSAGE_CLASS","message").constant("ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","prompt").constant("ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS","has-prompt")}(); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UuanMiLCJhbmd1bGFyLWJldHRlci1tZXNzYWdlLWNvbnRyb2xsZXIuanMiLCJhbmd1bGFyLWJldHRlci1tZXNzYWdlLWRpcmVjdGl2ZS5qcyIsImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2Utc2V0dGluZ3MuanMiXSwibmFtZXMiOlsiYW5ndWxhciIsIm1vZHVsZSIsImNvbnRyb2xsZXIiLCIkcyIsInRoaXMiLCJvbkNsaWNrIiwiXyIsImlzVW5kZWZpbmVkIiwibWVzc2FnZSIsInN0YXRlIiwia2V5IiwiZGF0YSIsImNsb3NlIiwiJGluamVjdCIsImRpcmVjdGl2ZSIsIiR3aW5kb3ciLCIkdGltZW91dCIsIiRjb21waWxlIiwiTUVTU0FHRV9DTEFTUyIsIlBST01QVF9DTEFTUyIsIkhBU19QUk9NUFRfQ0xBU1MiLCJyZXN0cmljdCIsInNjb3BlIiwiYXBpIiwibWVzc2FnZV9pY29uX2NsYXNzIiwicHJvbXB0IiwicHJvbXB0X2J1dHRvbl9jbGFzcyIsInByb21wdF9pY29uX2NsYXNzIiwiZGlzcGxheV9zZWNvbmRzIiwic2hvd19jb3VudF9kb3duIiwiZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsIiwiYWx3YXlzX2RldGFjaGVkIiwibGluayIsImVsZW1lbnQiLCJhdHRycyIsIm1lc3NhZ2VfY2xhc3MiLCJwcm9tcHRfY2xhc3MiLCJ3YWl0X3RpbWVyIiwiZWxlbWVudF92aXNpYmxlX3RpbWVyIiwiZWxlbWVudF90b3AiLCJpc192aXNpYmxlIiwiZGV0YWNoZWRfcG9zaXRpb24iLCJ3aW5kb3dfZWxlbWVudCIsInVwZGF0ZSIsIndhaXQiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwiY291bnRfZG93biIsImNsZWFyVGltZW91dCIsIiRhcHBseSIsImNoZWNrUG9zaXRpb24iLCJoYXNDbGFzcyIsImlzTnVsbCIsIm9mZnNldFBhcmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsInVwZGF0ZURldGFjaGVkIiwicGFnZVlPZmZzZXQiLCJ1cGRhdGVEZXRhY2hlZENsYXNzIiwiZGV0YWNoZWQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwicGFyc2VJbnQiLCJvdXRlcl9wcm9tcHRfY2xhc3MiLCIkd2F0Y2giLCJ2YWwiLCJ3cmFwcGVyIiwicXVlcnlTZWxlY3RvciIsImVtcHR5IiwiY29tcGlsZWRfbWVzc2FnZSIsIiRwYXJlbnQiLCJhcHBlbmQiLCJvbiIsInJlcGxhY2UiLCJ0ZW1wbGF0ZVVybCIsImNvbnN0YW50Il0sIm1hcHBpbmdzIjoiQ0FBQSxXQUVBLFlBTUFBLFNBQUFDLE9BQUEsOEJDUkEsV0FFQSxZQU1BLElBQUFDLEdBQUEsU0FBQUMsR0FLQUMsS0FBQUMsUUFBQSxXQUNBLElBQUFDLEVBQUFDLFlBQUFKLEVBQUFFLFNBQUEsQ0FFQSxHQUFBRyxHQUFBRixFQUFBQyxZQUFBSixFQUFBSyxTQUFBLEtBQUFMLEVBQUFLLFFBQ0FDLEVBQUFILEVBQUFDLFlBQUFKLEVBQUFNLE9BQUEsS0FBQU4sRUFBQU0sTUFDQUMsRUFBQUosRUFBQUMsWUFBQUosRUFBQU8sS0FBQSxLQUFBUCxFQUFBTyxJQUNBQyxFQUFBTCxFQUFBQyxZQUFBSixFQUFBUSxNQUFBLEtBQUFSLEVBQUFRLElBRUFSLEdBQUFFLFNBQUFHLFFBQUFBLEVBQUFDLE1BQUFBLEVBQUFDLElBQUFBLEVBQUFDLEtBQUFBLElBRUFSLEVBQUFTLFNBSUFWLEdBQUFXLFNBQUEsVUFFQWIsUUFBQUMsT0FBQSx3QkFBQUMsV0FBQSwyQkFBQUEsTUM3QkEsV0FFQSxZQU1BLElBQUFZLEdBQUEsU0FDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FlQSxPQUNBQyxTQUFBLEtBQ0FDLE9BQ0FDLElBQUEsSUFDQWYsUUFBQSxJQUNBQyxNQUFBLElBQ0FDLElBQUEsSUFDQUMsS0FBQSxJQUNBYSxtQkFBQSxvQkFDQUMsT0FBQSxJQUNBQyxvQkFBQSxxQkFDQUMsa0JBQUEsbUJBQ0FDLGdCQUFBLGtCQUNBQyxnQkFBQSxpQkFDQUMseUJBQUEs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NEIsbUJBS0F1QixTQUFBLEVBQ0FDLFlBQUEsb0NBSUE1RCxHQUFBRCxTQUNBLFVBQ0EsV0FDQSxXQUNBLCtCQUNBLHNDQUNBLDJDQUdBYixRQUFBQyxPQUFBLHdCQUNBYSxVQUFBLHVCQUFBQSxNQy9RQSxXQUVBLFlBTUFkLFNBQUFDLE9BQUEsd0JBQ0EwRSxTQUFBLCtCQUFBLFdBQ0FBLFNBQUEsc0NBQUEsVUFDQUEsU0FBQSwwQ0FBQSIsImZpbGUiOiJhbmd1bGFyLWJldHRlci1tZXNzYWdlLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQW5ndWxhciBCZXR0ZXIgTWVzc2FnZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgYW5ndWxhci5tb2R1bGUoJ0FuZ3VsYXJCZXR0ZXJNZXNzYWdlJywgW10pO1xuXG59KSgpO1xuIiwiKGZ1bmN0aW9uICgpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQW5ndWxhciBCZXR0ZXIgTWVzc2FnZSBjb250cm9sbGVyXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICB2YXIgY29udHJvbGxlciA9IGZ1bmN0aW9uICgkcykge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBvbkNsaWNrXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQ2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCgkcy5vbkNsaWNrKSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAhXy5pc1VuZGVmaW5lZCgkcy5tZXNzYWdlKSA/ICRzLm1lc3NhZ2UgOiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9ICFfLmlzVW5kZWZpbmVkKCRzLnN0YXRlKSA/ICRzLnN0YXRlIDogbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gIV8uaXNVbmRlZmluZWQoJHMua2V5KSA/ICRzLmtleSA6IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAhXy5pc1VuZGVmaW5lZCgkcy5kYXRhKSA/ICRzLmRhdGEgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgJHMub25DbGljayh7bWVzc2FnZTogbWVzc2FnZSwgc3RhdGU6IHN0YXRlLCBrZXk6IGtleSwgZGF0YTogZGF0YX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJHMuY2xvc2UoKTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29udHJvbGxlci4kaW5qZWN0ID0gWyckc2NvcGUnXTtcblxuICAgIGFuZ3VsYXIubW9kdWxlKCdBbmd1bGFyQmV0dGVyTWVzc2FnZScpLmNvbnRyb2xsZXIoJ0FuZ3VsYXJCZXR0ZXJNZXNzYWdlQ3RybCcsIGNvbnRyb2xsZXIpO1xuXG59KSgpO1xuIiwiKGZ1bmN0aW9uKCkge1xuXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBhbmd1bGFyLWJldHRlci1tZXNzYWdlIGRpcmVjdGl2ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgdmFyIGRpcmVjdGl2ZSA9IGZ1bmN0aW9uKFxuICAgICAgICAkd2luZG93LFxuICAgICAgICAkdGltZW91dCxcbiAgICAgICAgJGNvbXBpbGUsXG4gICAgICAgIE1FU1NBR0VfQ0xBU1MsXG4gICAgICAgIFBST01QVF9DTEFTUyxcbiAgICAgICAgSEFTX1BST01QVF9DTEFTU1xuICAgICkge1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFBvc2l0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciB4UG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgdmFyIHlQb3NpdGlvbiA9IDA7XG5cbiAgICAgICAgICAgIHdoaWxlKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB4UG9zaXRpb24gKz0gKGVsZW1lbnQub2Zmc2V0TGVmdCAtIGVsZW1lbnQuc2Nyb2xsTGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdCk7XG4gICAgICAgICAgICAgICAgeVBvc2l0aW9uICs9IChlbGVtZW50Lm9mZnNldFRvcCAtIGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudC5jbGllbnRUb3ApO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHg6IHhQb3NpdGlvbiwgeTogeVBvc2l0aW9uIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdFQScsXG4gICAgICAgICAgICBzY29wZToge1xuICAgICAgICAgICAgICAgIGFwaTogICAgICAgICAgICAgICAgICAgICAgXCI9XCIsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogICAgICAgICAgICAgICAgICBcIj1cIiwgLy8gd2lsbCBiZSBwYXNzZWQgYmFjayBvbiBldmVudHNcbiAgICAgICAgICAgICAgICBzdGF0ZTogICAgICAgICAgICAgICAgICAgIFwiPVwiLCAvLyB3aWxsIGJlIHBhc3NlZCBiYWNrIG9uIGV2ZW50c1xuICAgICAgICAgICAgICAgIGtleTogICAgICAgICAgICAgICAgICAgICAgXCI9XCIsIC8vIHdpbGwgYmUgcGFzc2VkIGJhY2sgb24gZXZlbnRzXG4gICAgICAgICAgICAgICAgZGF0YTogICAgICAgICAgICAgICAgICAgICBcIj1cIiwgLy8gd2lsbCBiZSBwYXNzZWQgYmFjayBvbiBldmVudHNcbiAgICAgICAgICAgICAgICBtZXNzYWdlX2ljb25fY2xhc3M6ICAgICAgIFwiPW1lc3NhZ2VJY29uQ2xhc3NcIixcbiAgICAgICAgICAgICAgICBwcm9tcHQ6ICAgICAgICAgICAgICAgICAgIFwiPVwiLFxuICAgICAgICAgICAgICAgIHByb21wdF9idXR0b25fY2xhc3M6ICAgICAgXCI9cHJvbXB0QnV0dG9uQ2xhc3NcIixcbiAgICAgICAgICAgICAgICBwcm9tcHRfaWNvbl9jbGFzczogICAgICAgIFwiPXByb21wdEljb25DbGFzc1wiLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlfc2Vjb25kczogICAgICAgICAgXCI9ZGlzcGxheVNlY29uZHNcIixcbiAgICAgICAgICAgICAgICBzaG93X2NvdW50X2Rvd246ICAgICAgICAgIFwiPXNob3dDb3VudERvd25cIixcbiAgICAgICAgICAgICAgICBmaXhlZF9wb3NpdGlvbl9vbl9zY3JvbGw6IFwiPWZpeGVkUG9zaXRpb25PblNjcm9sbFwiLFxuICAgICAgICAgICAgICAgIGFsd2F5c19kZXRhY2hlZDogICAgICAgICAgXCI9YWx3YXlzRGV0YWNoZWRcIixcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAgICAgICAgICAgICAgICAgIFwiJm9uUHJvbXB0Q2xpY2tcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IFwiQW5ndWxhckJldHRlck1lc3NhZ2VDdHJsIGFzIGN0cmxcIixcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRycywgY29udHJvbGxlcikge1xuXG4gICAgICAgICAgICAgICAgdmFyIGFwaSA9IHNjb3BlLmFwaSB8fCB7fTtcblxuICAgICAgICAgICAgICAgIC8vIGNsYXNzZXNcbiAgICAgICAgICAgICAgICBzY29wZS5tZXNzYWdlX2NsYXNzID0gTUVTU0FHRV9DTEFTUztcbiAgICAgICAgICAgICAgICBzY29wZS5wcm9tcHRfY2xhc3MgPSBQUk9NUFRfQ0xBU1M7XG5cbiAgICAgICAgICAgICAgICAvLyBjb250cm9sXG4gICAgICAgICAgICAgICAgdmFyIHdhaXRfdGltZXI7XG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRfdmlzaWJsZV90aW1lcjtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbWVudF90b3A7XG4gICAgICAgICAgICAgICAgc2NvcGUuaXNfdmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgLy8gZml4IG9uIHNjcm9sbFxuICAgICAgICAgICAgICAgIHZhciBkZXRhY2hlZF9wb3NpdGlvbjtcbiAgICAgICAgICAgICAgICB2YXIgd2luZG93X2VsZW1lbnQgPSBhbmd1bGFyLmVsZW1lbnQoJHdpbmRvdyk7XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gYXBpXG4gICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgICAgICAgICAgYXBpLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGFwaS51cGRhdGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyB1dGlsc1xuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIGNsb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgc2NvcGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuaXNfdmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiB3YWl0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgc2NvcGUud2FpdCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vd2FpdF90aW1lciA9ICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAvLyAgICBpZiAoLS1zY29wZS5jb3VudF9kb3duID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAkdGltZW91dC5jYW5jZWwod2FpdF90aW1lcik7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICBzY29wZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgc2NvcGUud2FpdCgpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgIHdhaXRfdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0tc2NvcGUuY291bnRfZG93biA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQod2FpdF90aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUud2FpdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2tQb3NpdGlvblxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIHZpc2libGUgJiBpcyBub3QgZGV0YWNoZWQgJiBpcyBub3QgcmVhZHlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmlzX3Zpc2libGUgJiYgIWVsZW1lbnQuaGFzQ2xhc3MoJ2RldGFjaGVkJykgJiYgXy5pc051bGwoZWxlbWVudFswXS5vZmZzZXRQYXJlbnQpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfdmlzaWJsZV90aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCBlbGVtZW50IHRvcCBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfdG9wID0gZWxlbWVudFswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiB1cGRhdGVEZXRhY2hlZFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZURldGFjaGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbmNlbCB0aW1lclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGVsZW1lbnRfdmlzaWJsZV90aW1lcik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgZGV0YWNoZWQgYW5kIGlzIGF0IHRoZSB0b3Agb2Ygdmlld3BvcnQsIHRoZW4gZGV0YWNoXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5hbHdheXNfZGV0YWNoZWQgfHwgKCFlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpICYmIGVsZW1lbnRfdG9wIDw9IDAgJiYgJHdpbmRvdy5wYWdlWU9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoZWRfcG9zaXRpb24gPSAkd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgZGV0YWNoZWQgYW5kIGlzIGF0IG9yIGFib3ZlIGRldGFjaGVkIHBvc2l0aW9uLCB0aGVuIGF0dGFjaFxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpICYmICFfLmlzVW5kZWZpbmVkKGRldGFjaGVkX3Bvc2l0aW9uKSAmJiAkd2luZG93LnBhZ2VZT2Zmc2V0IDw9IGRldGFjaGVkX3Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzID0gZnVuY3Rpb24oZGV0YWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRldGFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQ2xhc3MoJ2RldGFjaGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZENsYXNzKCdkZXRhY2hlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoJ2RldGFjaGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUNsYXNzKCdkZXRhY2hlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldCB2aXNpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmlzX3Zpc2libGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5maXhlZF9wb3NpdGlvbl9vbl9zY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGNvdW50IGRvd25cbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuY291bnRfZG93biA9IF8ucGFyc2VJbnQoc2NvcGUuZGlzcGxheV9zZWNvbmRzKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzdG9wIHRpbWVvdXRcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh3YWl0X3RpbWVyKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBhdXRvIGNsb3NlIGFmdGVyIGludGVydmFsXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY29wZS5jb3VudF9kb3duKSAmJiBzY29wZS5jb3VudF9kb3duICE9PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHdhaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLndhaXQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IG91dGVyIHByb210IGNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5vdXRlcl9wcm9tcHRfY2xhc3MgPSBIQVNfUFJPTVBUX0NMQVNTO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyB3YXRjaGVyc1xuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnZGlzcGxheV9zZWNvbmRzJywgZnVuY3Rpb24odmFsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5kaXNwbGF5X3NlY29uZHMgPSBfLnBhcnNlSW50KHZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jb3VudF9kb3duID0gXy5wYXJzZUludCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ21lc3NhZ2UnLCBmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdyYXBwZXIgPSBhbmd1bGFyLmVsZW1lbnQoZWxlbWVudFswXS5xdWVyeVNlbGVjdG9yKCcuYW5ndWxhci1iZXR0ZXItbWVzc2FnZS13cmFwcGVyJykpO1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmVtcHR5KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29tcGlsZWRfbWVzc2FnZSA9ICRjb21waWxlKCc8c3Bhbj4nICsgdmFsICsgJzwvc3Bhbj4nKShzY29wZS4kcGFyZW50LiRwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5hcHBlbmQoY29tcGlsZWRfbWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh3YWl0X3RpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgncHJvbXB0JywgZnVuY3Rpb24odmFsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IG91dGVyIHByb210IGNsYXNzXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUub3V0ZXJfcHJvbXB0X2NsYXNzID0gSEFTX1BST01QVF9DTEFTUztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm91dGVyX3Byb21wdF9jbGFzcyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnYWx3YXlzX2RldGFjaGVkJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZURldGFjaGVkQ2xhc3Moc2NvcGUuYWx3YXlzX2RldGFjaGVkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyBldmVudHNcbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgICAgICAgICAvLyB3aW5kb3cgc2Nyb2xsXG5cbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd19lbGVtZW50Lm9uKCdzY3JvbGwnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY29wZS5tZXNzYWdlKSAmJiBzY29wZS5tZXNzYWdlICE9PSBcIlwiKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2h0bWwvYW5ndWxhci1iZXR0ZXItbWVzc2FnZS5odG1sJ1xuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBkaXJlY3RpdmUuJGluamVjdCA9IFtcbiAgICAgICAgJyR3aW5kb3cnLFxuICAgICAgICAnJHRpbWVvdXQnLFxuICAgICAgICAnJGNvbXBpbGUnLFxuICAgICAgICAnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9DTEFTUycsXG4gICAgICAgICdBTkdVTEFSX0JFVFRFUl9NRVNTQUdFX1BST01QVF9DTEFTUycsXG4gICAgICAgICdBTkdVTEFSX0JFVFRFUl9NRVNTQUdFX0hBU19QUk9NUFRfQ0xBU1MnXG4gICAgXTtcblxuICAgIGFuZ3VsYXIubW9kdWxlKCdBbmd1bGFyQmV0dGVyTWVzc2FnZScpXG4gICAgICAgIC5kaXJlY3RpdmUoJ2FuZ3VsYXJCZXR0ZXJNZXNzYWdlJywgZGlyZWN0aXZlKTtcblxufSkoKTtcbiIsIihmdW5jdGlvbiAoKSB7XG5cbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFuZ3VsYXIgQmV0dGVyIE1lc3NhZ2Ugc2V0dGluZ3NcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGFuZ3VsYXIubW9kdWxlKCdBbmd1bGFyQmV0dGVyTWVzc2FnZScpXG4gICAgICAgIC5jb25zdGFudCgnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9DTEFTUycsICAgICAgICAgICAgICAgXCJtZXNzYWdlXCIpXG4gICAgICAgIC5jb25zdGFudCgnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9QUk9NUFRfQ0xBU1MnLCAgICAgICAgXCJwcm9tcHRcIilcbiAgICAgICAgLmNvbnN0YW50KCdBTkdVTEFSX0JFVFRFUl9NRVNTQUdFX0hBU19QUk9NUFRfQ0xBU1MnLCAgICBcImhhcy1wcm9tcHRcIik7XG5cbn0pKCk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= +!function(){"use strict";angular.module("AngularBetterMessage",[])}(),function(){"use strict";var e=function(e){this.onClick=function(){if(!_.isUndefined(e.onClick)){var s=_.isUndefined(e.message)?null:e.message,t=_.isUndefined(e.state)?null:e.state,a=_.isUndefined(e.key)?null:e.key,n=_.isUndefined(e.data)?null:e.data;e.onClick({message:s,state:t,key:a,data:n})}e.close()}};e.$inject=["$scope"],angular.module("AngularBetterMessage").controller("AngularBetterMessageCtrl",e)}(),function(){"use strict";var e=function(e,s,t,a,n,o){return{restrict:"EA",scope:{api:"=",message:"=",state:"=",key:"=",data:"=",message_icon_class:"=messageIconClass",prompt:"=",prompt_button_class:"=promptButtonClass",prompt_icon_class:"=promptIconClass",display_seconds:"=displaySeconds",show_count_down:"=showCountDown",fixed_position_on_scroll:"=fixedPositionOnScroll",always_detached:"=alwaysDetached",onClick:"&onPromptClick"},controller:"AngularBetterMessageCtrl as ctrl",link:function(s,i,c,l){var d=s.api||{};s.message_class=a,s.prompt_class=n;var r,u,p;s.is_visible=!1;var f,m=angular.element(e);d.close=function(){s.close()},d.update=function(){s.update()},s.close=function(){s.is_visible=!1},s.wait=function(){r=window.setTimeout(function(){0===--s.count_down?(window.clearTimeout(r),s.close(),s.$apply()):(s.wait(),s.$apply())},1e3)},s.checkPosition=function(){s.is_visible&&!i.hasClass("detached")&&_.isNull(i[0].offsetParent)?u=window.setTimeout(function(){s.checkPosition(),s.$apply()},100):(p=i[0].getBoundingClientRect().top,s.updateDetached())},s.updateDetached=function(){window.clearTimeout(u),s.always_detached||!i.hasClass("detached")&&p<=0&&e.pageYOffset>0?(s.updateDetachedClass(!0),f=e.pageYOffset):i.hasClass("detached")&&!_.isUndefined(f)&&e.pageYOffset<=f&&s.updateDetachedClass(!1)},s.updateDetachedClass=function(e){e?i.hasClass("detached")||i.addClass("detached"):i.hasClass("detached")&&i.removeClass("detached")},s.update=function(){s.is_visible=!0,s.fixed_position_on_scroll&&s.checkPosition(),s.count_down=_.parseInt(s.display_seconds),window.clearTimeout(r),_.isUndefined(s.count_down)||0===s.count_down||(s.wait(),s.outer_prompt_class=o)},s.$watch("display_seconds",function(e){_.isUndefined(e)||""===e||(s.display_seconds=_.parseInt(e),s.count_down=_.parseInt(e))}),s.$watch("message",function(e){var a=angular.element(i[0].querySelector(".angular-better-message-wrapper"));if(a.empty(),_.isUndefined(e)||""===e)window.clearTimeout(r),s.close();else{var n=t(""+e+"")(s.$parent.$parent);a.append(n),s.update()}}),s.$watch("prompt",function(e){_.isUndefined(e)||""===e?s.outer_prompt_class="":s.outer_prompt_class=o}),s.$watch("always_detached",function(){s.updateDetachedClass(s.always_detached)}),s.fixed_position_on_scroll&&m.on("scroll",function(){_.isUndefined(s.message)||""===s.message||s.checkPosition()})},replace:!0,templateUrl:"html/angular-better-message.html"}};e.$inject=["$window","$timeout","$compile","ANGULAR_BETTER_MESSAGE_CLASS","ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS"],angular.module("AngularBetterMessage").directive("angularBetterMessage",e)}(),function(){"use strict";angular.module("AngularBetterMessage").constant("ANGULAR_BETTER_MESSAGE_CLASS","message").constant("ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","prompt").constant("ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS","has-prompt")}(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UuanMiLCJhbmd1bGFyLWJldHRlci1tZXNzYWdlLWNvbnRyb2xsZXIuanMiLCJhbmd1bGFyLWJldHRlci1tZXNzYWdlLWRpcmVjdGl2ZS5qcyIsImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2Utc2V0dGluZ3MuanMiXSwibmFtZXMiOlsiYW5ndWxhciIsIm1vZHVsZSIsImNvbnRyb2xsZXIiLCIkcyIsInRoaXMiLCJvbkNsaWNrIiwiXyIsImlzVW5kZWZpbmVkIiwibWVzc2FnZSIsInN0YXRlIiwia2V5IiwiZGF0YSIsImNsb3NlIiwiJGluamVjdCIsImRpcmVjdGl2ZSIsIiR3aW5kb3ciLCIkdGltZW91dCIsIiRjb21waWxlIiwiTUVTU0FHRV9DTEFTUyIsIlBST01QVF9DTEFTUyIsIkhBU19QUk9NUFRfQ0xBU1MiLCJyZXN0cmljdCIsInNjb3BlIiwiYXBpIiwibWVzc2FnZV9pY29uX2NsYXNzIiwicHJvbXB0IiwicHJvbXB0X2J1dHRvbl9jbGFzcyIsInByb21wdF9pY29uX2NsYXNzIiwiZGlzcGxheV9zZWNvbmRzIiwic2hvd19jb3VudF9kb3duIiwiZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsIiwiYWx3YXlzX2RldGFjaGVkIiwibGluayIsImVsZW1lbnQiLCJhdHRycyIsIm1lc3NhZ2VfY2xhc3MiLCJwcm9tcHRfY2xhc3MiLCJ3YWl0X3RpbWVyIiwiZWxlbWVudF92aXNpYmxlX3RpbWVyIiwiZWxlbWVudF90b3AiLCJpc192aXNpYmxlIiwiZGV0YWNoZWRfcG9zaXRpb24iLCJ3aW5kb3dfZWxlbWVudCIsInVwZGF0ZSIsIndhaXQiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwiY291bnRfZG93biIsImNsZWFyVGltZW91dCIsIiRhcHBseSIsImNoZWNrUG9zaXRpb24iLCJoYXNDbGFzcyIsImlzTnVsbCIsIm9mZnNldFBhcmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsInVwZGF0ZURldGFjaGVkIiwicGFnZVlPZmZzZXQiLCJ1cGRhdGVEZXRhY2hlZENsYXNzIiwiZGV0YWNoZWQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwicGFyc2VJbnQiLCJvdXRlcl9wcm9tcHRfY2xhc3MiLCIkd2F0Y2giLCJ2YWwiLCJ3cmFwcGVyIiwicXVlcnlTZWxlY3RvciIsImVtcHR5IiwiY29tcGlsZWRfbWVzc2FnZSIsIiRwYXJlbnQiLCJhcHBlbmQiLCJvbiIsInJlcGxhY2UiLCJ0ZW1wbGF0ZVVybCIsImNvbnN0YW50Il0sIm1hcHBpbmdzIjoiQ0FBQSxXQUVBLFlBTUFBLFNBQUFDLE9BQUEsOEJDUkEsV0FFQSxZQU1BLElBQUFDLEdBQUEsU0FBQUMsR0FLQUMsS0FBQUMsUUFBQSxXQUNBLElBQUFDLEVBQUFDLFlBQUFKLEVBQUFFLFNBQUEsQ0FFQSxHQUFBRyxHQUFBRixFQUFBQyxZQUFBSixFQUFBSyxTQUFBLEtBQUFMLEVBQUFLLFFBQ0FDLEVBQUFILEVBQUFDLFlBQUFKLEVBQUFNLE9BQUEsS0FBQU4sRUFBQU0sTUFDQUMsRUFBQUosRUFBQUMsWUFBQUosRUFBQU8sS0FBQSxLQUFBUCxFQUFBTyxJQUNBQyxFQUFBTCxFQUFBQyxZQUFBSixFQUFBUSxNQUFBLEtBQUFSLEVBQUFRLElBRUFSLEdBQUFFLFNBQUFHLFFBQUFBLEVBQUFDLE1BQUFBLEVBQUFDLElBQUFBLEVBQUFDLEtBQUFBLElBRUFSLEVBQUFTLFNBSUFWLEdBQUFXLFNBQUEsVUFFQWIsUUFBQUMsT0FBQSx3QkFBQUMsV0FBQSwyQkFBQUEsTUM3QkEsV0FFQSxZQU1BLElBQUFZLEdBQUEsU0FDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FlQSxPQUNBQyxTQUFBLEtBQ0FDLE9BQ0FDLElBQUEsSUFDQWYsUUFBQSxJQUNBQyxNQUFBLElBQ0FDLElBQUEsSUFDQUMsS0FBQSxJQUNBYSxtQkFBQSxvQkFDQUMsT0FBQSxJQUNBQyxvQkFBQSxxQkFDQUMsa0JBQUEsbUJBQ0FDLGdCQUFBLGtCQUNBQyxnQkFBQSxpQkFDQUMseUJBQUEs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NEIsbUJBS0F1QixTQUFBLEVBQ0FDLFlBQUEsb0NBSUE1RCxHQUFBRCxTQUNBLFVBQ0EsV0FDQSxXQUNBLCtCQUNBLHNDQUNBLDJDQUdBYixRQUFBQyxPQUFBLHdCQUNBYSxVQUFBLHVCQUFBQSxNQy9RQSxXQUVBLFlBTUFkLFNBQUFDLE9BQUEsd0JBQ0EwRSxTQUFBLCtCQUFBLFdBQ0FBLFNBQUEsc0NBQUEsVUFDQUEsU0FBQSwwQ0FBQSIsImZpbGUiOiJhbmd1bGFyLWJldHRlci1tZXNzYWdlLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQW5ndWxhciBCZXR0ZXIgTWVzc2FnZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgYW5ndWxhci5tb2R1bGUoJ0FuZ3VsYXJCZXR0ZXJNZXNzYWdlJywgW10pO1xuXG59KSgpO1xuIiwiKGZ1bmN0aW9uICgpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQW5ndWxhciBCZXR0ZXIgTWVzc2FnZSBjb250cm9sbGVyXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICB2YXIgY29udHJvbGxlciA9IGZ1bmN0aW9uICgkcykge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBvbkNsaWNrXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQ2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCgkcy5vbkNsaWNrKSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAhXy5pc1VuZGVmaW5lZCgkcy5tZXNzYWdlKSA/ICRzLm1lc3NhZ2UgOiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9ICFfLmlzVW5kZWZpbmVkKCRzLnN0YXRlKSA/ICRzLnN0YXRlIDogbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gIV8uaXNVbmRlZmluZWQoJHMua2V5KSA/ICRzLmtleSA6IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAhXy5pc1VuZGVmaW5lZCgkcy5kYXRhKSA/ICRzLmRhdGEgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgJHMub25DbGljayh7bWVzc2FnZTogbWVzc2FnZSwgc3RhdGU6IHN0YXRlLCBrZXk6IGtleSwgZGF0YTogZGF0YX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJHMuY2xvc2UoKTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29udHJvbGxlci4kaW5qZWN0ID0gWyckc2NvcGUnXTtcblxuICAgIGFuZ3VsYXIubW9kdWxlKCdBbmd1bGFyQmV0dGVyTWVzc2FnZScpLmNvbnRyb2xsZXIoJ0FuZ3VsYXJCZXR0ZXJNZXNzYWdlQ3RybCcsIGNvbnRyb2xsZXIpO1xuXG59KSgpO1xuIiwiKGZ1bmN0aW9uKCkge1xuXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBhbmd1bGFyLWJldHRlci1tZXNzYWdlIGRpcmVjdGl2ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgdmFyIGRpcmVjdGl2ZSA9IGZ1bmN0aW9uKFxuICAgICAgICAkd2luZG93LFxuICAgICAgICAkdGltZW91dCxcbiAgICAgICAgJGNvbXBpbGUsXG4gICAgICAgIE1FU1NBR0VfQ0xBU1MsXG4gICAgICAgIFBST01QVF9DTEFTUyxcbiAgICAgICAgSEFTX1BST01QVF9DTEFTU1xuICAgICkge1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFBvc2l0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciB4UG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgdmFyIHlQb3NpdGlvbiA9IDA7XG5cbiAgICAgICAgICAgIHdoaWxlKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB4UG9zaXRpb24gKz0gKGVsZW1lbnQub2Zmc2V0TGVmdCAtIGVsZW1lbnQuc2Nyb2xsTGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdCk7XG4gICAgICAgICAgICAgICAgeVBvc2l0aW9uICs9IChlbGVtZW50Lm9mZnNldFRvcCAtIGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudC5jbGllbnRUb3ApO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHg6IHhQb3NpdGlvbiwgeTogeVBvc2l0aW9uIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdFQScsXG4gICAgICAgICAgICBzY29wZToge1xuICAgICAgICAgICAgICAgIGFwaTogICAgICAgICAgICAgICAgICAgICAgXCI9XCIsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogICAgICAgICAgICAgICAgICBcIj1cIiwgLy8gd2lsbCBiZSBwYXNzZWQgYmFjayBvbiBldmVudHNcbiAgICAgICAgICAgICAgICBzdGF0ZTogICAgICAgICAgICAgICAgICAgIFwiPVwiLCAvLyB3aWxsIGJlIHBhc3NlZCBiYWNrIG9uIGV2ZW50c1xuICAgICAgICAgICAgICAgIGtleTogICAgICAgICAgICAgICAgICAgICAgXCI9XCIsIC8vIHdpbGwgYmUgcGFzc2VkIGJhY2sgb24gZXZlbnRzXG4gICAgICAgICAgICAgICAgZGF0YTogICAgICAgICAgICAgICAgICAgICBcIj1cIiwgLy8gd2lsbCBiZSBwYXNzZWQgYmFjayBvbiBldmVudHNcbiAgICAgICAgICAgICAgICBtZXNzYWdlX2ljb25fY2xhc3M6ICAgICAgIFwiPW1lc3NhZ2VJY29uQ2xhc3NcIixcbiAgICAgICAgICAgICAgICBwcm9tcHQ6ICAgICAgICAgICAgICAgICAgIFwiPVwiLFxuICAgICAgICAgICAgICAgIHByb21wdF9idXR0b25fY2xhc3M6ICAgICAgXCI9cHJvbXB0QnV0dG9uQ2xhc3NcIixcbiAgICAgICAgICAgICAgICBwcm9tcHRfaWNvbl9jbGFzczogICAgICAgIFwiPXByb21wdEljb25DbGFzc1wiLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlfc2Vjb25kczogICAgICAgICAgXCI9ZGlzcGxheVNlY29uZHNcIixcbiAgICAgICAgICAgICAgICBzaG93X2NvdW50X2Rvd246ICAgICAgICAgIFwiPXNob3dDb3VudERvd25cIixcbiAgICAgICAgICAgICAgICBmaXhlZF9wb3NpdGlvbl9vbl9zY3JvbGw6IFwiPWZpeGVkUG9zaXRpb25PblNjcm9sbFwiLFxuICAgICAgICAgICAgICAgIGFsd2F5c19kZXRhY2hlZDogICAgICAgICAgXCI9YWx3YXlzRGV0YWNoZWRcIixcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAgICAgICAgICAgICAgICAgIFwiJm9uUHJvbXB0Q2xpY2tcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IFwiQW5ndWxhckJldHRlck1lc3NhZ2VDdHJsIGFzIGN0cmxcIixcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRycywgY29udHJvbGxlcikge1xuXG4gICAgICAgICAgICAgICAgdmFyIGFwaSA9IHNjb3BlLmFwaSB8fCB7fTtcblxuICAgICAgICAgICAgICAgIC8vIGNsYXNzZXNcbiAgICAgICAgICAgICAgICBzY29wZS5tZXNzYWdlX2NsYXNzID0gTUVTU0FHRV9DTEFTUztcbiAgICAgICAgICAgICAgICBzY29wZS5wcm9tcHRfY2xhc3MgPSBQUk9NUFRfQ0xBU1M7XG5cbiAgICAgICAgICAgICAgICAvLyBjb250cm9sXG4gICAgICAgICAgICAgICAgdmFyIHdhaXRfdGltZXI7XG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRfdmlzaWJsZV90aW1lcjtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbWVudF90b3A7XG4gICAgICAgICAgICAgICAgc2NvcGUuaXNfdmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgLy8gZml4IG9uIHNjcm9sbFxuICAgICAgICAgICAgICAgIHZhciBkZXRhY2hlZF9wb3NpdGlvbjtcbiAgICAgICAgICAgICAgICB2YXIgd2luZG93X2VsZW1lbnQgPSBhbmd1bGFyLmVsZW1lbnQoJHdpbmRvdyk7XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gYXBpXG4gICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgICAgICAgICAgYXBpLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGFwaS51cGRhdGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyB1dGlsc1xuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIGNsb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgc2NvcGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuaXNfdmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiB3YWl0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgc2NvcGUud2FpdCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vd2FpdF90aW1lciA9ICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAvLyAgICBpZiAoLS1zY29wZS5jb3VudF9kb3duID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAkdGltZW91dC5jYW5jZWwod2FpdF90aW1lcik7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICBzY29wZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgc2NvcGUud2FpdCgpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgIHdhaXRfdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0tc2NvcGUuY291bnRfZG93biA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQod2FpdF90aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUud2FpdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2tQb3NpdGlvblxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIHZpc2libGUgJiBpcyBub3QgZGV0YWNoZWQgJiBpcyBub3QgcmVhZHlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmlzX3Zpc2libGUgJiYgIWVsZW1lbnQuaGFzQ2xhc3MoJ2RldGFjaGVkJykgJiYgXy5pc051bGwoZWxlbWVudFswXS5vZmZzZXRQYXJlbnQpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfdmlzaWJsZV90aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCBlbGVtZW50IHRvcCBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfdG9wID0gZWxlbWVudFswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiB1cGRhdGVEZXRhY2hlZFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZURldGFjaGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbmNlbCB0aW1lclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGVsZW1lbnRfdmlzaWJsZV90aW1lcik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgZGV0YWNoZWQgYW5kIGlzIGF0IHRoZSB0b3Agb2Ygdmlld3BvcnQsIHRoZW4gZGV0YWNoXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5hbHdheXNfZGV0YWNoZWQgfHwgKCFlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpICYmIGVsZW1lbnRfdG9wIDw9IDAgJiYgJHdpbmRvdy5wYWdlWU9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoZWRfcG9zaXRpb24gPSAkd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgZGV0YWNoZWQgYW5kIGlzIGF0IG9yIGFib3ZlIGRldGFjaGVkIHBvc2l0aW9uLCB0aGVuIGF0dGFjaFxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpICYmICFfLmlzVW5kZWZpbmVkKGRldGFjaGVkX3Bvc2l0aW9uKSAmJiAkd2luZG93LnBhZ2VZT2Zmc2V0IDw9IGRldGFjaGVkX3Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzID0gZnVuY3Rpb24oZGV0YWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRldGFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQ2xhc3MoJ2RldGFjaGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZENsYXNzKCdkZXRhY2hlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoJ2RldGFjaGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUNsYXNzKCdkZXRhY2hlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldCB2aXNpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmlzX3Zpc2libGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5maXhlZF9wb3NpdGlvbl9vbl9zY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGNvdW50IGRvd25cbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuY291bnRfZG93biA9IF8ucGFyc2VJbnQoc2NvcGUuZGlzcGxheV9zZWNvbmRzKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzdG9wIHRpbWVvdXRcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh3YWl0X3RpbWVyKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBhdXRvIGNsb3NlIGFmdGVyIGludGVydmFsXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY29wZS5jb3VudF9kb3duKSAmJiBzY29wZS5jb3VudF9kb3duICE9PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHdhaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLndhaXQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IG91dGVyIHByb210IGNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5vdXRlcl9wcm9tcHRfY2xhc3MgPSBIQVNfUFJPTVBUX0NMQVNTO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyB3YXRjaGVyc1xuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnZGlzcGxheV9zZWNvbmRzJywgZnVuY3Rpb24odmFsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5kaXNwbGF5X3NlY29uZHMgPSBfLnBhcnNlSW50KHZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jb3VudF9kb3duID0gXy5wYXJzZUludCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ21lc3NhZ2UnLCBmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdyYXBwZXIgPSBhbmd1bGFyLmVsZW1lbnQoZWxlbWVudFswXS5xdWVyeVNlbGVjdG9yKCcuYW5ndWxhci1iZXR0ZXItbWVzc2FnZS13cmFwcGVyJykpO1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmVtcHR5KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29tcGlsZWRfbWVzc2FnZSA9ICRjb21waWxlKCc8c3Bhbj4nICsgdmFsICsgJzwvc3Bhbj4nKShzY29wZS4kcGFyZW50LiRwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5hcHBlbmQoY29tcGlsZWRfbWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh3YWl0X3RpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgncHJvbXB0JywgZnVuY3Rpb24odmFsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IG91dGVyIHByb210IGNsYXNzXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUub3V0ZXJfcHJvbXB0X2NsYXNzID0gSEFTX1BST01QVF9DTEFTUztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm91dGVyX3Byb21wdF9jbGFzcyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnYWx3YXlzX2RldGFjaGVkJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZURldGFjaGVkQ2xhc3Moc2NvcGUuYWx3YXlzX2RldGFjaGVkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyBldmVudHNcbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgICAgICAgICAvLyB3aW5kb3cgc2Nyb2xsXG5cbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd19lbGVtZW50Lm9uKCdzY3JvbGwnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY29wZS5tZXNzYWdlKSAmJiBzY29wZS5tZXNzYWdlICE9PSBcIlwiKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2h0bWwvYW5ndWxhci1iZXR0ZXItbWVzc2FnZS5odG1sJ1xuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBkaXJlY3RpdmUuJGluamVjdCA9IFtcbiAgICAgICAgJyR3aW5kb3cnLFxuICAgICAgICAnJHRpbWVvdXQnLFxuICAgICAgICAnJGNvbXBpbGUnLFxuICAgICAgICAnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9DTEFTUycsXG4gICAgICAgICdBTkdVTEFSX0JFVFRFUl9NRVNTQUdFX1BST01QVF9DTEFTUycsXG4gICAgICAgICdBTkdVTEFSX0JFVFRFUl9NRVNTQUdFX0hBU19QUk9NUFRfQ0xBU1MnXG4gICAgXTtcblxuICAgIGFuZ3VsYXIubW9kdWxlKCdBbmd1bGFyQmV0dGVyTWVzc2FnZScpXG4gICAgICAgIC5kaXJlY3RpdmUoJ2FuZ3VsYXJCZXR0ZXJNZXNzYWdlJywgZGlyZWN0aXZlKTtcblxufSkoKTtcbiIsIihmdW5jdGlvbiAoKSB7XG5cbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFuZ3VsYXIgQmV0dGVyIE1lc3NhZ2Ugc2V0dGluZ3NcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGFuZ3VsYXIubW9kdWxlKCdBbmd1bGFyQmV0dGVyTWVzc2FnZScpXG4gICAgICAgIC5jb25zdGFudCgnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9DTEFTUycsICAgICAgICAgICAgICAgXCJtZXNzYWdlXCIpXG4gICAgICAgIC5jb25zdGFudCgnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9QUk9NUFRfQ0xBU1MnLCAgICAgICAgXCJwcm9tcHRcIilcbiAgICAgICAgLmNvbnN0YW50KCdBTkdVTEFSX0JFVFRFUl9NRVNTQUdFX0hBU19QUk9NUFRfQ0xBU1MnLCAgICBcImhhcy1wcm9tcHRcIik7XG5cbn0pKCk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= diff --git a/dist/js/angular-better-message.tmpl.min.js b/dist/js/angular-better-message.tmpl.min.js index 9bd2e33..10f77ff 100644 --- a/dist/js/angular-better-message.tmpl.min.js +++ b/dist/js/angular-better-message.tmpl.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";angular.module("AngularBetterMessage",[])}(),angular.module("AngularBetterMessage",[]).run(["$templateCache",function(e){e.put("html/angular-better-message.html",'
{{count_down}}
')}]),function(){"use strict";var e=function(e){this.onClick=function(){if(!_.isUndefined(e.onClick)){var s=_.isUndefined(e.message)?null:e.message,t=_.isUndefined(e.state)?null:e.state,a=_.isUndefined(e.key)?null:e.key,n=_.isUndefined(e.data)?null:e.data;e.onClick({message:s,state:t,key:a,data:n})}e.close()}};e.$inject=["$scope"],angular.module("AngularBetterMessage").controller("AngularBetterMessageCtrl",e)}(),function(){"use strict";var e=function(e,s,t,a,n,o){return{restrict:"EA",scope:{api:"=",message:"=",state:"=",key:"=",data:"=",message_icon_class:"=messageIconClass",prompt:"=",prompt_button_class:"=promptButtonClass",prompt_icon_class:"=promptIconClass",display_seconds:"=displaySeconds",show_count_down:"=showCountDown",fixed_position_on_scroll:"=fixedPositionOnScroll",always_detached:"=alwaysDetached",onClick:"&onPromptClick"},controller:"AngularBetterMessageCtrl as ctrl",link:function(s,c,i,l){var d=s.api||{};s.message_class=a,s.prompt_class=n;var r,u,p;s.is_visible=!1;var g,m=angular.element(e);d.close=function(){s.close()},d.update=function(){s.update()},s.close=function(){s.is_visible=!1},s.wait=function(){r=window.setTimeout(function(){0===--s.count_down?(window.clearTimeout(r),s.close(),s.$apply()):(s.wait(),s.$apply())},1e3)},s.checkPosition=function(){s.is_visible&&!c.hasClass("detached")&&_.isNull(c[0].offsetParent)?u=window.setTimeout(function(){s.checkPosition(),s.$apply()},100):(p=c[0].getBoundingClientRect().top,s.updateDetached())},s.updateDetached=function(){window.clearTimeout(u),s.always_detached||!c.hasClass("detached")&&0>=p&&e.pageYOffset>0?(s.updateDetachedClass(!0),g=e.pageYOffset):c.hasClass("detached")&&!_.isUndefined(g)&&e.pageYOffset<=g&&s.updateDetachedClass(!1)},s.updateDetachedClass=function(e){e?c.hasClass("detached")||c.addClass("detached"):c.hasClass("detached")&&c.removeClass("detached")},s.update=function(){s.is_visible=!0,s.fixed_position_on_scroll&&s.checkPosition(),s.count_down=_.parseInt(s.display_seconds),window.clearTimeout(r),_.isUndefined(s.count_down)||0===s.count_down||(s.wait(),s.outer_prompt_class=o)},s.$watch("display_seconds",function(e){_.isUndefined(e)||""===e||(s.display_seconds=_.parseInt(e),s.count_down=_.parseInt(e))}),s.$watch("message",function(e){var a=angular.element(c[0].querySelector(".angular-better-message-wrapper"));if(a.empty(),_.isUndefined(e)||""===e)window.clearTimeout(r),s.close();else{var n=t(""+e+"")(s.$parent.$parent);a.append(n),s.update()}}),s.$watch("prompt",function(e){_.isUndefined(e)||""===e?s.outer_prompt_class="":s.outer_prompt_class=o}),s.$watch("always_detached",function(){s.updateDetachedClass(s.always_detached)}),s.fixed_position_on_scroll&&m.on("scroll",function(){_.isUndefined(s.message)||""===s.message||s.checkPosition()})},replace:!0,templateUrl:"html/angular-better-message.html"}};e.$inject=["$window","$timeout","$compile","ANGULAR_BETTER_MESSAGE_CLASS","ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS"],angular.module("AngularBetterMessage").directive("angularBetterMessage",e)}(),function(){"use strict";angular.module("AngularBetterMessage").constant("ANGULAR_BETTER_MESSAGE_CLASS","message").constant("ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","prompt").constant("ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS","has-prompt")}(); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UuanMiLCJhbmd1bGFyLWJldHRlci1tZXNzYWdlLXRlbXBsYXRlcy5qcyIsImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UtY29udHJvbGxlci5qcyIsImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UtZGlyZWN0aXZlLmpzIiwiYW5ndWxhci1iZXR0ZXItbWVzc2FnZS1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJhbmd1bGFyIiwibW9kdWxlIiwicnVuIiwiJHRlbXBsYXRlQ2FjaGUiLCJwdXQiLCJjb250cm9sbGVyIiwiJHMiLCJ0aGlzIiwib25DbGljayIsIl8iLCJpc1VuZGVmaW5lZCIsIm1lc3NhZ2UiLCJzdGF0ZSIsImtleSIsImRhdGEiLCJjbG9zZSIsIiRpbmplY3QiLCJkaXJlY3RpdmUiLCIkd2luZG93IiwiJHRpbWVvdXQiLCIkY29tcGlsZSIsIk1FU1NBR0VfQ0xBU1MiLCJQUk9NUFRfQ0xBU1MiLCJIQVNfUFJPTVBUX0NMQVNTIiwicmVzdHJpY3QiLCJzY29wZSIsImFwaSIsIm1lc3NhZ2VfaWNvbl9jbGFzcyIsInByb21wdCIsInByb21wdF9idXR0b25fY2xhc3MiLCJwcm9tcHRfaWNvbl9jbGFzcyIsImRpc3BsYXlfc2Vjb25kcyIsInNob3dfY291bnRfZG93biIsImZpeGVkX3Bvc2l0aW9uX29uX3Njcm9sbCIsImFsd2F5c19kZXRhY2hlZCIsImxpbmsiLCJlbGVtZW50IiwiYXR0cnMiLCJtZXNzYWdlX2NsYXNzIiwicHJvbXB0X2NsYXNzIiwid2FpdF90aW1lciIsImVsZW1lbnRfdmlzaWJsZV90aW1lciIsImVsZW1lbnRfdG9wIiwiaXNfdmlzaWJsZSIsImRldGFjaGVkX3Bvc2l0aW9uIiwid2luZG93X2VsZW1lbnQiLCJ1cGRhdGUiLCJ3YWl0Iiwid2luZG93Iiwic2V0VGltZW91dCIsImNvdW50X2Rvd24iLCJjbGVhclRpbWVvdXQiLCIkYXBwbHkiLCJjaGVja1Bvc2l0aW9uIiwiaGFzQ2xhc3MiLCJpc051bGwiLCJvZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJ1cGRhdGVEZXRhY2hlZCIsInBhZ2VZT2Zmc2V0IiwidXBkYXRlRGV0YWNoZWRDbGFzcyIsImRldGFjaGVkIiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsInBhcnNlSW50Iiwib3V0ZXJfcHJvbXB0X2NsYXNzIiwiJHdhdGNoIiwidmFsIiwid3JhcHBlciIsInF1ZXJ5U2VsZWN0b3IiLCJlbXB0eSIsImNvbXBpbGVkX21lc3NhZ2UiLCIkcGFyZW50IiwiYXBwZW5kIiwib24iLCJyZXBsYWNlIiwidGVtcGxhdGVVcmwiLCJjb25zdGFudCJdLCJtYXBwaW5ncyI6IkNBQUEsV0FFQSxZQU1BQSxTQUFBQyxPQUFBLDhCQ1JBRCxRQUFBQyxPQUFBLDJCQUFBQyxLQUFBLGlCQUFBLFNBQUFDLEdBQUFBLEVBQUFDLElBQUEsbUNBQUEsd2VDQUEsV0FFQSxZQU1BLElBQUFDLEdBQUEsU0FBQUMsR0FLQUMsS0FBQUMsUUFBQSxXQUNBLElBQUFDLEVBQUFDLFlBQUFKLEVBQUFFLFNBQUEsQ0FFQSxHQUFBRyxHQUFBRixFQUFBQyxZQUFBSixFQUFBSyxTQUFBLEtBQUFMLEVBQUFLLFFBQ0FDLEVBQUFILEVBQUFDLFlBQUFKLEVBQUFNLE9BQUEsS0FBQU4sRUFBQU0sTUFDQUMsRUFBQUosRUFBQUMsWUFBQUosRUFBQU8sS0FBQSxLQUFBUCxFQUFBTyxJQUNBQyxFQUFBTCxFQUFBQyxZQUFBSixFQUFBUSxNQUFBLEtBQUFSLEVBQUFRLElBRUFSLEdBQUFFLFNBQUFHLFFBQUFBLEVBQUFDLE1BQUFBLEVBQUFDLElBQUFBLEVBQUFDLEtBQUFBLElBRUFSLEVBQUFTLFNBSUFWLEdBQUFXLFNBQUEsVUFFQWhCLFFBQUFDLE9BQUEsd0JBQUFJLFdBQUEsMkJBQUFBLE1DN0JBLFdBRUEsWUFNQSxJQUFBWSxHQUFBLFNBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEdBZUEsT0FDQUMsU0FBQSxLQUNBQyxPQUNBQyxJQUFB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QUEwQyxPQUFBLGtCQUFBLFdBQ0ExQyxFQUFBb0Msb0JBQUFwQyxFQUFBUyxtQkFTQVQsRUFBQVEsMEJBQ0FZLEVBQUE4QixHQUFBLFNBQUEsV0FDQWxFLEVBQUFDLFlBQUFlLEVBQUFkLFVBQUEsS0FBQWMsRUFBQWQsU0FHQWMsRUFBQTRCLG1CQUtBdUIsU0FBQSxFQUNBQyxZQUFBLG9DQUlBNUQsR0FBQUQsU0FDQSxVQUNBLFdBQ0EsV0FDQSwrQkFDQSxzQ0FDQSwyQ0FHQWhCLFFBQUFDLE9BQUEsd0JBQ0FnQixVQUFBLHVCQUFBQSxNQy9RQSxXQUVBLFlBTUFqQixTQUFBQyxPQUFBLHdCQUNBNkUsU0FBQSwrQkFBQSxXQUNBQSxTQUFBLHNDQUFBLFVBQ0FBLFNBQUEsMENBQUEiLCJmaWxlIjoiYW5ndWxhci1iZXR0ZXItbWVzc2FnZS50bXBsLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQW5ndWxhciBCZXR0ZXIgTWVzc2FnZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgYW5ndWxhci5tb2R1bGUoJ0FuZ3VsYXJCZXR0ZXJNZXNzYWdlJywgW10pO1xuXG59KSgpO1xuIiwiYW5ndWxhci5tb2R1bGUoXCJBbmd1bGFyQmV0dGVyTWVzc2FnZVwiLCBbXSkucnVuKFtcIiR0ZW1wbGF0ZUNhY2hlXCIsIGZ1bmN0aW9uKCR0ZW1wbGF0ZUNhY2hlKSB7JHRlbXBsYXRlQ2FjaGUucHV0KFwiaHRtbC9hbmd1bGFyLWJldHRlci1tZXNzYWdlLmh0bWxcIixcIjxkaXYgY2xhc3M9XFxcImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2VcXFwiIG5nLWNsYXNzPVxcXCJbc3RhdGUsIG91dGVyX3Byb21wdF9jbGFzc11cXFwiIG5nLXNob3c9XFxcImlzX3Zpc2libGVcXFwiPjxkaXYgbmctY2xhc3M9XFxcIm1lc3NhZ2VfY2xhc3NcXFwiPjxzcGFuIG5nLWNsYXNzPVxcXCJtZXNzYWdlX2ljb25fY2xhc3NcXFwiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9XFxcImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2Utd3JhcHBlclxcXCI+PC9zcGFuPiA8c3BhbiBjbGFzcz1cXFwiY291bnRkb3duXFxcIiBuZy1pZj1cXFwic2hvd19jb3VudF9kb3duXFxcIj57e2NvdW50X2Rvd259fTwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPVxcXCJwcm9tcHRcXFwiIG5nLWNsYXNzPVxcXCJwcm9tcHRfY2xhc3NcXFwiPjxidXR0b24gbmctY2xhc3M9XFxcInByb21wdF9idXR0b25fY2xhc3NcXFwiIG5nLWNsaWNrPVxcXCJjdHJsLm9uQ2xpY2soKVxcXCI+e3twcm9tcHR9fSA8c3BhbiBuZy1jbGFzcz1cXFwicHJvbXB0X2ljb25fY2xhc3NcXFwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj5cIik7fV0pOyIsIihmdW5jdGlvbiAoKSB7XG5cbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFuZ3VsYXIgQmV0dGVyIE1lc3NhZ2UgY29udHJvbGxlclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgdmFyIGNvbnRyb2xsZXIgPSBmdW5jdGlvbiAoJHMpIHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogb25DbGlja1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkNsaWNrID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoJHMub25DbGljaykpIHtcblxuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIV8uaXNVbmRlZmluZWQoJHMubWVzc2FnZSkgPyAkcy5tZXNzYWdlIDogbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSAhXy5pc1VuZGVmaW5lZCgkcy5zdGF0ZSkgPyAkcy5zdGF0ZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9ICFfLmlzVW5kZWZpbmVkKCRzLmtleSkgPyAkcy5rZXkgOiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gIV8uaXNVbmRlZmluZWQoJHMuZGF0YSkgPyAkcy5kYXRhIDogbnVsbDtcblxuICAgICAgICAgICAgICAgICRzLm9uQ2xpY2soe21lc3NhZ2U6IG1lc3NhZ2UsIHN0YXRlOiBzdGF0ZSwga2V5OiBrZXksIGRhdGE6IGRhdGF9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRzLmNsb3NlKCk7XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnRyb2xsZXIuJGluamVjdCA9IFsnJHNjb3BlJ107XG5cbiAgICBhbmd1bGFyLm1vZHVsZSgnQW5ndWxhckJldHRlck1lc3NhZ2UnKS5jb250cm9sbGVyKCdBbmd1bGFyQmV0dGVyTWVzc2FnZUN0cmwnLCBjb250cm9sbGVyKTtcblxufSkoKTtcbiIsIihmdW5jdGlvbigpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gYW5ndWxhci1iZXR0ZXItbWVzc2FnZSBkaXJlY3RpdmVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHZhciBkaXJlY3RpdmUgPSBmdW5jdGlvbihcbiAgICAgICAgJHdpbmRvdyxcbiAgICAgICAgJHRpbWVvdXQsXG4gICAgICAgICRjb21waWxlLFxuICAgICAgICBNRVNTQUdFX0NMQVNTLFxuICAgICAgICBQUk9NUFRfQ0xBU1MsXG4gICAgICAgIEhBU19QUk9NUFRfQ0xBU1NcbiAgICApIHtcblxuICAgICAgICBmdW5jdGlvbiBnZXRQb3NpdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgeFBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgIHZhciB5UG9zaXRpb24gPSAwO1xuXG4gICAgICAgICAgICB3aGlsZShlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgeFBvc2l0aW9uICs9IChlbGVtZW50Lm9mZnNldExlZnQgLSBlbGVtZW50LnNjcm9sbExlZnQgKyBlbGVtZW50LmNsaWVudExlZnQpO1xuICAgICAgICAgICAgICAgIHlQb3NpdGlvbiArPSAoZWxlbWVudC5vZmZzZXRUb3AgLSBlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50VG9wKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyB4OiB4UG9zaXRpb24sIHk6IHlQb3NpdGlvbiB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnRUEnLFxuICAgICAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAgICAgICBhcGk6ICAgICAgICAgICAgICAgICAgICAgIFwiPVwiLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICAgICAgICAgICAgICAgICAgXCI9XCIsIC8vIHdpbGwgYmUgcGFzc2VkIGJhY2sgb24gZXZlbnRzXG4gICAgICAgICAgICAgICAgc3RhdGU6ICAgICAgICAgICAgICAgICAgICBcIj1cIiwgLy8gd2lsbCBiZSBwYXNzZWQgYmFjayBvbiBldmVudHNcbiAgICAgICAgICAgICAgICBrZXk6ICAgICAgICAgICAgICAgICAgICAgIFwiPVwiLCAvLyB3aWxsIGJlIHBhc3NlZCBiYWNrIG9uIGV2ZW50c1xuICAgICAgICAgICAgICAgIGRhdGE6ICAgICAgICAgICAgICAgICAgICAgXCI9XCIsIC8vIHdpbGwgYmUgcGFzc2VkIGJhY2sgb24gZXZlbnRzXG4gICAgICAgICAgICAgICAgbWVzc2FnZV9pY29uX2NsYXNzOiAgICAgICBcIj1tZXNzYWdlSWNvbkNsYXNzXCIsXG4gICAgICAgICAgICAgICAgcHJvbXB0OiAgICAgICAgICAgICAgICAgICBcIj1cIixcbiAgICAgICAgICAgICAgICBwcm9tcHRfYnV0dG9uX2NsYXNzOiAgICAgIFwiPXByb21wdEJ1dHRvbkNsYXNzXCIsXG4gICAgICAgICAgICAgICAgcHJvbXB0X2ljb25fY2xhc3M6ICAgICAgICBcIj1wcm9tcHRJY29uQ2xhc3NcIixcbiAgICAgICAgICAgICAgICBkaXNwbGF5X3NlY29uZHM6ICAgICAgICAgIFwiPWRpc3BsYXlTZWNvbmRzXCIsXG4gICAgICAgICAgICAgICAgc2hvd19jb3VudF9kb3duOiAgICAgICAgICBcIj1zaG93Q291bnREb3duXCIsXG4gICAgICAgICAgICAgICAgZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsOiBcIj1maXhlZFBvc2l0aW9uT25TY3JvbGxcIixcbiAgICAgICAgICAgICAgICBhbHdheXNfZGV0YWNoZWQ6ICAgICAgICAgIFwiPWFsd2F5c0RldGFjaGVkXCIsXG4gICAgICAgICAgICAgICAgb25DbGljazogICAgICAgICAgICAgICAgICBcIiZvblByb21wdENsaWNrXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250cm9sbGVyOiBcIkFuZ3VsYXJCZXR0ZXJNZXNzYWdlQ3RybCBhcyBjdHJsXCIsXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cnMsIGNvbnRyb2xsZXIpIHtcblxuICAgICAgICAgICAgICAgIHZhciBhcGkgPSBzY29wZS5hcGkgfHwge307XG5cbiAgICAgICAgICAgICAgICAvLyBjbGFzc2VzXG4gICAgICAgICAgICAgICAgc2NvcGUubWVzc2FnZV9jbGFzcyA9IE1FU1NBR0VfQ0xBU1M7XG4gICAgICAgICAgICAgICAgc2NvcGUucHJvbXB0X2NsYXNzID0gUFJPTVBUX0NMQVNTO1xuXG4gICAgICAgICAgICAgICAgLy8gY29udHJvbFxuICAgICAgICAgICAgICAgIHZhciB3YWl0X3RpbWVyO1xuICAgICAgICAgICAgICAgIHZhciBlbGVtZW50X3Zpc2libGVfdGltZXI7XG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRfdG9wO1xuICAgICAgICAgICAgICAgIHNjb3BlLmlzX3Zpc2libGUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIC8vIGZpeCBvbiBzY3JvbGxcbiAgICAgICAgICAgICAgICB2YXIgZGV0YWNoZWRfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgdmFyIHdpbmRvd19lbGVtZW50ID0gYW5ndWxhci5lbGVtZW50KCR3aW5kb3cpO1xuXG4gICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGFwaVxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICAgICAgICAgIGFwaS5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBzY29wZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBhcGkudXBkYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gdXRpbHNcbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBjbG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmlzX3Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogd2FpdFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLndhaXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAvL3dhaXRfdGltZXIgPSAkdGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgaWYgKC0tc2NvcGUuY291bnRfZG93biA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgJHRpbWVvdXQuY2FuY2VsKHdhaXRfdGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgc2NvcGUuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHNjb3BlLndhaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgfVxuICAgICAgICAgICAgICAgICAgICAvL30sIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICB3YWl0X3RpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXNjb3BlLmNvdW50X2Rvd24gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHdhaXRfdGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLndhaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIGNoZWNrUG9zaXRpb25cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyB2aXNpYmxlICYgaXMgbm90IGRldGFjaGVkICYgaXMgbm90IHJlYWR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5pc192aXNpYmxlICYmICFlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpICYmIF8uaXNOdWxsKGVsZW1lbnRbMF0ub2Zmc2V0UGFyZW50KSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWl0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3Zpc2libGVfdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgZWxlbWVudCB0b3Agb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3RvcCA9IGVsZW1lbnRbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZURldGFjaGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogdXBkYXRlRGV0YWNoZWRcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjYW5jZWwgdGltZXJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChlbGVtZW50X3Zpc2libGVfdGltZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgbm90IGRldGFjaGVkIGFuZCBpcyBhdCB0aGUgdG9wIG9mIHZpZXdwb3J0LCB0aGVuIGRldGFjaFxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuYWx3YXlzX2RldGFjaGVkIHx8ICghZWxlbWVudC5oYXNDbGFzcygnZGV0YWNoZWQnKSAmJiBlbGVtZW50X3RvcCA8PSAwICYmICR3aW5kb3cucGFnZVlPZmZzZXQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWRDbGFzcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFjaGVkX3Bvc2l0aW9uID0gJHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGRldGFjaGVkIGFuZCBpcyBhdCBvciBhYm92ZSBkZXRhY2hlZCBwb3NpdGlvbiwgdGhlbiBhdHRhY2hcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNDbGFzcygnZGV0YWNoZWQnKSAmJiAhXy5pc1VuZGVmaW5lZChkZXRhY2hlZF9wb3NpdGlvbikgJiYgJHdpbmRvdy5wYWdlWU9mZnNldCA8PSBkZXRhY2hlZF9wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWRDbGFzcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWRDbGFzcyA9IGZ1bmN0aW9uKGRldGFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXRhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRDbGFzcygnZGV0YWNoZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVDbGFzcygnZGV0YWNoZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiB1cGRhdGVcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBzY29wZS51cGRhdGUgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdmlzaWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICBzY29wZS5pc192aXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBjb3VudCBkb3duXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmNvdW50X2Rvd24gPSBfLnBhcnNlSW50KHNjb3BlLmRpc3BsYXlfc2Vjb25kcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcCB0aW1lb3V0XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQod2FpdF90aW1lcik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYXV0byBjbG9zZSBhZnRlciBpbnRlcnZhbFxuICAgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NvcGUuY291bnRfZG93bikgJiYgc2NvcGUuY291bnRfZG93biAhPT0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFydCB3YWl0XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS53YWl0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCBvdXRlciBwcm9tdCBjbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUub3V0ZXJfcHJvbXB0X2NsYXNzID0gSEFTX1BST01QVF9DTEFTUztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gd2F0Y2hlcnNcbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ2Rpc3BsYXlfc2Vjb25kcycsIGZ1bmN0aW9uKHZhbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZGlzcGxheV9zZWNvbmRzID0gXy5wYXJzZUludCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuY291bnRfZG93biA9IF8ucGFyc2VJbnQodmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgc2NvcGUuJHdhdGNoKCdtZXNzYWdlJywgZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB3cmFwcGVyID0gYW5ndWxhci5lbGVtZW50KGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvcignLmFuZ3VsYXItYmV0dGVyLW1lc3NhZ2Utd3JhcHBlcicpKTtcbiAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5lbXB0eSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbXBpbGVkX21lc3NhZ2UgPSAkY29tcGlsZSgnPHNwYW4+JyArIHZhbCArICc8L3NwYW4+Jykoc2NvcGUuJHBhcmVudC4kcGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kKGNvbXBpbGVkX21lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQod2FpdF90aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ3Byb21wdCcsIGZ1bmN0aW9uKHZhbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldCBvdXRlciBwcm9tdCBjbGFzc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsKSAmJiB2YWwgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm91dGVyX3Byb21wdF9jbGFzcyA9IEhBU19QUk9NUFRfQ0xBU1M7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5vdXRlcl9wcm9tcHRfY2xhc3MgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ2Fsd2F5c19kZXRhY2hlZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzKHNjb3BlLmFsd2F5c19kZXRhY2hlZCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gZXZlbnRzXG4gICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgICAgICAgICAgLy8gd2luZG93IHNjcm9sbFxuXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZpeGVkX3Bvc2l0aW9uX29uX3Njcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3dfZWxlbWVudC5vbignc2Nyb2xsJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NvcGUubWVzc2FnZSkgJiYgc2NvcGUubWVzc2FnZSAhPT0gXCJcIikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdodG1sL2FuZ3VsYXItYmV0dGVyLW1lc3NhZ2UuaHRtbCdcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZGlyZWN0aXZlLiRpbmplY3QgPSBbXG4gICAgICAgICckd2luZG93JyxcbiAgICAgICAgJyR0aW1lb3V0JyxcbiAgICAgICAgJyRjb21waWxlJyxcbiAgICAgICAgJ0FOR1VMQVJfQkVUVEVSX01FU1NBR0VfQ0xBU1MnLFxuICAgICAgICAnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9QUk9NUFRfQ0xBU1MnLFxuICAgICAgICAnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9IQVNfUFJPTVBUX0NMQVNTJ1xuICAgIF07XG5cbiAgICBhbmd1bGFyLm1vZHVsZSgnQW5ndWxhckJldHRlck1lc3NhZ2UnKVxuICAgICAgICAuZGlyZWN0aXZlKCdhbmd1bGFyQmV0dGVyTWVzc2FnZScsIGRpcmVjdGl2ZSk7XG5cbn0pKCk7XG4iLCIoZnVuY3Rpb24gKCkge1xuXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBbmd1bGFyIEJldHRlciBNZXNzYWdlIHNldHRpbmdzXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBhbmd1bGFyLm1vZHVsZSgnQW5ndWxhckJldHRlck1lc3NhZ2UnKVxuICAgICAgICAuY29uc3RhbnQoJ0FOR1VMQVJfQkVUVEVSX01FU1NBR0VfQ0xBU1MnLCAgICAgICAgICAgICAgIFwibWVzc2FnZVwiKVxuICAgICAgICAuY29uc3RhbnQoJ0FOR1VMQVJfQkVUVEVSX01FU1NBR0VfUFJPTVBUX0NMQVNTJywgICAgICAgIFwicHJvbXB0XCIpXG4gICAgICAgIC5jb25zdGFudCgnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9IQVNfUFJPTVBUX0NMQVNTJywgICAgXCJoYXMtcHJvbXB0XCIpO1xuXG59KSgpO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 +!function(){"use strict";angular.module("AngularBetterMessage",[])}(),angular.module("AngularBetterMessage",[]).run(["$templateCache",function(e){e.put("html/angular-better-message.html",'
{{count_down}}
')}]),function(){"use strict";var e=function(e){this.onClick=function(){if(!_.isUndefined(e.onClick)){var s=_.isUndefined(e.message)?null:e.message,t=_.isUndefined(e.state)?null:e.state,a=_.isUndefined(e.key)?null:e.key,n=_.isUndefined(e.data)?null:e.data;e.onClick({message:s,state:t,key:a,data:n})}e.close()}};e.$inject=["$scope"],angular.module("AngularBetterMessage").controller("AngularBetterMessageCtrl",e)}(),function(){"use strict";var e=function(e,s,t,a,n,o){return{restrict:"EA",scope:{api:"=",message:"=",state:"=",key:"=",data:"=",message_icon_class:"=messageIconClass",prompt:"=",prompt_button_class:"=promptButtonClass",prompt_icon_class:"=promptIconClass",display_seconds:"=displaySeconds",show_count_down:"=showCountDown",fixed_position_on_scroll:"=fixedPositionOnScroll",always_detached:"=alwaysDetached",onClick:"&onPromptClick"},controller:"AngularBetterMessageCtrl as ctrl",link:function(s,c,i,l){var d=s.api||{};s.message_class=a,s.prompt_class=n;var r,u,p;s.is_visible=!1;var g,m=angular.element(e);d.close=function(){s.close()},d.update=function(){s.update()},s.close=function(){s.is_visible=!1},s.wait=function(){r=window.setTimeout(function(){0===--s.count_down?(window.clearTimeout(r),s.close(),s.$apply()):(s.wait(),s.$apply())},1e3)},s.checkPosition=function(){s.is_visible&&!c.hasClass("detached")&&_.isNull(c[0].offsetParent)?u=window.setTimeout(function(){s.checkPosition(),s.$apply()},100):(p=c[0].getBoundingClientRect().top,s.updateDetached())},s.updateDetached=function(){window.clearTimeout(u),s.always_detached||!c.hasClass("detached")&&p<=0&&e.pageYOffset>0?(s.updateDetachedClass(!0),g=e.pageYOffset):c.hasClass("detached")&&!_.isUndefined(g)&&e.pageYOffset<=g&&s.updateDetachedClass(!1)},s.updateDetachedClass=function(e){e?c.hasClass("detached")||c.addClass("detached"):c.hasClass("detached")&&c.removeClass("detached")},s.update=function(){s.is_visible=!0,s.fixed_position_on_scroll&&s.checkPosition(),s.count_down=_.parseInt(s.display_seconds),window.clearTimeout(r),_.isUndefined(s.count_down)||0===s.count_down||(s.wait(),s.outer_prompt_class=o)},s.$watch("display_seconds",function(e){_.isUndefined(e)||""===e||(s.display_seconds=_.parseInt(e),s.count_down=_.parseInt(e))}),s.$watch("message",function(e){var a=angular.element(c[0].querySelector(".angular-better-message-wrapper"));if(a.empty(),_.isUndefined(e)||""===e)window.clearTimeout(r),s.close();else{var n=t(""+e+"")(s.$parent.$parent);a.append(n),s.update()}}),s.$watch("prompt",function(e){_.isUndefined(e)||""===e?s.outer_prompt_class="":s.outer_prompt_class=o}),s.$watch("always_detached",function(){s.updateDetachedClass(s.always_detached)}),s.fixed_position_on_scroll&&m.on("scroll",function(){_.isUndefined(s.message)||""===s.message||s.checkPosition()})},replace:!0,templateUrl:"html/angular-better-message.html"}};e.$inject=["$window","$timeout","$compile","ANGULAR_BETTER_MESSAGE_CLASS","ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS"],angular.module("AngularBetterMessage").directive("angularBetterMessage",e)}(),function(){"use strict";angular.module("AngularBetterMessage").constant("ANGULAR_BETTER_MESSAGE_CLASS","message").constant("ANGULAR_BETTER_MESSAGE_PROMPT_CLASS","prompt").constant("ANGULAR_BETTER_MESSAGE_HAS_PROMPT_CLASS","has-prompt")}(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UuanMiLCJhbmd1bGFyLWJldHRlci1tZXNzYWdlLXRlbXBsYXRlcy5qcyIsImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UtY29udHJvbGxlci5qcyIsImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2UtZGlyZWN0aXZlLmpzIiwiYW5ndWxhci1iZXR0ZXItbWVzc2FnZS1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJhbmd1bGFyIiwibW9kdWxlIiwicnVuIiwiJHRlbXBsYXRlQ2FjaGUiLCJwdXQiLCJjb250cm9sbGVyIiwiJHMiLCJ0aGlzIiwib25DbGljayIsIl8iLCJpc1VuZGVmaW5lZCIsIm1lc3NhZ2UiLCJzdGF0ZSIsImtleSIsImRhdGEiLCJjbG9zZSIsIiRpbmplY3QiLCJkaXJlY3RpdmUiLCIkd2luZG93IiwiJHRpbWVvdXQiLCIkY29tcGlsZSIsIk1FU1NBR0VfQ0xBU1MiLCJQUk9NUFRfQ0xBU1MiLCJIQVNfUFJPTVBUX0NMQVNTIiwicmVzdHJpY3QiLCJzY29wZSIsImFwaSIsIm1lc3NhZ2VfaWNvbl9jbGFzcyIsInByb21wdCIsInByb21wdF9idXR0b25fY2xhc3MiLCJwcm9tcHRfaWNvbl9jbGFzcyIsImRpc3BsYXlfc2Vjb25kcyIsInNob3dfY291bnRfZG93biIsImZpeGVkX3Bvc2l0aW9uX29uX3Njcm9sbCIsImFsd2F5c19kZXRhY2hlZCIsImxpbmsiLCJlbGVtZW50IiwiYXR0cnMiLCJtZXNzYWdlX2NsYXNzIiwicHJvbXB0X2NsYXNzIiwid2FpdF90aW1lciIsImVsZW1lbnRfdmlzaWJsZV90aW1lciIsImVsZW1lbnRfdG9wIiwiaXNfdmlzaWJsZSIsImRldGFjaGVkX3Bvc2l0aW9uIiwid2luZG93X2VsZW1lbnQiLCJ1cGRhdGUiLCJ3YWl0Iiwid2luZG93Iiwic2V0VGltZW91dCIsImNvdW50X2Rvd24iLCJjbGVhclRpbWVvdXQiLCIkYXBwbHkiLCJjaGVja1Bvc2l0aW9uIiwiaGFzQ2xhc3MiLCJpc051bGwiLCJvZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJ1cGRhdGVEZXRhY2hlZCIsInBhZ2VZT2Zmc2V0IiwidXBkYXRlRGV0YWNoZWRDbGFzcyIsImRldGFjaGVkIiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsInBhcnNlSW50Iiwib3V0ZXJfcHJvbXB0X2NsYXNzIiwiJHdhdGNoIiwidmFsIiwid3JhcHBlciIsInF1ZXJ5U2VsZWN0b3IiLCJlbXB0eSIsImNvbXBpbGVkX21lc3NhZ2UiLCIkcGFyZW50IiwiYXBwZW5kIiwib24iLCJyZXBsYWNlIiwidGVtcGxhdGVVcmwiLCJjb25zdGFudCJdLCJtYXBwaW5ncyI6IkNBQUEsV0FFQSxZQU1BQSxTQUFBQyxPQUFBLDhCQ1JBRCxRQUFBQyxPQUFBLDJCQUFBQyxLQUFBLGlCQUFBLFNBQUFDLEdBQUFBLEVBQUFDLElBQUEsbUNBQUEsd2VDQUEsV0FFQSxZQU1BLElBQUFDLEdBQUEsU0FBQUMsR0FLQUMsS0FBQUMsUUFBQSxXQUNBLElBQUFDLEVBQUFDLFlBQUFKLEVBQUFFLFNBQUEsQ0FFQSxHQUFBRyxHQUFBRixFQUFBQyxZQUFBSixFQUFBSyxTQUFBLEtBQUFMLEVBQUFLLFFBQ0FDLEVBQUFILEVBQUFDLFlBQUFKLEVBQUFNLE9BQUEsS0FBQU4sRUFBQU0sTUFDQUMsRUFBQUosRUFBQUMsWUFBQUosRUFBQU8sS0FBQSxLQUFBUCxFQUFBTyxJQUNBQyxFQUFBTCxFQUFBQyxZQUFBSixFQUFBUSxNQUFBLEtBQUFSLEVBQUFRLElBRUFSLEdBQUFFLFNBQUFHLFFBQUFBLEVBQUFDLE1BQUFBLEVBQUFDLElBQUFBLEVBQUFDLEtBQUFBLElBRUFSLEVBQUFTLFNBSUFWLEdBQUFXLFNBQUEsVUFFQWhCLFFBQUFDLE9BQUEsd0JBQUFJLFdBQUEsMkJBQUFBLE1DN0JBLFdBRUEsWUFNQSxJQUFBWSxHQUFBLFNBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEdBZUEsT0FDQUMsU0FBQSxLQUNBQyxPQUNBQyxJQUFB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QUEwQyxPQUFBLGtCQUFBLFdBQ0ExQyxFQUFBb0Msb0JBQUFwQyxFQUFBUyxtQkFTQVQsRUFBQVEsMEJBQ0FZLEVBQUE4QixHQUFBLFNBQUEsV0FDQWxFLEVBQUFDLFlBQUFlLEVBQUFkLFVBQUEsS0FBQWMsRUFBQWQsU0FHQWMsRUFBQTRCLG1CQUtBdUIsU0FBQSxFQUNBQyxZQUFBLG9DQUlBNUQsR0FBQUQsU0FDQSxVQUNBLFdBQ0EsV0FDQSwrQkFDQSxzQ0FDQSwyQ0FHQWhCLFFBQUFDLE9BQUEsd0JBQ0FnQixVQUFBLHVCQUFBQSxNQy9RQSxXQUVBLFlBTUFqQixTQUFBQyxPQUFBLHdCQUNBNkUsU0FBQSwrQkFBQSxXQUNBQSxTQUFBLHNDQUFBLFVBQ0FBLFNBQUEsMENBQUEiLCJmaWxlIjoiYW5ndWxhci1iZXR0ZXItbWVzc2FnZS50bXBsLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQW5ndWxhciBCZXR0ZXIgTWVzc2FnZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgYW5ndWxhci5tb2R1bGUoJ0FuZ3VsYXJCZXR0ZXJNZXNzYWdlJywgW10pO1xuXG59KSgpO1xuIiwiYW5ndWxhci5tb2R1bGUoXCJBbmd1bGFyQmV0dGVyTWVzc2FnZVwiLCBbXSkucnVuKFtcIiR0ZW1wbGF0ZUNhY2hlXCIsIGZ1bmN0aW9uKCR0ZW1wbGF0ZUNhY2hlKSB7JHRlbXBsYXRlQ2FjaGUucHV0KFwiaHRtbC9hbmd1bGFyLWJldHRlci1tZXNzYWdlLmh0bWxcIixcIjxkaXYgY2xhc3M9XFxcImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2VcXFwiIG5nLWNsYXNzPVxcXCJbc3RhdGUsIG91dGVyX3Byb21wdF9jbGFzc11cXFwiIG5nLXNob3c9XFxcImlzX3Zpc2libGVcXFwiPjxkaXYgbmctY2xhc3M9XFxcIm1lc3NhZ2VfY2xhc3NcXFwiPjxzcGFuIG5nLWNsYXNzPVxcXCJtZXNzYWdlX2ljb25fY2xhc3NcXFwiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9XFxcImFuZ3VsYXItYmV0dGVyLW1lc3NhZ2Utd3JhcHBlclxcXCI+PC9zcGFuPiA8c3BhbiBjbGFzcz1cXFwiY291bnRkb3duXFxcIiBuZy1pZj1cXFwic2hvd19jb3VudF9kb3duXFxcIj57e2NvdW50X2Rvd259fTwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPVxcXCJwcm9tcHRcXFwiIG5nLWNsYXNzPVxcXCJwcm9tcHRfY2xhc3NcXFwiPjxidXR0b24gbmctY2xhc3M9XFxcInByb21wdF9idXR0b25fY2xhc3NcXFwiIG5nLWNsaWNrPVxcXCJjdHJsLm9uQ2xpY2soKVxcXCI+e3twcm9tcHR9fSA8c3BhbiBuZy1jbGFzcz1cXFwicHJvbXB0X2ljb25fY2xhc3NcXFwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj5cIik7fV0pOyIsIihmdW5jdGlvbiAoKSB7XG5cbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFuZ3VsYXIgQmV0dGVyIE1lc3NhZ2UgY29udHJvbGxlclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgdmFyIGNvbnRyb2xsZXIgPSBmdW5jdGlvbiAoJHMpIHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogb25DbGlja1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkNsaWNrID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoJHMub25DbGljaykpIHtcblxuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIV8uaXNVbmRlZmluZWQoJHMubWVzc2FnZSkgPyAkcy5tZXNzYWdlIDogbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSAhXy5pc1VuZGVmaW5lZCgkcy5zdGF0ZSkgPyAkcy5zdGF0ZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9ICFfLmlzVW5kZWZpbmVkKCRzLmtleSkgPyAkcy5rZXkgOiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gIV8uaXNVbmRlZmluZWQoJHMuZGF0YSkgPyAkcy5kYXRhIDogbnVsbDtcblxuICAgICAgICAgICAgICAgICRzLm9uQ2xpY2soe21lc3NhZ2U6IG1lc3NhZ2UsIHN0YXRlOiBzdGF0ZSwga2V5OiBrZXksIGRhdGE6IGRhdGF9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRzLmNsb3NlKCk7XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnRyb2xsZXIuJGluamVjdCA9IFsnJHNjb3BlJ107XG5cbiAgICBhbmd1bGFyLm1vZHVsZSgnQW5ndWxhckJldHRlck1lc3NhZ2UnKS5jb250cm9sbGVyKCdBbmd1bGFyQmV0dGVyTWVzc2FnZUN0cmwnLCBjb250cm9sbGVyKTtcblxufSkoKTtcbiIsIihmdW5jdGlvbigpIHtcblxuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gYW5ndWxhci1iZXR0ZXItbWVzc2FnZSBkaXJlY3RpdmVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHZhciBkaXJlY3RpdmUgPSBmdW5jdGlvbihcbiAgICAgICAgJHdpbmRvdyxcbiAgICAgICAgJHRpbWVvdXQsXG4gICAgICAgICRjb21waWxlLFxuICAgICAgICBNRVNTQUdFX0NMQVNTLFxuICAgICAgICBQUk9NUFRfQ0xBU1MsXG4gICAgICAgIEhBU19QUk9NUFRfQ0xBU1NcbiAgICApIHtcblxuICAgICAgICBmdW5jdGlvbiBnZXRQb3NpdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgeFBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgIHZhciB5UG9zaXRpb24gPSAwO1xuXG4gICAgICAgICAgICB3aGlsZShlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgeFBvc2l0aW9uICs9IChlbGVtZW50Lm9mZnNldExlZnQgLSBlbGVtZW50LnNjcm9sbExlZnQgKyBlbGVtZW50LmNsaWVudExlZnQpO1xuICAgICAgICAgICAgICAgIHlQb3NpdGlvbiArPSAoZWxlbWVudC5vZmZzZXRUb3AgLSBlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50VG9wKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyB4OiB4UG9zaXRpb24sIHk6IHlQb3NpdGlvbiB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnRUEnLFxuICAgICAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAgICAgICBhcGk6ICAgICAgICAgICAgICAgICAgICAgIFwiPVwiLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICAgICAgICAgICAgICAgICAgXCI9XCIsIC8vIHdpbGwgYmUgcGFzc2VkIGJhY2sgb24gZXZlbnRzXG4gICAgICAgICAgICAgICAgc3RhdGU6ICAgICAgICAgICAgICAgICAgICBcIj1cIiwgLy8gd2lsbCBiZSBwYXNzZWQgYmFjayBvbiBldmVudHNcbiAgICAgICAgICAgICAgICBrZXk6ICAgICAgICAgICAgICAgICAgICAgIFwiPVwiLCAvLyB3aWxsIGJlIHBhc3NlZCBiYWNrIG9uIGV2ZW50c1xuICAgICAgICAgICAgICAgIGRhdGE6ICAgICAgICAgICAgICAgICAgICAgXCI9XCIsIC8vIHdpbGwgYmUgcGFzc2VkIGJhY2sgb24gZXZlbnRzXG4gICAgICAgICAgICAgICAgbWVzc2FnZV9pY29uX2NsYXNzOiAgICAgICBcIj1tZXNzYWdlSWNvbkNsYXNzXCIsXG4gICAgICAgICAgICAgICAgcHJvbXB0OiAgICAgICAgICAgICAgICAgICBcIj1cIixcbiAgICAgICAgICAgICAgICBwcm9tcHRfYnV0dG9uX2NsYXNzOiAgICAgIFwiPXByb21wdEJ1dHRvbkNsYXNzXCIsXG4gICAgICAgICAgICAgICAgcHJvbXB0X2ljb25fY2xhc3M6ICAgICAgICBcIj1wcm9tcHRJY29uQ2xhc3NcIixcbiAgICAgICAgICAgICAgICBkaXNwbGF5X3NlY29uZHM6ICAgICAgICAgIFwiPWRpc3BsYXlTZWNvbmRzXCIsXG4gICAgICAgICAgICAgICAgc2hvd19jb3VudF9kb3duOiAgICAgICAgICBcIj1zaG93Q291bnREb3duXCIsXG4gICAgICAgICAgICAgICAgZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsOiBcIj1maXhlZFBvc2l0aW9uT25TY3JvbGxcIixcbiAgICAgICAgICAgICAgICBhbHdheXNfZGV0YWNoZWQ6ICAgICAgICAgIFwiPWFsd2F5c0RldGFjaGVkXCIsXG4gICAgICAgICAgICAgICAgb25DbGljazogICAgICAgICAgICAgICAgICBcIiZvblByb21wdENsaWNrXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250cm9sbGVyOiBcIkFuZ3VsYXJCZXR0ZXJNZXNzYWdlQ3RybCBhcyBjdHJsXCIsXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cnMsIGNvbnRyb2xsZXIpIHtcblxuICAgICAgICAgICAgICAgIHZhciBhcGkgPSBzY29wZS5hcGkgfHwge307XG5cbiAgICAgICAgICAgICAgICAvLyBjbGFzc2VzXG4gICAgICAgICAgICAgICAgc2NvcGUubWVzc2FnZV9jbGFzcyA9IE1FU1NBR0VfQ0xBU1M7XG4gICAgICAgICAgICAgICAgc2NvcGUucHJvbXB0X2NsYXNzID0gUFJPTVBUX0NMQVNTO1xuXG4gICAgICAgICAgICAgICAgLy8gY29udHJvbFxuICAgICAgICAgICAgICAgIHZhciB3YWl0X3RpbWVyO1xuICAgICAgICAgICAgICAgIHZhciBlbGVtZW50X3Zpc2libGVfdGltZXI7XG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRfdG9wO1xuICAgICAgICAgICAgICAgIHNjb3BlLmlzX3Zpc2libGUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIC8vIGZpeCBvbiBzY3JvbGxcbiAgICAgICAgICAgICAgICB2YXIgZGV0YWNoZWRfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgdmFyIHdpbmRvd19lbGVtZW50ID0gYW5ndWxhci5lbGVtZW50KCR3aW5kb3cpO1xuXG4gICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGFwaVxuICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICAgICAgICAgIGFwaS5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBzY29wZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBhcGkudXBkYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gdXRpbHNcbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBjbG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmlzX3Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogd2FpdFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNjb3BlLndhaXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAvL3dhaXRfdGltZXIgPSAkdGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgaWYgKC0tc2NvcGUuY291bnRfZG93biA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgJHRpbWVvdXQuY2FuY2VsKHdhaXRfdGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgc2NvcGUuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHNjb3BlLndhaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgfVxuICAgICAgICAgICAgICAgICAgICAvL30sIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICB3YWl0X3RpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXNjb3BlLmNvdW50X2Rvd24gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHdhaXRfdGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLndhaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIGNoZWNrUG9zaXRpb25cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyB2aXNpYmxlICYgaXMgbm90IGRldGFjaGVkICYgaXMgbm90IHJlYWR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5pc192aXNpYmxlICYmICFlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpICYmIF8uaXNOdWxsKGVsZW1lbnRbMF0ub2Zmc2V0UGFyZW50KSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWl0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3Zpc2libGVfdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgZWxlbWVudCB0b3Agb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3RvcCA9IGVsZW1lbnRbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZURldGFjaGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogdXBkYXRlRGV0YWNoZWRcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjYW5jZWwgdGltZXJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChlbGVtZW50X3Zpc2libGVfdGltZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgbm90IGRldGFjaGVkIGFuZCBpcyBhdCB0aGUgdG9wIG9mIHZpZXdwb3J0LCB0aGVuIGRldGFjaFxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuYWx3YXlzX2RldGFjaGVkIHx8ICghZWxlbWVudC5oYXNDbGFzcygnZGV0YWNoZWQnKSAmJiBlbGVtZW50X3RvcCA8PSAwICYmICR3aW5kb3cucGFnZVlPZmZzZXQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWRDbGFzcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFjaGVkX3Bvc2l0aW9uID0gJHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGRldGFjaGVkIGFuZCBpcyBhdCBvciBhYm92ZSBkZXRhY2hlZCBwb3NpdGlvbiwgdGhlbiBhdHRhY2hcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNDbGFzcygnZGV0YWNoZWQnKSAmJiAhXy5pc1VuZGVmaW5lZChkZXRhY2hlZF9wb3NpdGlvbikgJiYgJHdpbmRvdy5wYWdlWU9mZnNldCA8PSBkZXRhY2hlZF9wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWRDbGFzcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc2NvcGUudXBkYXRlRGV0YWNoZWRDbGFzcyA9IGZ1bmN0aW9uKGRldGFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXRhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRDbGFzcygnZGV0YWNoZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCdkZXRhY2hlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVDbGFzcygnZGV0YWNoZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiB1cGRhdGVcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBzY29wZS51cGRhdGUgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdmlzaWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICBzY29wZS5pc192aXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZml4ZWRfcG9zaXRpb25fb25fc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBjb3VudCBkb3duXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmNvdW50X2Rvd24gPSBfLnBhcnNlSW50KHNjb3BlLmRpc3BsYXlfc2Vjb25kcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcCB0aW1lb3V0XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQod2FpdF90aW1lcik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYXV0byBjbG9zZSBhZnRlciBpbnRlcnZhbFxuICAgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NvcGUuY291bnRfZG93bikgJiYgc2NvcGUuY291bnRfZG93biAhPT0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFydCB3YWl0XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS53YWl0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCBvdXRlciBwcm9tdCBjbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUub3V0ZXJfcHJvbXB0X2NsYXNzID0gSEFTX1BST01QVF9DTEFTUztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gd2F0Y2hlcnNcbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ2Rpc3BsYXlfc2Vjb25kcycsIGZ1bmN0aW9uKHZhbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZGlzcGxheV9zZWNvbmRzID0gXy5wYXJzZUludCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuY291bnRfZG93biA9IF8ucGFyc2VJbnQodmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgc2NvcGUuJHdhdGNoKCdtZXNzYWdlJywgZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB3cmFwcGVyID0gYW5ndWxhci5lbGVtZW50KGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvcignLmFuZ3VsYXItYmV0dGVyLW1lc3NhZ2Utd3JhcHBlcicpKTtcbiAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5lbXB0eSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbXBpbGVkX21lc3NhZ2UgPSAkY29tcGlsZSgnPHNwYW4+JyArIHZhbCArICc8L3NwYW4+Jykoc2NvcGUuJHBhcmVudC4kcGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kKGNvbXBpbGVkX21lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQod2FpdF90aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ3Byb21wdCcsIGZ1bmN0aW9uKHZhbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldCBvdXRlciBwcm9tdCBjbGFzc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsKSAmJiB2YWwgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm91dGVyX3Byb21wdF9jbGFzcyA9IEhBU19QUk9NUFRfQ0xBU1M7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5vdXRlcl9wcm9tcHRfY2xhc3MgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ2Fsd2F5c19kZXRhY2hlZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBzY29wZS51cGRhdGVEZXRhY2hlZENsYXNzKHNjb3BlLmFsd2F5c19kZXRhY2hlZCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gZXZlbnRzXG4gICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgICAgICAgICAgLy8gd2luZG93IHNjcm9sbFxuXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZpeGVkX3Bvc2l0aW9uX29uX3Njcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3dfZWxlbWVudC5vbignc2Nyb2xsJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NvcGUubWVzc2FnZSkgJiYgc2NvcGUubWVzc2FnZSAhPT0gXCJcIikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jaGVja1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdodG1sL2FuZ3VsYXItYmV0dGVyLW1lc3NhZ2UuaHRtbCdcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZGlyZWN0aXZlLiRpbmplY3QgPSBbXG4gICAgICAgICckd2luZG93JyxcbiAgICAgICAgJyR0aW1lb3V0JyxcbiAgICAgICAgJyRjb21waWxlJyxcbiAgICAgICAgJ0FOR1VMQVJfQkVUVEVSX01FU1NBR0VfQ0xBU1MnLFxuICAgICAgICAnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9QUk9NUFRfQ0xBU1MnLFxuICAgICAgICAnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9IQVNfUFJPTVBUX0NMQVNTJ1xuICAgIF07XG5cbiAgICBhbmd1bGFyLm1vZHVsZSgnQW5ndWxhckJldHRlck1lc3NhZ2UnKVxuICAgICAgICAuZGlyZWN0aXZlKCdhbmd1bGFyQmV0dGVyTWVzc2FnZScsIGRpcmVjdGl2ZSk7XG5cbn0pKCk7XG4iLCIoZnVuY3Rpb24gKCkge1xuXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBbmd1bGFyIEJldHRlciBNZXNzYWdlIHNldHRpbmdzXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBhbmd1bGFyLm1vZHVsZSgnQW5ndWxhckJldHRlck1lc3NhZ2UnKVxuICAgICAgICAuY29uc3RhbnQoJ0FOR1VMQVJfQkVUVEVSX01FU1NBR0VfQ0xBU1MnLCAgICAgICAgICAgICAgIFwibWVzc2FnZVwiKVxuICAgICAgICAuY29uc3RhbnQoJ0FOR1VMQVJfQkVUVEVSX01FU1NBR0VfUFJPTVBUX0NMQVNTJywgICAgICAgIFwicHJvbXB0XCIpXG4gICAgICAgIC5jb25zdGFudCgnQU5HVUxBUl9CRVRURVJfTUVTU0FHRV9IQVNfUFJPTVBUX0NMQVNTJywgICAgXCJoYXMtcHJvbXB0XCIpO1xuXG59KSgpO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 diff --git a/package.json b/package.json index a96ba18..63ee375 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,17 @@ { "name": "angular-better-message", - "version": "0.0.1", + "version": "1.0.0", "main": "dist/js/angular-better-message.tmpl.min.js", "dependencies": { "angular": "^1.4.2", "angular-animate": "^1.4.2", - "lodash": "^3.10.0" + "lodash": "^4.0.0" }, "devDependencies": { "gulp": "^3.9.0", "gulp-concat": "^2.6.0", - "gulp-htmlmin": "^1.1.3", - "gulp-jshint": "^1.11.2", + "gulp-htmlmin": "^2.0.0", + "gulp-jshint": "^1.0.0", "gulp-less": "^3.0.3", "gulp-livereload": "^3.8.0", "gulp-load-plugins": "^1.0.0-rc.1", @@ -20,7 +20,7 @@ "gulp-rename": "^1.2.2", "gulp-sass": "^2.0.3", "gulp-sourcemaps": "^1.5.2", - "gulp-uglify": "^1.2.0" + "gulp-uglify": "^2.0.0" }, "engines": { "node": ">=0.10.0"