Hummingbird Page Speed Optimization - Version 1.5.5

Version Description

Download this release

Release Info

Developer WPMUDEV
Plugin Icon 128x128 Hummingbird Page Speed Optimization
Version 1.5.5
Comparing to
See all releases

Code changes from version 1.5.4 to 1.5.5

_src/admin/js/admin-dashboard-cloudflare.js CHANGED
@@ -8,7 +8,7 @@ import Fetcher from './utils/fetcher';
8
  this.email = settings.email;
9
  this.apiKey = settings.apiKey;
10
  this.$stepsContainer = $('#cloudflare-steps');
11
- this.$infoBox = $('#cloudflare-info');
12
  this.$spinner = $( '.cloudflare-spinner' );
13
  this.$deactivateButton = $('#wphb-box-dashboard-cloudflare').find('.box-title .buttons');
14
 
@@ -94,7 +94,7 @@ import Fetcher from './utils/fetcher';
94
  showInfoBox: function( message ) {
95
  this.$infoBox.addClass( 'wphb-notice' );
96
  this.$infoBox.addClass( 'wphb-notice-error' );
97
- this.$infoBox.text( message );
98
  },
99
 
100
  showSpinner: function() {
8
  this.email = settings.email;
9
  this.apiKey = settings.apiKey;
10
  this.$stepsContainer = $('#cloudflare-steps');
11
+ this.$infoBox = $( '#cloudflare-info' );
12
  this.$spinner = $( '.cloudflare-spinner' );
13
  this.$deactivateButton = $('#wphb-box-dashboard-cloudflare').find('.box-title .buttons');
14
 
94
  showInfoBox: function( message ) {
95
  this.$infoBox.addClass( 'wphb-notice' );
96
  this.$infoBox.addClass( 'wphb-notice-error' );
97
+ this.$infoBox.html( message + '' );
98
  },
99
 
100
  showSpinner: function() {
admin/assets/js/admin.min.js CHANGED
@@ -1,4 +1,4 @@
1
- !function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=29)}([function(t,e,n){"use strict";function r(){function t(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";o.nonce=r,o.action=t;var c={data:o,method:s};return c.url=e,new(0,n(33).Promise)(function(t,e){jQuery.ajax(c).done(t).fail(e)}).then(function(t){return i(t)})}var e=ajaxurl,r=wphb.nonces.HBFetchNonce,o={caching:{setExpiration:function(e,n){return t("wphb_caching_set_expiration",{type:e,value:n},"POST")},setServer:function(e){return t("wphb_caching_set_server_type",{value:e},"POST")},reloadSnippets:function(e){return t("wphb_caching_reload_snippet",{type:e},"POST").then(function(t){return t})}},cloudflare:{connect:function(e,n,r){return t("wphb_cloudflare_connect",{step:e,formData:n,cfData:r},"POST").then(function(t){return t})},setExpiration:function(e){return t("wphb_cloudflare_set_expiry",{value:e},"POST")},purgeCache:function(){return t("wphb_cloudflare_purge_cache",{},"POST")}},dashboard:{toggleMinification:function(e){return t("wphb_dash_toggle_network_minification",{value:e},"POST")},skipSetup:function(){return t("wphb_dash_skip_setup",{},"POST")}},minification:{toggleCDN:function(e){return t("wphb_minification_toggle_cdn",{value:e},"POST")},toggleMinification:function(e){return t("wphb_minification_toggle_minification",{value:e},"POST")},startCheck:function(e){return t("wphb_minification_start_check",{progress:e},"POST").then(function(t){return t})},checkStep:function(e,n){return t("wphb_minification_check_step",{progress:e,step:n},"POST").then(function(t){return t})},cancelScan:function(){return t("wphb_minification_cancel_scan",{},"POST")}},performance:{runTest:function(){return t("wphb_performance_run_test",{},"POST").then(function(t){return t})},addRecipient:function(e,n){return t("wphb_pro_performance_add_recipient",{email:e,name:n},"POST").then(function(t){return t})},saveReportsSettings:function(e){return t("wphb_pro_performance_save_reports_settings",{data:e},"POST")}}};(0,c.default)(this,o)}function i(t){if("object"!==(void 0===t?"undefined":o(t))&&(t=JSON.parse(t)),t.success)return t.data;var e=t.data||{},n=new Error(e.message||"Error trying to fetch response from server");throw n.response=t,n}Object.defineProperty(e,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=n(60),c=function(t){return t&&t.__esModule?t:{default:t}}(s),a=new r;e.default=a},function(t,e,n){function r(t){return null==t?void 0===t?a:c:u&&u in Object(t)?o(t):s(t)}var i=n(6),o=n(48),s=n(54),c="[object Null]",a="[object Undefined]",u=i?i.toStringTag:void 0;t.exports=r},function(t,e,n){var r=n(10),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();t.exports=o},function(t,e,n){function r(t){return null!=t&&o(t.length)&&!i(t)}var i=n(15),o=n(16);t.exports=r},function(t,e){function n(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}t.exports=n},function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},function(t,e,n){var r=n(2),i=r.Symbol;t.exports=i},function(t,e,n){function r(t,e,n){var r=t[e];c.call(t,e)&&o(r,n)&&(void 0!==n||e in t)||i(t,e,n)}var i=n(8),o=n(13),s=Object.prototype,c=s.hasOwnProperty;t.exports=r},function(t,e,n){function r(t,e,n){"__proto__"==e&&i?i(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}var i=n(9);t.exports=r},function(t,e,n){var r=n(47),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(e,n(17))},function(t,e){function n(t,e){return!!(e=null==e?r:e)&&("number"==typeof t||i.test(t))&&t>-1&&t%1==0&&t<e}var r=9007199254740991,i=/^(?:0|[1-9]\d*)$/;t.exports=n},function(t,e){function n(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||r)}var r=Object.prototype;t.exports=n},function(t,e){function n(t,e){return t===e||t!==t&&e!==e}t.exports=n},function(t,e){function n(t){return t}t.exports=n},function(t,e,n){function r(t){if(!o(t))return!1;var e=i(t);return e==c||e==a||e==s||e==u}var i=n(1),o=n(4),s="[object AsyncFunction]",c="[object Function]",a="[object GeneratorFunction]",u="[object Proxy]";t.exports=r},function(t,e){function n(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=r}var r=9007199254740991;t.exports=n},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";jQuery(document).ready(function(){WPHB_Admin.init()})},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.caching={module:"caching",selectedServer:"",$serverSelector:null,$serverInstructions:[],$expirySelectors:[],$snippets:[],init:function(){var e=this,n=t("#wphb-box-caching-enable"),r=n.find(".box-content"),o=r.find(".spinner"),s=n.find(".box-footer");return wphbCachingStrings&&(e.strings=wphbCachingStrings),this.$serverSelector=t("#wphb-server-type"),this.selectedServer=this.$serverSelector.val(),e.$snippets.apache=t("#wphb-code-snippet-apache").find("pre").first(),e.$snippets.nginx=t("#wphb-code-snippet-nginx").find("pre").first(),t(".wphb-server-instructions").each(function(){e.$serverInstructions[t(this).data("server")]=t(this)}),t(".wphb-expiry-select").each(function(){var n=t(this).data("type");n&&t(this).change(function(){r.find(".wphb-content").hide(),s.hide(),o.fadeIn(),t(".wphb-notice").hide(),function(r){var o=t(r).val();i.default.caching.setExpiration(n,o).then(function(){e.reloadSnippets()})}(this)})}),this.showServerInstructions(this.selectedServer),this.$serverSelector.change(function(){var n=t(this).val();e.hideCurrentInstructions(),e.showServerInstructions(n),e.setServer(n),e.selectedServer=n}),t("#toggle-apache-instructions").click(function(e){e.preventDefault(),t(".apache-instructions").slideToggle()}),t("#toggle-litespeed-instructions").click(function(e){e.preventDefault(),t(".litespeed-instructions").slideToggle()}),this},setServer:function(t){i.default.caching.setServer(t)},hideCurrentInstructions:function(){var t=this.selectedServer;this.$serverInstructions[t]&&this.$serverInstructions[t].hide()},showServerInstructions:function(e){void 0!==this.$serverInstructions[e]&&this.$serverInstructions[e].show(),"apache"===e||"LiteSpeed"===e?t("#enable-cache-wrap").show():t("#enable-cache-wrap").hide()},reloadSnippets:function(){var e=this;for(var n in e.$snippets)e.$snippets.hasOwnProperty(n)&&i.default.caching.reloadSnippets(n).then(function(n){e.$snippets[n.type].text(n.code),n.type===e.selectedServer&&("apache"===n.type&&n.updatedFile?(t("#wphb-notice-code-snippet-htaccess-updated").show(),location.href=e.strings.recheckURL+"&caching-updated=true"):"apache"===n.type&&e.strings.cacheEnabled&&!n.updatedFile?(t("#wphb-notice-code-snippet-htaccess-error").show(),location.href=e.strings.htaccessErrorURL):(t("#wphb-notice-code-snippet-updated").show(),location.href=e.strings.recheckURL+"&caching-updated=true"))})}}}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.cloudflare={module:"cloudflare",$cfSelector:!1,$spinner:!1,init:function(){this.$spinner=t(".wphb-spinner"),this.$cfSelector=t("#wphb-caching-cloudflare-summary-set-expiry");var e=this;return wphb.cloudflare.is.connected&&this.$cfSelector.change(function(){e.setExpiry.call(e,[this])}),this},setExpiry:function(e){this.displaySpinner();var n=t(e).val();i.default.cloudflare.setExpiration(n).then(function(){window.location.reload()})},displaySpinner:function(){this.$spinner.css("visibility","visible")}}}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.DashboardCloudFlare={init:function(e){this.currentStep=e.currentStep,this.data=e,this.email=e.email,this.apiKey=e.apiKey,this.$stepsContainer=t("#cloudflare-steps"),this.$infoBox=t("#cloudflare-info"),this.$spinner=t(".cloudflare-spinner"),this.$deactivateButton=t("#wphb-box-dashboard-cloudflare").find(".box-title .buttons"),this.renderStep(this.currentStep),t("body").on("click",".cloudflare-clear-cache .button",function(e){e.preventDefault(),this.purgeCache.apply(t(e.target),[this])}.bind(this))},purgeCache:function(e){var n=this;n.attr("disabled",!0),e.showSpinner(),i.default.cloudflare.purgeCache().then(function(){var r=t("#wphb-notice-cloudflare-purge-cache");window.scrollTo(0,0),r.slideDown(),setTimeout(function(){r.slideUp()},5e3),n.removeAttr("disabled"),e.hideSpinner()})},renderStep:function(e){var n=WPHB_Admin.DashboardCloudFlare.template("#cloudflare-step-"+e),r=n(this.data),i=this;r&&(this.currentStep=e,this.$stepsContainer.hide().html(n(this.data)).fadeIn().find("form").on("submit",function(e){e.preventDefault(),i.submitStep.call(i,t(this))}),this.$spinner=this.$stepsContainer.find(".cloudflare-spinner")),this.bindEvents()},bindEvents:function(){var e=t("#cloudflare-how-to");e.hide(),t("#cloudflare-how-to-title > a").click(function(t){t.preventDefault(),e.toggle()}),this.$stepsContainer.find("select").each(function(){window.WDP.wpmuSelect(this)}),"final"===this.currentStep?this.$deactivateButton.removeClass("hidden"):this.$deactivateButton.addClass("hidden")},emptyInfoBox:function(){this.$infoBox.html(""),this.$infoBox.removeClass()},showInfoBox:function(t){this.$infoBox.addClass("wphb-notice"),this.$infoBox.addClass("wphb-notice-error"),this.$infoBox.text(t)},showSpinner:function(){this.$spinner.css("visibility","visible")},hideSpinner:function(){this.$spinner.css("visibility","hidden")},submitStep:function(t){var e=this;t.find("input[type=submit]").attr("disabled","true"),this.emptyInfoBox(),this.showSpinner(),i.default.cloudflare.connect(this.currentStep,t.serialize(),this.data).then(function(t){e.data=t.newData,e.renderStep(t.nextStep),"final"===t.nextStep&&(window.location.href=t.redirect)}).catch(function(t){e.showInfoBox(t)}),t.find("input[type=submit]").removeAttr("disabled"),e.hideSpinner()}},WPHB_Admin.DashboardCloudFlare.template=_.memoize(function(e){var n=void 0,r={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=r,(n=n||_.template(t(e).html()))(i)}})}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.dashboard={module:"dashboard",init:function(){var e=this;return wphbDashboardStrings&&(this.strings=wphbDashboardStrings),t("#wphb-activate-minification").change(function(){var n=t(this).val();i.default.dashboard.toggleMinification(n).then(function(){var r=t('input[name="use_cdn"]');"false"===n?(r.prop("checked",!1),r.prop("disabled",!0)):r.prop("disabled",!1),e.showNotice()})}),t("#use_cdn").change(function(){var n=t(this).is(":checked");i.default.minification.toggleCDN(n).then(function(){e.showNotice()})}),t(".wphb-performance-report-item").click(function(){var e=t(this).data("performance-url");e&&(location.href=e)}),this},showNotice:function(){var e=t("#wphb-notice-minification-settings-updated");e.slideDown(),setTimeout(function(){e.slideUp()},5e3)},startQuickSetup:function(){window.WDP.showOverlay("#wphb-quick-setup-modal",{class:"wphb-modal small wphb-quick-setup-modal no-close"})},skipSetup:function(){i.default.dashboard.skipSetup().then(function(){window.location.reload(!0)})},runPerformanceTest:function(){window.WDP.showOverlay("#run-performance-test-modal",{class:"wphb-modal small wphb-progress-modal no-close"}),WPHB_Admin.getModule("performance").performanceTest(this.strings.finishedTestURLsLink)}}}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.gzip={module:"gzip",selectedServer:"",$serverSelector:null,$serverInstructions:[],init:function(){var e=this;return this.$serverSelector=t("#wphb-server-type"),this.selectedServer=this.$serverSelector.val(),t(".wphb-server-instructions").each(function(){e.$serverInstructions[t(this).data("server")]=t(this)}),this.showServerInstructions(this.selectedServer),this.$serverSelector.change(function(){var n=t(this).val();e.hideCurrentInstructions(),e.showServerInstructions(n),e.setServer(n),e.selectedServer=n}),t("#toggle-apache-instructions").click(function(e){e.preventDefault(),t(".apache-instructions").toggle()}),t("#toggle-litespeed-instructions").click(function(e){e.preventDefault(),t(".litespeed-instructions").toggle()}),this},hideCurrentInstructions:function(){var t=this.selectedServer;this.$serverInstructions[t]&&this.$serverInstructions[t].hide()},showServerInstructions:function(e){void 0!==this.$serverInstructions[e]&&this.$serverInstructions[e].show(),"apache"===e||"LiteSpeed"===e?t("#enable-cache-wrap").show():t("#enable-cache-wrap").hide()},setServer:function(t){i.default.caching.setServer(t)}}}(jQuery)},function(t,e,n){"use strict";!function(t){var e={modules:[],init:function(){function e(t){var e=t.find(".wphb-score-result-label"),n=parseInt(e.text(),10)||100,r=t.find(".wphb-score-graph-result"),i=void 0,o=void 0,s=void 0;i=r.attr("r"),o=Math.PI*(2*i),n<0&&(n=0),n>100&&(n=100),s=(100-n)/100*o,r.css({strokeDashoffset:s})}function n(){t(".wphb-performance-report-overall-score").each(function(){e(t(this))}),t(".wphb-performance-report-current-score").each(function(){e(t(this))}),t(".wphb-performance-report-item-score").each(function(){e(t(this))})}t("body").on("change",".mobile-nav",function(){var e=t(this).val();e.length>0&&(location.href=e)}),window.register_events_performance=function(){setTimeout(n,500)},t(function(){setTimeout(n,500)})},initModule:function(t){return this.hasOwnProperty(t)?(this.modules[t]=this[t].init(),this.modules[t]):{}},getModule:function(t){return void 0!==this.modules[t]?this.modules[t]:this.initModule(t)}};e.utils={membershipModal:{open:function(){t("#wphb-upgrade-membership-modal-link").trigger("click")}},post:function(e,n){return e.action="wphb_ajax",e.module=n,t.ajax({url:ajaxurl,method:"POST",data:e})}},e.notices={init:function(){t(".wphb-notice:not(.notice) a.wphb-dismiss").click(function(e){e.preventDefault();t(this).data("id"),t(this).data("nonce");t(this).parent(".error").hide()})}},window.WPHB_Admin=e}(jQuery)},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var i=n(0),o=r(i),s=n(32),c=n(30),a=r(c),u=n(31),l=r(u);!function(t){WPHB_Admin.minification={$checkFilesButton:null,$checkFilesResultsContainer:null,module:"minification",checkURLSList:null,checkedURLS:0,$spinner:null,init:function(){var e=this;t("#wphb-minification-filter-button").on("click",function(e){e.preventDefault(),t("#wphb-minification-filter").toggle("slow")}),this.$checkFilesButton=t("#check-files"),this.$disableMinification=t("#wphb-disable-minification"),this.$spinner=t(".spinner"),this.$checkFilesButton.length&&this.$checkFilesButton.click(function(n){n.preventDefault(),window.WDP.showOverlay("#check-files-modal",{class:"wphb-modal small wphb-progress-modal no-close"}),t(this).attr("disabled",!0),e.checkFiles((0,s.getLink)("minification"))}),t(".wphb-discard").click(function(t){return t.preventDefault(),confirm((0,s.__)("discardAlert"))&&location.reload(),!1}),t(".wphb-enqueued-files input").on("change",function(){t(".wphb-discard").attr("disabled",!1)}),t("#use_cdn").change(function(){var e=t(this).is(":checked");o.default.minification.toggleCDN(e).then(function(){var e=t("#wphb-notice-minification-advanced-settings-updated");e.slideDown(),setTimeout(function(){e.slideUp()},5e3)})}),this.$disableMinification.change(function(){var n=t(this).is(":checked");e.$spinner.css("visibility","visible"),e.timer&&n&&(clearTimeout(e.timer),e.$spinner.css("visibility","hidden")),e.timer=setTimeout(function(){o.default.minification.toggleMinification(n).then(function(){location.reload()})},3e3)}),this.rowsCollection=new WPHB_Admin.minification.RowsCollection,t(".wphb-border-row").each(function(n,r){var i=void 0;i=t(r).data("filter-secondary")?new WPHB_Admin.minification.Row(t(r),t(r).data("filter"),t(r).data("filter-secondary")):new WPHB_Admin.minification.Row(t(r),t(r).data("filter")),e.rowsCollection.push(i)}),t("#wphb-s").keyup(function(){e.rowsCollection.addFilter(t(this).val(),"primary"),e.rowsCollection.applyFilters()}),t("#wphb-secondary-filter").change(function(){e.rowsCollection.addFilter(t(this).val(),"secondary"),e.rowsCollection.applyFilters()}),t(".filter-toggles").change(function(){var n=t(this),r=n.data("toggles"),i=n.prop("checked"),o=e.rowsCollection.getVisibleItems();for(var s in o)o[s].change(r,i)}),t("input.wphb-minification-file-selector").click(function(){var n=t(this),r=e.rowsCollection.getItemById(n.data("type"),n.data("handle"));r&&(n.is(":checked")?r.select():r.unSelect())}),t("#minification-bulk-file").click(function(){var n=t(this),r=e.rowsCollection.getItems();for(var i in r)r.hasOwnProperty(i)&&(n.is(":checked")?r[i].select():r[i].unSelect())}),t(".toggle-cross").on("click",function(){var n=t(this),r=n.find("input.toggle-include"),i=e.rowsCollection.getItemById(n.data("type"),n.data("handle"));i&&(i.change("include",!r.prop("checked")),i.getElement().find("input:not(.toggle-include)").prop("disabled",!r.prop("checked")))});var n=t("input[type=checkbox][name=use_cdn]");n.change(function(){var e=t(this).prop("checked");n.each(function(){this.checked=e})}),t("body").on("click",".wphb-minification-file-details",function(){window.innerWidth<783&&t(this).parent().find(".wphb-minification-row-details").toggle("slow")});var r=_.debounce(function(){window.innerWidth>=783?t(".wphb-minification-row-details").css("display","flex"):t(".wphb-minification-row-details").css("display","none")},250);return window.addEventListener("resize",r),this},checkFiles:function(e){var n=this,r=this;if(void 0===e&&(e=!1),r.minificationStarted){var i=sessionStorage.getItem("progress"),s=Math.round(80/sessionStorage.getItem("steps"));o.default.minification.checkStep(i,s).then(function(i){if(void 0!==i.finished){if(i.finished&&e)sessionStorage.clear(),n.updateProgressBar(100),!0===i.show_cdn&&t("#enable-cdn-modal").length?WDP.showOverlay("#enable-cdn-modal",{class:"wphb-modal small wphb-progress-modal no-close"}):window.location.href=e;else if(!i.finished){var o=parseInt(sessionStorage.getItem("progress"))+Math.round(80/sessionStorage.getItem("steps"));sessionStorage.setItem("progress",o),n.updateProgressBar(o),window.setTimeout(function(){r.checkFiles(e)},3e3)}}else window.location.href=e})}else{null===sessionStorage.getItem("progress")&&sessionStorage.setItem("progress",10);var c=sessionStorage.getItem("progress");this.updateProgressBar(c),o.default.minification.startCheck(c).then(function(t){void 0!==t.steps&&null===sessionStorage.getItem("steps")&&sessionStorage.setItem("steps",t.steps),r.minificationStarted=!0,r.checkFiles(e)})}},updateProgressBar:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e>100&&(e=100),t(".wphb-scan-progress .wphb-scan-progress-text span").text(e+"%"),e>=90&&t(".wphb-progress-state .wphb-progress-state-text").text("Finalizing..."),n&&t(".wphb-progress-state .wphb-progress-state-text").text("Cancelling..."),t(".wphb-scan-progress .wphb-scan-progress-bar span").width(e+"%")},cancelScan:function(){var t=this;o.default.minification.cancelScan().then(function(){sessionStorage.clear(),t.updateProgressBar(0,!0),window.location.href=(0,s.getLink)("minification")})}},WPHB_Admin.minification.Row=a.default,WPHB_Admin.minification.RowsCollection=l.default}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.performance={module:"performance",iteration:0,progress:0,init:function(){var e=this,n=t("body");wphbPerformanceStrings&&(this.strings=wphbPerformanceStrings),this.$runTestButton=t("#run-performance-test");var r=t(".performance-report-table");r.off("click","button"),r.on("click","tr.wphb-performance-report-item",function(e){e.preventDefault();var n=t(this).closest(".wphb-performance-report-item"),r=n.nextUntil(".wphb-performance-report-item");r.toggleClass("wphb-performance-report-item-additional-content-opened"),r.hasClass("wphb-performance-report-item-additional-content-opened")?n.addClass("wphb-performance-report-item-opened"):n.removeClass("wphb-performance-report-item-opened")}),this.$runTestButton.length&&this.$runTestButton.click(function(n){n.preventDefault(),window.WDP.showOverlay("#run-performance-test-modal",{class:"wphb-modal small wphb-progress-modal no-close"}),t(this).attr("disabled",!0),e.performanceTest(e.strings.finishedTestURLsLink)});var o=window.location.hash;if(o){var s=t(o);s.length&&s.find(".trigger-additional-content").trigger("click")}return t('select[name="email-frequency"]').change(function(){"1"===t(this).val()?t(this).closest(".schedule-box").find("div.days-container").hide():t(this).closest(".schedule-box").find("div.days-container").show()}).change(),n.on("click",".wphb-remove-recipient",function(e){e.preventDefault(),t(this).closest(".recipient").remove(),t(".scan-settings").find("input[id='scan_recipient'][value="+t(this).attr("data-id")+"]").remove()}),t("#add-receipt").click(function(){var n=t("#wphb-username-search").val(),r=t("#wphb-first-name").val();return i.default.performance.addRecipient(n,r).then(function(r){var i=t('<div class="recipient"/>'),o=t("<img/>").attr({src:r.avatar,width:"30"}),s=t("<span/>").html(r.name);i.append('<span class="name"/>'),i.find(".name").append(o,s),i.append(t('<span class="email"/>').html(n)),i.append(t("<a/>").attr({"data-id":r.user_id,class:"remove float-r wphb-remove-recipient",href:"#",alt:e.strings.removeButtonText}).html('<i class="dev-icon dev-icon-cross"></i>')),t("<input>").attr({type:"hidden",id:"scan_recipient",name:"email-recipients[]",value:JSON.stringify({email:r.email,name:r.name})}).appendTo(i),t(".receipt .recipients").append(i),t("#wphb-username-search").val(""),t("#wphb-first-name").val("")}).catch(function(t){alert(t.message)}),!1}),n.on("submit",".scan-frm",function(n){n.preventDefault();var r=t(this).serialize(),o=t(this);return o.find(".button").attr("disabled","disabled"),i.default.performance.saveReportsSettings(r).then(function(){o.find(".button").removeAttr("disabled"),e.showUpdateMessage()}),!1}),this},showUpdateMessage:function(){var e=t("#wphb-notice-performance-report-settings-updated");window.scrollTo(0,0),e.slideDown(),setTimeout(function(){e.slideUp()},5e3)},performanceTest:function(t){var e=this;void 0===t&&(t=!1),e.updateProgressBar(),i.default.performance.runTest().then(function(n){n.finished?t&&(window.location=t):window.setTimeout(function(){e.performanceTest(t)},5e3)})},updateProgressBar:function(){this.progress<90&&(this.progress+=35),this.progress>100&&(this.progress=90),t(".wphb-scan-progress .wphb-scan-progress-text span").text(this.progress+"%"),t(".wphb-scan-progress .wphb-scan-progress-bar span").attr("style","width:"+this.progress+"%")}}}(jQuery)},function(t,e,n){"use strict";!function(t){WPHB_Admin.uptime={module:"uptime",$dataRangeSelector:null,chartData:null,timer:null,$spinner:null,init:function(){this.$spinner=t(".spinner"),this.strings=wphbUptimeStrings,this.$dataRangeSelector=t("#wphb-uptime-data-range"),this.chartData=t("#uptime-chart-json").val(),this.$disableUptime=t("#wphb-disable-uptime"),this.$dataRangeSelector.change(function(){window.location.href=t(this).find(":selected").data("url")});var e=this;this.$disableUptime.change(function(){e.$spinner.css("visibility","visible"),t(this).is(":checked")&&e.timer?(clearTimeout(e.timer),e.$spinner.css("visibility","hidden")):e.timer=setTimeout(function(){location.href=e.strings.disableUptimeURL},3e3)}),this.drawChart(),t("#uptime-re-check-status").on("click",function(t){t.preventDefault(),location.reload()})},drawChart:function(){var e=new google.visualization.DataTable;e.addColumn("datetime","Day"),e.addColumn("number","Response Time (ms)");for(var n=JSON.parse(this.chartData),r=0;r<n.length;r++)n[r][0]=new Date(n[r][0]),n[r][1]=Math.round(n[r][1]),0==Math.round(n[r][1])&&(n[r][1]=-100);e.addRows(n);var i={chartArea:{left:80,top:20,width:"90%",height:"90%"},colors:["#24ADE5"],curveType:"function",legend:{position:"none"},vAxis:{format:"#,### ms",viewWindow:{min:0}},tooltip:{isHtml:!0},series:{0:{axis:"Resp"}},axes:{y:{Resp:{label:"Response Time (ms)"}}}},o=new google.visualization.LineChart(document.getElementById("uptime-chart"));o.draw(e,i),t(window).resize(function(){o.draw(e,i)})}}}(jQuery)},function(t,e,n){"use strict";n(25),n(27),n(24),n(20),n(26),n(23),n(22),n(28),n(21),n(19)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t,e,n){var r=t,i=e.toLowerCase(),o=!1,s=!1,c=!0,a=r.find(".toggle-include"),u=r.find(".toggle-combine"),l=r.find(".toggle-minify"),f=r.find(".toggle-position-footer"),p=r.find(".toggle-cross > i");return n&&(o=n.toLowerCase()),{hide:function(){r.addClass("out-of-filter"),c=!1},show:function(){r.removeClass("out-of-filter"),c=!0},getElement:function(){return r},getId:function(){return r.attr("id")},getFilter:function(){return i},matchFilter:function(t){return""===t||(t=t.toLowerCase(),i.search(t)>-1)},matchSecondaryFilter:function(t){return""===t||!!o&&(t=t.toLowerCase(),o===t)},isVisible:function(){return c},isSelected:function(){return s},select:function(){s=!0},unSelect:function(){s=!1},change:function(t,e){switch(t){case"minify":l.prop("checked",e);break;case"combine":u.prop("checked",e);break;case"include":p.removeClass(),a.prop("checked",e),e?(r.removeClass("disabled"),p.addClass("dev-icon dev-icon-cross"),a.attr("checked",!0)):(r.addClass("disabled"),p.addClass("wdv-icon wdv-icon-refresh"),a.removeAttr("checked"));break;case"footer":f.prop("checked",e)}}}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){var t=[],e="",n="";return{push:function(e){"object"===(void 0===e?"undefined":r(e))&&t.push(e)},getItems:function(){return t},getItem:function(e){return!!t[e]&&t[e]},getItemById:function(e,n){var r=!1;for(var i in t)if("wphb-file-"+e+"-"+n===t[i].getId()){r=t[i];break}return r},getVisibleItems:function(){var e=[];for(var n in t)t[n].isVisible()&&e.push(t[n]);return e},getSelectedItems:function(){var e=[];for(var n in t)t[n].isVisible()&&t[n].isSelected()&&e.push(t[n]);return e},addFilter:function(t,r){"secondary"===r?n=t:e=t},applyFilters:function(){for(var r in t)t[r]&&(t[r].matchFilter(e)&&t[r].matchSecondaryFilter(n)?t[r].show():t[r].hide())}}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.__=function(t){return wphb.strings[t]||""},e.getLink=function(t){return wphb.links[t]||""}},function(t,e,n){(function(e,r){/*!
2
  * @overview es6-promise - a tiny implementation of Promises/A+.
3
  * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
4
  * @license Licensed under MIT license
1
+ !function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=29)}([function(t,e,n){"use strict";function r(){function t(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";o.nonce=r,o.action=t;var c={data:o,method:s};return c.url=e,new(0,n(33).Promise)(function(t,e){jQuery.ajax(c).done(t).fail(e)}).then(function(t){return i(t)})}var e=ajaxurl,r=wphb.nonces.HBFetchNonce,o={caching:{setExpiration:function(e,n){return t("wphb_caching_set_expiration",{type:e,value:n},"POST")},setServer:function(e){return t("wphb_caching_set_server_type",{value:e},"POST")},reloadSnippets:function(e){return t("wphb_caching_reload_snippet",{type:e},"POST").then(function(t){return t})}},cloudflare:{connect:function(e,n,r){return t("wphb_cloudflare_connect",{step:e,formData:n,cfData:r},"POST").then(function(t){return t})},setExpiration:function(e){return t("wphb_cloudflare_set_expiry",{value:e},"POST")},purgeCache:function(){return t("wphb_cloudflare_purge_cache",{},"POST")}},dashboard:{toggleMinification:function(e){return t("wphb_dash_toggle_network_minification",{value:e},"POST")},skipSetup:function(){return t("wphb_dash_skip_setup",{},"POST")}},minification:{toggleCDN:function(e){return t("wphb_minification_toggle_cdn",{value:e},"POST")},toggleMinification:function(e){return t("wphb_minification_toggle_minification",{value:e},"POST")},startCheck:function(e){return t("wphb_minification_start_check",{progress:e},"POST").then(function(t){return t})},checkStep:function(e,n){return t("wphb_minification_check_step",{progress:e,step:n},"POST").then(function(t){return t})},cancelScan:function(){return t("wphb_minification_cancel_scan",{},"POST")}},performance:{runTest:function(){return t("wphb_performance_run_test",{},"POST").then(function(t){return t})},addRecipient:function(e,n){return t("wphb_pro_performance_add_recipient",{email:e,name:n},"POST").then(function(t){return t})},saveReportsSettings:function(e){return t("wphb_pro_performance_save_reports_settings",{data:e},"POST")}}};(0,c.default)(this,o)}function i(t){if("object"!==(void 0===t?"undefined":o(t))&&(t=JSON.parse(t)),t.success)return t.data;var e=t.data||{},n=new Error(e.message||"Error trying to fetch response from server");throw n.response=t,n}Object.defineProperty(e,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=n(60),c=function(t){return t&&t.__esModule?t:{default:t}}(s),a=new r;e.default=a},function(t,e,n){function r(t){return null==t?void 0===t?a:c:u&&u in Object(t)?o(t):s(t)}var i=n(6),o=n(48),s=n(54),c="[object Null]",a="[object Undefined]",u=i?i.toStringTag:void 0;t.exports=r},function(t,e,n){var r=n(10),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();t.exports=o},function(t,e,n){function r(t){return null!=t&&o(t.length)&&!i(t)}var i=n(15),o=n(16);t.exports=r},function(t,e){function n(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}t.exports=n},function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},function(t,e,n){var r=n(2),i=r.Symbol;t.exports=i},function(t,e,n){function r(t,e,n){var r=t[e];c.call(t,e)&&o(r,n)&&(void 0!==n||e in t)||i(t,e,n)}var i=n(8),o=n(13),s=Object.prototype,c=s.hasOwnProperty;t.exports=r},function(t,e,n){function r(t,e,n){"__proto__"==e&&i?i(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}var i=n(9);t.exports=r},function(t,e,n){var r=n(47),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(e,n(17))},function(t,e){function n(t,e){return!!(e=null==e?r:e)&&("number"==typeof t||i.test(t))&&t>-1&&t%1==0&&t<e}var r=9007199254740991,i=/^(?:0|[1-9]\d*)$/;t.exports=n},function(t,e){function n(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||r)}var r=Object.prototype;t.exports=n},function(t,e){function n(t,e){return t===e||t!==t&&e!==e}t.exports=n},function(t,e){function n(t){return t}t.exports=n},function(t,e,n){function r(t){if(!o(t))return!1;var e=i(t);return e==c||e==a||e==s||e==u}var i=n(1),o=n(4),s="[object AsyncFunction]",c="[object Function]",a="[object GeneratorFunction]",u="[object Proxy]";t.exports=r},function(t,e){function n(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=r}var r=9007199254740991;t.exports=n},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";jQuery(document).ready(function(){WPHB_Admin.init()})},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.caching={module:"caching",selectedServer:"",$serverSelector:null,$serverInstructions:[],$expirySelectors:[],$snippets:[],init:function(){var e=this,n=t("#wphb-box-caching-enable"),r=n.find(".box-content"),o=r.find(".spinner"),s=n.find(".box-footer");return wphbCachingStrings&&(e.strings=wphbCachingStrings),this.$serverSelector=t("#wphb-server-type"),this.selectedServer=this.$serverSelector.val(),e.$snippets.apache=t("#wphb-code-snippet-apache").find("pre").first(),e.$snippets.nginx=t("#wphb-code-snippet-nginx").find("pre").first(),t(".wphb-server-instructions").each(function(){e.$serverInstructions[t(this).data("server")]=t(this)}),t(".wphb-expiry-select").each(function(){var n=t(this).data("type");n&&t(this).change(function(){r.find(".wphb-content").hide(),s.hide(),o.fadeIn(),t(".wphb-notice").hide(),function(r){var o=t(r).val();i.default.caching.setExpiration(n,o).then(function(){e.reloadSnippets()})}(this)})}),this.showServerInstructions(this.selectedServer),this.$serverSelector.change(function(){var n=t(this).val();e.hideCurrentInstructions(),e.showServerInstructions(n),e.setServer(n),e.selectedServer=n}),t("#toggle-apache-instructions").click(function(e){e.preventDefault(),t(".apache-instructions").slideToggle()}),t("#toggle-litespeed-instructions").click(function(e){e.preventDefault(),t(".litespeed-instructions").slideToggle()}),this},setServer:function(t){i.default.caching.setServer(t)},hideCurrentInstructions:function(){var t=this.selectedServer;this.$serverInstructions[t]&&this.$serverInstructions[t].hide()},showServerInstructions:function(e){void 0!==this.$serverInstructions[e]&&this.$serverInstructions[e].show(),"apache"===e||"LiteSpeed"===e?t("#enable-cache-wrap").show():t("#enable-cache-wrap").hide()},reloadSnippets:function(){var e=this;for(var n in e.$snippets)e.$snippets.hasOwnProperty(n)&&i.default.caching.reloadSnippets(n).then(function(n){e.$snippets[n.type].text(n.code),n.type===e.selectedServer&&("apache"===n.type&&n.updatedFile?(t("#wphb-notice-code-snippet-htaccess-updated").show(),location.href=e.strings.recheckURL+"&caching-updated=true"):"apache"===n.type&&e.strings.cacheEnabled&&!n.updatedFile?(t("#wphb-notice-code-snippet-htaccess-error").show(),location.href=e.strings.htaccessErrorURL):(t("#wphb-notice-code-snippet-updated").show(),location.href=e.strings.recheckURL+"&caching-updated=true"))})}}}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.cloudflare={module:"cloudflare",$cfSelector:!1,$spinner:!1,init:function(){this.$spinner=t(".wphb-spinner"),this.$cfSelector=t("#wphb-caching-cloudflare-summary-set-expiry");var e=this;return wphb.cloudflare.is.connected&&this.$cfSelector.change(function(){e.setExpiry.call(e,[this])}),this},setExpiry:function(e){this.displaySpinner();var n=t(e).val();i.default.cloudflare.setExpiration(n).then(function(){window.location.reload()})},displaySpinner:function(){this.$spinner.css("visibility","visible")}}}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.DashboardCloudFlare={init:function(e){this.currentStep=e.currentStep,this.data=e,this.email=e.email,this.apiKey=e.apiKey,this.$stepsContainer=t("#cloudflare-steps"),this.$infoBox=t("#cloudflare-info"),this.$spinner=t(".cloudflare-spinner"),this.$deactivateButton=t("#wphb-box-dashboard-cloudflare").find(".box-title .buttons"),this.renderStep(this.currentStep),t("body").on("click",".cloudflare-clear-cache .button",function(e){e.preventDefault(),this.purgeCache.apply(t(e.target),[this])}.bind(this))},purgeCache:function(e){var n=this;n.attr("disabled",!0),e.showSpinner(),i.default.cloudflare.purgeCache().then(function(){var r=t("#wphb-notice-cloudflare-purge-cache");window.scrollTo(0,0),r.slideDown(),setTimeout(function(){r.slideUp()},5e3),n.removeAttr("disabled"),e.hideSpinner()})},renderStep:function(e){var n=WPHB_Admin.DashboardCloudFlare.template("#cloudflare-step-"+e),r=n(this.data),i=this;r&&(this.currentStep=e,this.$stepsContainer.hide().html(n(this.data)).fadeIn().find("form").on("submit",function(e){e.preventDefault(),i.submitStep.call(i,t(this))}),this.$spinner=this.$stepsContainer.find(".cloudflare-spinner")),this.bindEvents()},bindEvents:function(){var e=t("#cloudflare-how-to");e.hide(),t("#cloudflare-how-to-title > a").click(function(t){t.preventDefault(),e.toggle()}),this.$stepsContainer.find("select").each(function(){window.WDP.wpmuSelect(this)}),"final"===this.currentStep?this.$deactivateButton.removeClass("hidden"):this.$deactivateButton.addClass("hidden")},emptyInfoBox:function(){this.$infoBox.html(""),this.$infoBox.removeClass()},showInfoBox:function(t){this.$infoBox.addClass("wphb-notice"),this.$infoBox.addClass("wphb-notice-error"),this.$infoBox.html(t+"")},showSpinner:function(){this.$spinner.css("visibility","visible")},hideSpinner:function(){this.$spinner.css("visibility","hidden")},submitStep:function(t){var e=this;t.find("input[type=submit]").attr("disabled","true"),this.emptyInfoBox(),this.showSpinner(),i.default.cloudflare.connect(this.currentStep,t.serialize(),this.data).then(function(t){e.data=t.newData,e.renderStep(t.nextStep),"final"===t.nextStep&&(window.location.href=t.redirect)}).catch(function(t){e.showInfoBox(t)}),t.find("input[type=submit]").removeAttr("disabled"),e.hideSpinner()}},WPHB_Admin.DashboardCloudFlare.template=_.memoize(function(e){var n=void 0,r={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=r,(n=n||_.template(t(e).html()))(i)}})}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.dashboard={module:"dashboard",init:function(){var e=this;return wphbDashboardStrings&&(this.strings=wphbDashboardStrings),t("#wphb-activate-minification").change(function(){var n=t(this).val();i.default.dashboard.toggleMinification(n).then(function(){var r=t('input[name="use_cdn"]');"false"===n?(r.prop("checked",!1),r.prop("disabled",!0)):r.prop("disabled",!1),e.showNotice()})}),t("#use_cdn").change(function(){var n=t(this).is(":checked");i.default.minification.toggleCDN(n).then(function(){e.showNotice()})}),t(".wphb-performance-report-item").click(function(){var e=t(this).data("performance-url");e&&(location.href=e)}),this},showNotice:function(){var e=t("#wphb-notice-minification-settings-updated");e.slideDown(),setTimeout(function(){e.slideUp()},5e3)},startQuickSetup:function(){window.WDP.showOverlay("#wphb-quick-setup-modal",{class:"wphb-modal small wphb-quick-setup-modal no-close"})},skipSetup:function(){i.default.dashboard.skipSetup().then(function(){window.location.reload(!0)})},runPerformanceTest:function(){window.WDP.showOverlay("#run-performance-test-modal",{class:"wphb-modal small wphb-progress-modal no-close"}),WPHB_Admin.getModule("performance").performanceTest(this.strings.finishedTestURLsLink)}}}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.gzip={module:"gzip",selectedServer:"",$serverSelector:null,$serverInstructions:[],init:function(){var e=this;return this.$serverSelector=t("#wphb-server-type"),this.selectedServer=this.$serverSelector.val(),t(".wphb-server-instructions").each(function(){e.$serverInstructions[t(this).data("server")]=t(this)}),this.showServerInstructions(this.selectedServer),this.$serverSelector.change(function(){var n=t(this).val();e.hideCurrentInstructions(),e.showServerInstructions(n),e.setServer(n),e.selectedServer=n}),t("#toggle-apache-instructions").click(function(e){e.preventDefault(),t(".apache-instructions").toggle()}),t("#toggle-litespeed-instructions").click(function(e){e.preventDefault(),t(".litespeed-instructions").toggle()}),this},hideCurrentInstructions:function(){var t=this.selectedServer;this.$serverInstructions[t]&&this.$serverInstructions[t].hide()},showServerInstructions:function(e){void 0!==this.$serverInstructions[e]&&this.$serverInstructions[e].show(),"apache"===e||"LiteSpeed"===e?t("#enable-cache-wrap").show():t("#enable-cache-wrap").hide()},setServer:function(t){i.default.caching.setServer(t)}}}(jQuery)},function(t,e,n){"use strict";!function(t){var e={modules:[],init:function(){function e(t){var e=t.find(".wphb-score-result-label"),n=parseInt(e.text(),10)||100,r=t.find(".wphb-score-graph-result"),i=void 0,o=void 0,s=void 0;i=r.attr("r"),o=Math.PI*(2*i),n<0&&(n=0),n>100&&(n=100),s=(100-n)/100*o,r.css({strokeDashoffset:s})}function n(){t(".wphb-performance-report-overall-score").each(function(){e(t(this))}),t(".wphb-performance-report-current-score").each(function(){e(t(this))}),t(".wphb-performance-report-item-score").each(function(){e(t(this))})}t("body").on("change",".mobile-nav",function(){var e=t(this).val();e.length>0&&(location.href=e)}),window.register_events_performance=function(){setTimeout(n,500)},t(function(){setTimeout(n,500)})},initModule:function(t){return this.hasOwnProperty(t)?(this.modules[t]=this[t].init(),this.modules[t]):{}},getModule:function(t){return void 0!==this.modules[t]?this.modules[t]:this.initModule(t)}};e.utils={membershipModal:{open:function(){t("#wphb-upgrade-membership-modal-link").trigger("click")}},post:function(e,n){return e.action="wphb_ajax",e.module=n,t.ajax({url:ajaxurl,method:"POST",data:e})}},e.notices={init:function(){t(".wphb-notice:not(.notice) a.wphb-dismiss").click(function(e){e.preventDefault();t(this).data("id"),t(this).data("nonce");t(this).parent(".error").hide()})}},window.WPHB_Admin=e}(jQuery)},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var i=n(0),o=r(i),s=n(32),c=n(30),a=r(c),u=n(31),l=r(u);!function(t){WPHB_Admin.minification={$checkFilesButton:null,$checkFilesResultsContainer:null,module:"minification",checkURLSList:null,checkedURLS:0,$spinner:null,init:function(){var e=this;t("#wphb-minification-filter-button").on("click",function(e){e.preventDefault(),t("#wphb-minification-filter").toggle("slow")}),this.$checkFilesButton=t("#check-files"),this.$disableMinification=t("#wphb-disable-minification"),this.$spinner=t(".spinner"),this.$checkFilesButton.length&&this.$checkFilesButton.click(function(n){n.preventDefault(),window.WDP.showOverlay("#check-files-modal",{class:"wphb-modal small wphb-progress-modal no-close"}),t(this).attr("disabled",!0),e.checkFiles((0,s.getLink)("minification"))}),t(".wphb-discard").click(function(t){return t.preventDefault(),confirm((0,s.__)("discardAlert"))&&location.reload(),!1}),t(".wphb-enqueued-files input").on("change",function(){t(".wphb-discard").attr("disabled",!1)}),t("#use_cdn").change(function(){var e=t(this).is(":checked");o.default.minification.toggleCDN(e).then(function(){var e=t("#wphb-notice-minification-advanced-settings-updated");e.slideDown(),setTimeout(function(){e.slideUp()},5e3)})}),this.$disableMinification.change(function(){var n=t(this).is(":checked");e.$spinner.css("visibility","visible"),e.timer&&n&&(clearTimeout(e.timer),e.$spinner.css("visibility","hidden")),e.timer=setTimeout(function(){o.default.minification.toggleMinification(n).then(function(){location.reload()})},3e3)}),this.rowsCollection=new WPHB_Admin.minification.RowsCollection,t(".wphb-border-row").each(function(n,r){var i=void 0;i=t(r).data("filter-secondary")?new WPHB_Admin.minification.Row(t(r),t(r).data("filter"),t(r).data("filter-secondary")):new WPHB_Admin.minification.Row(t(r),t(r).data("filter")),e.rowsCollection.push(i)}),t("#wphb-s").keyup(function(){e.rowsCollection.addFilter(t(this).val(),"primary"),e.rowsCollection.applyFilters()}),t("#wphb-secondary-filter").change(function(){e.rowsCollection.addFilter(t(this).val(),"secondary"),e.rowsCollection.applyFilters()}),t(".filter-toggles").change(function(){var n=t(this),r=n.data("toggles"),i=n.prop("checked"),o=e.rowsCollection.getVisibleItems();for(var s in o)o[s].change(r,i)}),t("input.wphb-minification-file-selector").click(function(){var n=t(this),r=e.rowsCollection.getItemById(n.data("type"),n.data("handle"));r&&(n.is(":checked")?r.select():r.unSelect())}),t("#minification-bulk-file").click(function(){var n=t(this),r=e.rowsCollection.getItems();for(var i in r)r.hasOwnProperty(i)&&(n.is(":checked")?r[i].select():r[i].unSelect())}),t(".toggle-cross").on("click",function(){var n=t(this),r=n.find("input.toggle-include"),i=e.rowsCollection.getItemById(n.data("type"),n.data("handle"));i&&(i.change("include",!r.prop("checked")),i.getElement().find("input:not(.toggle-include)").prop("disabled",!r.prop("checked")))});var n=t("input[type=checkbox][name=use_cdn]");n.change(function(){var e=t(this).prop("checked");n.each(function(){this.checked=e})}),t("body").on("click",".wphb-minification-file-details",function(){window.innerWidth<783&&t(this).parent().find(".wphb-minification-row-details").toggle("slow")});var r=_.debounce(function(){window.innerWidth>=783?t(".wphb-minification-row-details").css("display","flex"):t(".wphb-minification-row-details").css("display","none")},250);return window.addEventListener("resize",r),this},checkFiles:function(e){var n=this,r=this;if(void 0===e&&(e=!1),r.minificationStarted){var i=sessionStorage.getItem("progress"),s=Math.round(80/sessionStorage.getItem("steps"));o.default.minification.checkStep(i,s).then(function(i){if(void 0!==i.finished){if(i.finished&&e)sessionStorage.clear(),n.updateProgressBar(100),!0===i.show_cdn&&t("#enable-cdn-modal").length?WDP.showOverlay("#enable-cdn-modal",{class:"wphb-modal small wphb-progress-modal no-close"}):window.location.href=e;else if(!i.finished){var o=parseInt(sessionStorage.getItem("progress"))+Math.round(80/sessionStorage.getItem("steps"));sessionStorage.setItem("progress",o),n.updateProgressBar(o),window.setTimeout(function(){r.checkFiles(e)},3e3)}}else window.location.href=e})}else{null===sessionStorage.getItem("progress")&&sessionStorage.setItem("progress",10);var c=sessionStorage.getItem("progress");this.updateProgressBar(c),o.default.minification.startCheck(c).then(function(t){void 0!==t.steps&&null===sessionStorage.getItem("steps")&&sessionStorage.setItem("steps",t.steps),r.minificationStarted=!0,r.checkFiles(e)})}},updateProgressBar:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e>100&&(e=100),t(".wphb-scan-progress .wphb-scan-progress-text span").text(e+"%"),e>=90&&t(".wphb-progress-state .wphb-progress-state-text").text("Finalizing..."),n&&t(".wphb-progress-state .wphb-progress-state-text").text("Cancelling..."),t(".wphb-scan-progress .wphb-scan-progress-bar span").width(e+"%")},cancelScan:function(){var t=this;o.default.minification.cancelScan().then(function(){sessionStorage.clear(),t.updateProgressBar(0,!0),window.location.href=(0,s.getLink)("minification")})}},WPHB_Admin.minification.Row=a.default,WPHB_Admin.minification.RowsCollection=l.default}(jQuery)},function(t,e,n){"use strict";var r=n(0),i=function(t){return t&&t.__esModule?t:{default:t}}(r);!function(t){WPHB_Admin.performance={module:"performance",iteration:0,progress:0,init:function(){var e=this,n=t("body");wphbPerformanceStrings&&(this.strings=wphbPerformanceStrings),this.$runTestButton=t("#run-performance-test");var r=t(".performance-report-table");r.off("click","button"),r.on("click","tr.wphb-performance-report-item",function(e){e.preventDefault();var n=t(this).closest(".wphb-performance-report-item"),r=n.nextUntil(".wphb-performance-report-item");r.toggleClass("wphb-performance-report-item-additional-content-opened"),r.hasClass("wphb-performance-report-item-additional-content-opened")?n.addClass("wphb-performance-report-item-opened"):n.removeClass("wphb-performance-report-item-opened")}),this.$runTestButton.length&&this.$runTestButton.click(function(n){n.preventDefault(),window.WDP.showOverlay("#run-performance-test-modal",{class:"wphb-modal small wphb-progress-modal no-close"}),t(this).attr("disabled",!0),e.performanceTest(e.strings.finishedTestURLsLink)});var o=window.location.hash;if(o){var s=t(o);s.length&&s.find(".trigger-additional-content").trigger("click")}return t('select[name="email-frequency"]').change(function(){"1"===t(this).val()?t(this).closest(".schedule-box").find("div.days-container").hide():t(this).closest(".schedule-box").find("div.days-container").show()}).change(),n.on("click",".wphb-remove-recipient",function(e){e.preventDefault(),t(this).closest(".recipient").remove(),t(".scan-settings").find("input[id='scan_recipient'][value="+t(this).attr("data-id")+"]").remove()}),t("#add-receipt").click(function(){var n=t("#wphb-username-search").val(),r=t("#wphb-first-name").val();return i.default.performance.addRecipient(n,r).then(function(r){var i=t('<div class="recipient"/>'),o=t("<img/>").attr({src:r.avatar,width:"30"}),s=t("<span/>").html(r.name);i.append('<span class="name"/>'),i.find(".name").append(o,s),i.append(t('<span class="email"/>').html(n)),i.append(t("<a/>").attr({"data-id":r.user_id,class:"remove float-r wphb-remove-recipient",href:"#",alt:e.strings.removeButtonText}).html('<i class="dev-icon dev-icon-cross"></i>')),t("<input>").attr({type:"hidden",id:"scan_recipient",name:"email-recipients[]",value:JSON.stringify({email:r.email,name:r.name})}).appendTo(i),t(".receipt .recipients").append(i),t("#wphb-username-search").val(""),t("#wphb-first-name").val("")}).catch(function(t){alert(t.message)}),!1}),n.on("submit",".scan-frm",function(n){n.preventDefault();var r=t(this).serialize(),o=t(this);return o.find(".button").attr("disabled","disabled"),i.default.performance.saveReportsSettings(r).then(function(){o.find(".button").removeAttr("disabled"),e.showUpdateMessage()}),!1}),this},showUpdateMessage:function(){var e=t("#wphb-notice-performance-report-settings-updated");window.scrollTo(0,0),e.slideDown(),setTimeout(function(){e.slideUp()},5e3)},performanceTest:function(t){var e=this;void 0===t&&(t=!1),e.updateProgressBar(),i.default.performance.runTest().then(function(n){n.finished?t&&(window.location=t):window.setTimeout(function(){e.performanceTest(t)},5e3)})},updateProgressBar:function(){this.progress<90&&(this.progress+=35),this.progress>100&&(this.progress=90),t(".wphb-scan-progress .wphb-scan-progress-text span").text(this.progress+"%"),t(".wphb-scan-progress .wphb-scan-progress-bar span").attr("style","width:"+this.progress+"%")}}}(jQuery)},function(t,e,n){"use strict";!function(t){WPHB_Admin.uptime={module:"uptime",$dataRangeSelector:null,chartData:null,timer:null,$spinner:null,init:function(){this.$spinner=t(".spinner"),this.strings=wphbUptimeStrings,this.$dataRangeSelector=t("#wphb-uptime-data-range"),this.chartData=t("#uptime-chart-json").val(),this.$disableUptime=t("#wphb-disable-uptime"),this.$dataRangeSelector.change(function(){window.location.href=t(this).find(":selected").data("url")});var e=this;this.$disableUptime.change(function(){e.$spinner.css("visibility","visible"),t(this).is(":checked")&&e.timer?(clearTimeout(e.timer),e.$spinner.css("visibility","hidden")):e.timer=setTimeout(function(){location.href=e.strings.disableUptimeURL},3e3)}),this.drawChart(),t("#uptime-re-check-status").on("click",function(t){t.preventDefault(),location.reload()})},drawChart:function(){var e=new google.visualization.DataTable;e.addColumn("datetime","Day"),e.addColumn("number","Response Time (ms)");for(var n=JSON.parse(this.chartData),r=0;r<n.length;r++)n[r][0]=new Date(n[r][0]),n[r][1]=Math.round(n[r][1]),0==Math.round(n[r][1])&&(n[r][1]=-100);e.addRows(n);var i={chartArea:{left:80,top:20,width:"90%",height:"90%"},colors:["#24ADE5"],curveType:"function",legend:{position:"none"},vAxis:{format:"#,### ms",viewWindow:{min:0}},tooltip:{isHtml:!0},series:{0:{axis:"Resp"}},axes:{y:{Resp:{label:"Response Time (ms)"}}}},o=new google.visualization.LineChart(document.getElementById("uptime-chart"));o.draw(e,i),t(window).resize(function(){o.draw(e,i)})}}}(jQuery)},function(t,e,n){"use strict";n(25),n(27),n(24),n(20),n(26),n(23),n(22),n(28),n(21),n(19)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t,e,n){var r=t,i=e.toLowerCase(),o=!1,s=!1,c=!0,a=r.find(".toggle-include"),u=r.find(".toggle-combine"),l=r.find(".toggle-minify"),f=r.find(".toggle-position-footer"),p=r.find(".toggle-cross > i");return n&&(o=n.toLowerCase()),{hide:function(){r.addClass("out-of-filter"),c=!1},show:function(){r.removeClass("out-of-filter"),c=!0},getElement:function(){return r},getId:function(){return r.attr("id")},getFilter:function(){return i},matchFilter:function(t){return""===t||(t=t.toLowerCase(),i.search(t)>-1)},matchSecondaryFilter:function(t){return""===t||!!o&&(t=t.toLowerCase(),o===t)},isVisible:function(){return c},isSelected:function(){return s},select:function(){s=!0},unSelect:function(){s=!1},change:function(t,e){switch(t){case"minify":l.prop("checked",e);break;case"combine":u.prop("checked",e);break;case"include":p.removeClass(),a.prop("checked",e),e?(r.removeClass("disabled"),p.addClass("dev-icon dev-icon-cross"),a.attr("checked",!0)):(r.addClass("disabled"),p.addClass("wdv-icon wdv-icon-refresh"),a.removeAttr("checked"));break;case"footer":f.prop("checked",e)}}}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){var t=[],e="",n="";return{push:function(e){"object"===(void 0===e?"undefined":r(e))&&t.push(e)},getItems:function(){return t},getItem:function(e){return!!t[e]&&t[e]},getItemById:function(e,n){var r=!1;for(var i in t)if("wphb-file-"+e+"-"+n===t[i].getId()){r=t[i];break}return r},getVisibleItems:function(){var e=[];for(var n in t)t[n].isVisible()&&e.push(t[n]);return e},getSelectedItems:function(){var e=[];for(var n in t)t[n].isVisible()&&t[n].isSelected()&&e.push(t[n]);return e},addFilter:function(t,r){"secondary"===r?n=t:e=t},applyFilters:function(){for(var r in t)t[r]&&(t[r].matchFilter(e)&&t[r].matchSecondaryFilter(n)?t[r].show():t[r].hide())}}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.__=function(t){return wphb.strings[t]||""},e.getLink=function(t){return wphb.links[t]||""}},function(t,e,n){(function(e,r){/*!
2
  * @overview es6-promise - a tiny implementation of Promises/A+.
3
  * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
4
  * @license Licensed under MIT license
admin/assets/js/admin.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///admin.min.js","webpack:///webpack/bootstrap f3f08962be2e8bf066f2","webpack:///./_src/admin/js/utils/fetcher.js","webpack:///./~/lodash/_baseGetTag.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/isArrayLike.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_assignValue.js","webpack:///./~/lodash/_baseAssignValue.js","webpack:///./~/lodash/_defineProperty.js","webpack:///./~/lodash/_freeGlobal.js","webpack:///./~/lodash/_isIndex.js","webpack:///./~/lodash/_isPrototype.js","webpack:///./~/lodash/eq.js","webpack:///./~/lodash/identity.js","webpack:///./~/lodash/isFunction.js","webpack:///./~/lodash/isLength.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./_src/admin/js/admin-app.js","webpack:///./_src/admin/js/admin-caching.js","webpack:///./_src/admin/js/admin-cloudflare.js","webpack:///./_src/admin/js/admin-dashboard-cloudflare.js","webpack:///./_src/admin/js/admin-dashboard.js","webpack:///./_src/admin/js/admin-gzip.js","webpack:///./_src/admin/js/admin-main.js","webpack:///./_src/admin/js/admin-minification.js","webpack:///./_src/admin/js/admin-performance.js","webpack:///./_src/admin/js/admin-uptime.js","webpack:///./_src/admin/js/index.js","webpack:///./_src/admin/js/minification/Row.js","webpack:///./_src/admin/js/minification/RowsCollection.js","webpack:///./_src/admin/js/utils/helpers.js","webpack:///./~/es6-promise/dist/es6-promise.js","webpack:///./~/lodash/_apply.js","webpack:///./~/lodash/_arrayLikeKeys.js","webpack:///./~/lodash/_baseIsArguments.js","webpack:///./~/lodash/_baseIsNative.js","webpack:///./~/lodash/_baseIsTypedArray.js","webpack:///./~/lodash/_baseKeys.js","webpack:///./~/lodash/_baseRest.js","webpack:///./~/lodash/_baseSetToString.js","webpack:///./~/lodash/_baseTimes.js","webpack:///./~/lodash/_baseUnary.js","webpack:///./~/lodash/_copyObject.js","webpack:///./~/lodash/_coreJsData.js","webpack:///./~/lodash/_createAssigner.js","webpack:///./~/lodash/_getNative.js","webpack:///./~/lodash/_getRawTag.js","webpack:///./~/lodash/_getValue.js","webpack:///./~/lodash/_isIterateeCall.js","webpack:///./~/lodash/_isMasked.js","webpack:///./~/lodash/_nativeKeys.js","webpack:///./~/lodash/_nodeUtil.js","webpack:///./~/lodash/_objectToString.js","webpack:///./~/lodash/_overArg.js","webpack:///./~/lodash/_overRest.js","webpack:///./~/lodash/_setToString.js","webpack:///./~/lodash/_shortOut.js","webpack:///./~/lodash/_toSource.js","webpack:///./~/lodash/assign.js","webpack:///./~/lodash/constant.js","webpack:///./~/lodash/isArguments.js","webpack:///./~/lodash/isArray.js","webpack:///./~/lodash/isBuffer.js","webpack:///./~/lodash/isTypedArray.js","webpack:///./~/lodash/keys.js","webpack:///./~/lodash/stubFalse.js","webpack:///./~/process/browser.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","Fetcher","request","action","data","arguments","length","undefined","method","nonce","fetchNonce","args","url","fetchUrl","Promise","resolve","reject","jQuery","ajax","done","fail","then","response","checkStatus","ajaxurl","wphb","nonces","HBFetchNonce","methods","caching","setExpiration","type","actionPrefix","setServer","reloadSnippets","cloudflare","connect","step","formData","cfData","purgeCache","dashboard","toggleMinification","skipSetup","minification","toggleCDN","startCheck","progress","checkStep","cancelScan","performance","runTest","addRecipient","email","actionPrefixPro","saveReportsSettings","_assign2","default","this","_typeof","JSON","parse","success","error","Error","message","Symbol","iterator","obj","constructor","_assign","HBFetcher","baseGetTag","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","toStringTag","freeGlobal","freeSelf","self","root","Function","isArrayLike","isLength","isFunction","isObject","isObjectLike","assignValue","key","objValue","eq","baseAssignValue","objectProto","writable","getNative","func","e","global","isIndex","MAX_SAFE_INTEGER","reIsUint","test","isPrototype","Ctor","other","identity","tag","funcTag","genTag","asyncTag","proxyTag","g","eval","window","webpackPolyfill","deprecate","paths","children","document","ready","WPHB_Admin","init","_fetcher","_fetcher2","$","selectedServer","$serverSelector","$serverInstructions","$expirySelectors","$snippets","cachingMetabox","cachingContent","find","cachingContentSpinner","cachingFooter","wphbCachingStrings","strings","val","apache","first","nginx","each","change","hide","fadeIn","element","showServerInstructions","hideCurrentInstructions","click","preventDefault","slideToggle","selected","server","show","text","code","updatedFile","location","href","recheckURL","cacheEnabled","htaccessErrorURL","$cfSelector","$spinner","is","connected","setExpiry","selector","displaySpinner","reload","css","DashboardCloudFlare","settings","currentStep","apiKey","$stepsContainer","$infoBox","$deactivateButton","renderStep","on","apply","target","bind","$button","attr","showSpinner","$notice","scrollTo","slideDown","setTimeout","slideUp","removeAttr","hideSpinner","template","content","html","submitStep","bindEvents","$howToInstructions","toggle","WDP","wpmuSelect","removeClass","addClass","emptyInfoBox","showInfoBox","$form","serialize","newData","nextStep","redirect","catch","_","memoize","id","compiled","options","evaluate","interpolate","escape","variable","templateSettings","wphbDashboardStrings","CDNcheckbox","prop","showNotice","notice","startQuickSetup","showOverlay","class","runPerformanceTest","getModule","performanceTest","finishedTestURLsLink","gzip","updatePerformanceGraph","$wrap","$item","parseInt","$circle","r","pct","Math","PI","strokeDashoffset","updatePerformanceResultsGraphs","register_events_performance","initModule","utils","membershipModal","open","trigger","post","notices","parent","_interopRequireDefault","_helpers","_Row","_Row2","_RowsCollection","_RowsCollection2","$checkFilesButton","$checkFilesResultsContainer","checkURLSList","checkedURLS","$disableMinification","checkFiles","getLink","confirm","__","cdn_value","timer","clearTimeout","rowsCollection","RowsCollection","index","row","_row","Row","push","keyup","addFilter","applyFilters","what","visibleItems","getVisibleItems","$this","getItemById","select","unSelect","items","getItems","checkbox","getElement","checkboxes","checkedState","checked","innerWidth","minification_resize_rows","debounce","addEventListener","_this","minificationStarted","sessionStorage","getItem","round","finished","clear","updateProgressBar","show_cdn","setItem","steps","cancel","width","_this2","iteration","body","wphbPerformanceStrings","$runTestButton","performanceReportTable","off","getParentPerformanceItem","closest","getNextAdditionalContentRow","nextUntil","toggleClass","hasClass","hash","remove","user_row","img","src","avatar","append","data-id","user_id","alt","removeButtonText","stringify","appendTo","alert","form_data","that","showUpdateMessage","uptime","$dataRangeSelector","chartData","wphbUptimeStrings","$disableUptime","disableUptimeURL","drawChart","google","visualization","DataTable","addColumn","chart_array","Date","addRows","chartArea","left","top","height","colors","curveType","legend","position","vAxis","format","viewWindow","min","tooltip","isHtml","series","0","axis","axes","y","Resp","label","chart","LineChart","getElementById","draw","resize","_element","_filter","_filter_sec","$el","filter","toLowerCase","filterSecondary","visible","$include","$combine","$minify","$posFooter","$disableIcon","getId","getFilter","matchFilter","search","matchSecondaryFilter","isVisible","isSelected","currentFilter","currentSecondaryFilter","getSelectedItems","str","screen","links","process","factory","objectOrFunction","x","setScheduler","scheduleFn","customSchedulerFn","setAsap","asapFn","asap","useVertxTimer","vertxNext","flush","useSetTimeout","globalSetTimeout","len","callback","queue","onFulfillment","onRejection","_arguments","child","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","Constructor","promise","selfFulfillment","TypeError","cannotReturnOwn","getThen","GET_THEN_ERROR","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","_label","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","PENDING","_subscribers","subscribers","settled","detail","ErrorObject","tryCatch","TRY_CATCH_ERROR","hasCallback","succeeded","failed","initializePromise","resolver","nextId","Enumerator$1","input","_instanceConstructor","isArray","_remaining","Array","_enumerate","validationError","all$1","entries","race$1","reject$1","needsResolver","needsNew","Promise$2","polyfill$1","local","P","promiseToString","toString","cast","_isArray","arg","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","Uint8ClampedArray","importScripts","MessageChannel","nextTick","iterations","observer","node","createTextNode","observe","characterData","channel","port1","onmessage","port2","postMessage","vertx","runOnLoop","runOnContext","random","substring","_eachEntry","entry","resolve$$1","_then","_settledAt","_willSettleAt","state","enumerator","all","race","_setScheduler","_setAsap","_asap","polyfill","thisArg","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","result","baseTimes","String","baseIsArguments","argsTag","baseIsNative","isMasked","reIsNative","reIsHostCtor","toSource","reRegExpChar","funcProto","funcToString","RegExp","replace","baseIsTypedArray","typedArrayTags","baseKeys","nativeKeys","baseRest","start","setToString","overRest","constant","baseSetToString","string","iteratee","baseUnary","copyObject","source","props","customizer","isNew","newValue","coreJsData","createAssigner","assigner","sources","guard","isIterateeCall","getValue","isOwn","unmasked","nativeObjectToString","maskSrcKey","uid","exec","keys","IE_PROTO","overArg","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","binding","transform","nativeMax","array","otherArgs","max","shortOut","count","lastCalled","stamp","nativeNow","remaining","HOT_SPAN","HOT_COUNT","now","assign","propertyIsEnumerable","stubFalse","Buffer","nativeIsBuffer","nodeIsTypedArray","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","concat","queueIndex","drainQueue","timeout","run","Item","title","browser","env","argv","version","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","cwd","chdir","dir","umask"],"mappings":"CAAS,SAAUA,GCInB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QAvBA,GAAAD,KA4BAF,GAAAQ,EAAAT,EAGAC,EAAAS,EAAAP,EAGAF,EAAAK,EAAA,SAAAK,GAA2C,MAAAA,IAG3CV,EAAAW,EAAA,SAAAR,EAAAS,EAAAC,GACAb,EAAAc,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAb,EAAAoB,EAAA,SAAAhB,GACA,GAAAS,GAAAT,KAAAiB,WACA,WAA2B,MAAAjB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAAW,EAAAE,EAAA,IAAAA,GACAA,GAIAb,EAAAc,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAlB,KAAAe,EAAAC,IAGtDvB,EAAA0B,EAAA,GAGA1B,IAAA2B,EAAA,MDMM,SAAUvB,EAAQD,EAASH,GAEjC,YEtEA,SAAS4B,KAML,QAASC,GAASC,GAAoC,GAA5BC,GAA4BC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,MAAjBG,EAAiBH,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAR,KAC1CD,GAAKK,MAASC,EACdN,EAAKD,OAASA,CACd,IAAIQ,IAASP,OAAMI,SAGnB,OAFAG,GAAKC,IAAMC,EAEJ,IAAIC,EADGzC,EAAQ,IAAeyC,SACjB,SAAEC,EAASC,GAC3BC,OAAOC,KAAMP,GAAOQ,KAAMJ,GAAUK,KAAMJ,KAEzCK,KAAM,SAAEC,GAAF,MAAgBC,GAAaD,KAd5C,GAAMT,GAAkBW,QAClBd,EAAkBe,KAAKC,OAAOC,aAiB9BC,GAIFC,SAOIC,cAAe,SAAEC,EAAMhD,GAEnB,MAAOmB,GADQ8B,+BACWD,OAAMhD,SAAS,SAQ7CkD,UAAW,SAAElD,GAET,MAAOmB,GADQ8B,gCACWjD,SAAS,SAQvCmD,eAAgB,SAAEH,GAEd,MAAO7B,GADQ8B,+BACWD,QAAQ,QAC7BV,KAAM,SAAEC,GACL,MAAOA,OAQvBa,YAQLC,QAAS,SAAEC,EAAMC,EAAUC,GAEd,MAAOrC,GADJ8B,2BACuBK,OAAMC,WAAUC,UAAU,QAC/ClB,KAAM,SAAEC,GACL,MAAOA,MASnBQ,cAAe,SAAE/C,GAEb,MAAOmB,GADQ8B,8BACWjD,SAAS,SAMhDyD,WAAY,WAEC,MAAOtC,GADQ8B,iCACa,UAOpCS,WAMIC,mBAAoB,SAAE3D,GAElB,MAAOmB,GADQ8B,yCACWjD,SAAS,SAMhD4D,UAAW,WAEE,MAAOzC,GADQ8B,0BACa,UAOpCY,cAMIC,UAAW,SAAE9D,GAET,MAAOmB,GADQ8B,gCACWjD,SAAS,SAQvC2D,mBAAoB,SAAE3D,GAElB,MAAOmB,GADQ8B,yCACWjD,SAAS,SAQvC+D,WAAY,SAAEC,GAEV,MAAO7C,GADQ8B,iCACWe,YAAY,QACjC1B,KAAM,SAAEC,GACL,MAAOA,MAUnB0B,UAAW,SAAED,EAAUV,GAEnB,MAAOnC,GADQ8B,gCACWe,WAAUV,QAAQ,QACvChB,KAAM,SAAEC,GACL,MAAOA,MAO5B2B,WAAY,WAEX,MAAO/C,GADQ8B,mCACa,UAOxBkB,aAILC,QAAS,WAEI,MAAOjD,GADQ8B,+BACa,QACvBX,KAAM,SAAEC,GACN,MAAOA,MAUlB8B,aAAc,SAAEC,EAAOpE,GAEnB,MAAOiB,GADQoD,sCACWD,QAAOpE,QAAQ,QACpCoC,KAAM,SAAEC,GACL,MAAOA,MAUnBiC,oBAAqB,SAAEnD,GAEnB,MAAOF,GADQoD,8CACWlD,QAAQ,YAK9C,EAAAoD,EAAAC,SAAQC,KAAM9B,GAMlB,QAASL,GAAaD,GAIlB,GAHyB,gBAApB,KAAOA,EAAP,YAAAqC,EAAOrC,MACRA,EAAWsC,KAAKC,MAAOvC,IAEtBA,EAASwC,QACV,MAAOxC,GAASlB,IAGpB,IAAIA,GAAOkB,EAASlB,SACd2D,EAAQ,GAAIC,OAAO5D,EAAK6D,SAAW,6CAEzC,MADAF,GAAMzC,SAAWA,EACXyC,EFtKV3E,OAAOC,eAAeb,EAAS,cAC3BO,OAAO,GAGX,IAAI4E,GAA4B,kBAAXO,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOrE,UAAY,eAAkBuE,IE/EtQE,EAAAjG,EAAA,IFmFImF,EAEJ,SAAgCY,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,IAFjDE,GEgJhCC,EAAY,GAAItE,EFkFtBzB,GAAQiF,QEjFOc,GFoGT,SAAU9F,EAAQD,EAASH,GGtTjC,QAAAmG,GAAAzF,GACA,aAAAA,MACAwB,KAAAxB,EAAA0F,EAAAC,EAEAC,OAAAvF,QAAAL,GACA6F,EAAA7F,GACA8F,EAAA9F,GAxBA,GAAAmF,GAAA7F,EAAA,GACAuG,EAAAvG,EAAA,IACAwG,EAAAxG,EAAA,IAGAqG,EAAA,gBACAD,EAAA,qBAGAE,EAAAT,IAAAY,gBAAAvE,EAkBA9B,GAAAD,QAAAgG,GH+UM,SAAU/F,EAAQD,EAASH,GI1WjC,GAAA0G,GAAA1G,EAAA,IAGA2G,EAAA,gBAAAC,kBAAA7F,iBAAA6F,KAGAC,EAAAH,GAAAC,GAAAG,SAAA,gBAEA1G,GAAAD,QAAA0G,GJiXM,SAAUzG,EAAQD,EAASH,GK7VjC,QAAA+G,GAAArG,GACA,aAAAA,GAAAsG,EAAAtG,EAAAuB,UAAAgF,EAAAvG,GA7BA,GAAAuG,GAAAjH,EAAA,IACAgH,EAAAhH,EAAA,GA+BAI,GAAAD,QAAA4G,GLgYM,SAAU3G,EAAQD,GMvYxB,QAAA+G,GAAAxG,GACA,GAAAgD,SAAAhD,EACA,cAAAA,IAAA,UAAAgD,GAAA,YAAAA,GAGAtD,EAAAD,QAAA+G,GNuaM,SAAU9G,EAAQD,GO7axB,QAAAgH,GAAAzG,GACA,aAAAA,GAAA,gBAAAA,GAGAN,EAAAD,QAAAgH,GP4cM,SAAU/G,EAAQD,EAASH,GQxejC,GAAA6G,GAAA7G,EAAA,GAGA6F,EAAAgB,EAAAhB,MAEAzF,GAAAD,QAAA0F,GR+eM,SAAUzF,EAAQD,EAASH,GSjejC,QAAAoH,GAAA9F,EAAA+F,EAAA3G,GACA,GAAA4G,GAAAhG,EAAA+F,EACA5F,GAAAlB,KAAAe,EAAA+F,IAAAE,EAAAD,EAAA5G,SACAwB,KAAAxB,GAAA2G,IAAA/F,KACAkG,EAAAlG,EAAA+F,EAAA3G,GAvBA,GAAA8G,GAAAxH,EAAA,GACAuH,EAAAvH,EAAA,IAGAyH,EAAA1G,OAAAS,UAGAC,EAAAgG,EAAAhG,cAoBArB,GAAAD,QAAAiH,GT2fM,SAAUhH,EAAQD,EAASH,GU3gBjC,QAAAwH,GAAAlG,EAAA+F,EAAA3G,GACA,aAAA2G,GAAArG,EACAA,EAAAM,EAAA+F,GACApG,cAAA,EACAC,YAAA,EACAR,QACAgH,UAAA,IAGApG,EAAA+F,GAAA3G,EApBA,GAAAM,GAAAhB,EAAA,EAwBAI,GAAAD,QAAAqH,GV6hBM,SAAUpH,EAAQD,EAASH,GWrjBjC,GAAA2H,GAAA3H,EAAA,IAEAgB,EAAA,WACA,IACA,GAAA4G,GAAAD,EAAA5G,OAAA,iBAEA,OADA6G,MAAW,OACXA,EACG,MAAAC,OAGHzH,GAAAD,QAAAa,GX4jBM,SAAUZ,EAAQD,EAASH,IYtkBjC,SAAA8H,GACA,GAAApB,GAAA,gBAAAoB,SAAA/G,iBAAA+G,CAEA1H,GAAAD,QAAAuG,IZ0kB6BnG,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,GankBxB,QAAA4H,GAAArH,EAAAuB,GAEA,SADAA,EAAA,MAAAA,EAAA+F,EAAA/F,KAEA,gBAAAvB,IAAAuH,EAAAC,KAAAxH,KACAA,GAAA,GAAAA,EAAA,MAAAA,EAAAuB,EAjBA,GAAA+F,GAAA,iBAGAC,EAAA,kBAiBA7H,GAAAD,QAAA4H,GbwlBM,SAAU3H,EAAQD,GcnmBxB,QAAAgI,GAAAzH,GACA,GAAA0H,GAAA1H,KAAAsF,WAGA,OAAAtF,MAFA,kBAAA0H,MAAA5G,WAAAiG,GAXA,GAAAA,GAAA1G,OAAAS,SAgBApB,GAAAD,QAAAgI,GdonBM,SAAU/H,EAAQD,GermBxB,QAAAoH,GAAA7G,EAAA2H,GACA,MAAA3H,KAAA2H,GAAA3H,OAAA2H,MAGAjI,EAAAD,QAAAoH,Gf4oBM,SAAUnH,EAAQD,GgBhqBxB,QAAAmI,GAAA5H,GACA,MAAAA,GAGAN,EAAAD,QAAAmI,GhBurBM,SAAUlI,EAAQD,EAASH,GiBjrBjC,QAAAiH,GAAAvG,GACA,IAAAwG,EAAAxG,GACA,QAIA,IAAA6H,GAAApC,EAAAzF,EACA,OAAA6H,IAAAC,GAAAD,GAAAE,GAAAF,GAAAG,GAAAH,GAAAI,EAjCA,GAAAxC,GAAAnG,EAAA,GACAkH,EAAAlH,EAAA,GAGA0I,EAAA,yBACAF,EAAA,oBACAC,EAAA,6BACAE,EAAA,gBA6BAvI,GAAAD,QAAA8G,GjBktBM,SAAU7G,EAAQD,GkBztBxB,QAAA6G,GAAAtG,GACA,sBAAAA,IACAA,GAAA,GAAAA,EAAA,MAAAA,GAAAsH,EA9BA,GAAAA,GAAA,gBAiCA5H,GAAAD,QAAA6G,GlB6vBM,SAAU5G,EAAQD,GmB/xBxB,GAAAyI,EAGAA,GAAA,WACA,MAAAvD,QAGA,KAEAuD,KAAA9B,SAAA,qBAAA+B,MAAA,QACC,MAAAhB,GAED,gBAAAiB,UACAF,EAAAE,QAOA1I,EAAAD,QAAAyI,GnBsyBM,SAAUxI,EAAQD,GoB1zBxBC,EAAAD,QAAA,SAAAC,GAoBA,MAnBAA,GAAA2I,kBACA3I,EAAA4I,UAAA,aACA5I,EAAA6I,SAEA7I,EAAA8I,WAAA9I,EAAA8I,aACAnI,OAAAC,eAAAZ,EAAA,UACAc,YAAA,EACAC,IAAA,WACA,MAAAf,GAAAE,KAGAS,OAAAC,eAAAZ,EAAA,MACAc,YAAA,EACAC,IAAA,WACA,MAAAf,GAAAC,KAGAD,EAAA2I,gBAAA,GAEA3I,IpBk0BM,SAAUA,EAAQD,EAASH,GAEjC,YqBx1BA4C,QAAOuG,UAAUC,MAAO,WACpBC,WAAWC,UrBg2BT,SAAUlJ,EAAQD,EAASH,GAEjC,YsBn2BA,IAAAuJ,GAAAvJ,EAAA,GtBw2BIwJ,EAEJ,SAAgCzD,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,IAFhDwD,IsBt2BrC,SAAUE,GAERJ,WAAW7F,SAEPpD,OAAQ,UACRsJ,eAAgB,GAChBC,gBAAiB,KACjBC,uBACAC,oBACAC,aAEAR,KAAM,WACF,GAAI1C,GAA0BvB,KAC1B0E,EAA0BN,EAAE,4BAC5BO,EAA0BD,EAAeE,KAAK,gBAC9CC,EAA0BF,EAAeC,KAAK,YAC9CE,EAA0BJ,EAAeE,KAAK,cAkElD,OAhEKG,sBACDxD,EAAKyD,QAAUD,oBAEnB/E,KAAKsE,gBAAkBF,EAAG,qBAC1BpE,KAAKqE,eAAiBrE,KAAKsE,gBAAgBW,MAG3C1D,EAAKkD,UAAUS,OAASd,EAAE,6BAA6BQ,KAAK,OAAOO,QACnE5D,EAAKkD,UAAUW,MAAQhB,EAAE,4BAA4BQ,KAAK,OAAOO,QAE1Cf,EAAG,6BACTiB,KAAM,WACnB9D,EAAKgD,oBAAqBH,EAAEpE,MAAMtD,KAAK,WAAc0H,EAAEpE,QAGrCoE,EAAG,uBAETiB,KAAM,WAClB,GAAMhH,GAAO+F,EAAEpE,MAAMtD,KAAK,OACrB2B,IACD+F,EAAEpE,MAAMsF,OAAQ,WAEZX,EAAeC,KAAK,iBAAiBW,OACrCT,EAAcS,OACdV,EAAsBW,SACtBpB,EAAE,gBAAgBmB,OAGlB,SAAYE,GACR,GAAMpK,GAAQ+I,EAAGqB,GAAUR,KAE3Bd,GAAApE,QAAQ5B,QAAQC,cAAeC,EAAMhD,GAChCsC,KAAM,WAEH4D,EAAK/C,oBAGbwB,UAMhBA,KAAK0F,uBAAwB1F,KAAKqE,gBAElCrE,KAAKsE,gBAAgBgB,OAAQ,WACzB,GAAIjK,GAAQ+I,EAAEpE,MAAMiF,KACpB1D,GAAKoE,0BACLpE,EAAKmE,uBAAwBrK,GAC7BkG,EAAKhD,UAAUlD,GACfkG,EAAK8C,eAAiBhJ,IAG1B+I,EAAG,+BAA+BwB,MAAO,SAAUpD,GAC/CA,EAAEqD,iBACFzB,EAAE,wBAAwB0B,gBAG9B1B,EAAG,kCAAkCwB,MAAO,SAAUpD,GAClDA,EAAEqD,iBACFzB,EAAE,2BAA2B0B,gBAI1B9F,MAGXzB,UAAW,SAAUlD,GACjB8I,EAAApE,QAAQ5B,QAAQI,UAAWlD,IAG/BsK,wBAAyB,WACrB,GAAII,GAAW/F,KAAKqE,cACfrE,MAAKuE,oBAAqBwB,IAC3B/F,KAAKuE,oBAAqBwB,GAAWR,QAI7CG,uBAAwB,SAAUM,OACqB,KAAvChG,KAAKuE,oBAAqByB,IAClChG,KAAKuE,oBAAqByB,GAASC,OAGlC,WAAaD,GAAU,cAAgBA,EACxC5B,EAAG,sBAAsB6B,OAGzB7B,EAAG,sBAAsBmB,QAIjC/G,eAAgB,WACZ,GAAI+C,GAAOvB,IAEX,KAAM,GAAIhF,KAAKuG,GAAKkD,UACXlD,EAAKkD,UAAUrI,eAAgBpB,IAChCmJ,EAAApE,QAAQ5B,QAAQK,eAAgBxD,GAC3B2C,KAAM,SAAEC,GAKL2D,EAAKkD,UAAU7G,EAASS,MAAM6H,KAAMtI,EAASuI,MAGxCvI,EAASS,OAASkD,EAAK8C,iBAIvB,WAAazG,EAASS,MAAQT,EAASwI,aACxChC,EAAG,8CAA+C6B,OAClDI,SAASC,KAAO/E,EAAKyD,QAAQuB,WAAa,yBAClC,WAAa3I,EAASS,MAAQkD,EAAKyD,QAAQwB,eAAkB5I,EAASwI,aAC9EhC,EAAG,4CAA6C6B,OAChDI,SAASC,KAAO/E,EAAKyD,QAAQyB,mBAE7BrC,EAAG,qCAAsC6B,OACzCI,SAASC,KAAO/E,EAAKyD,QAAQuB,WAAa,+BAQvEhJ,StBy2BG,SAAUxC,EAAQD,EAASH,GAEjC,YuB5/BA,IAAAuJ,GAAAvJ,EAAA,GvBigCIwJ,EAEJ,SAAgCzD,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,IAFhDwD,IuB//BrC,SAAUE,GACRJ,WAAWvF,YACP1D,OAAQ,aACR2L,aAAa,EACbC,UAAU,EAEV1C,KAAM,WACFjE,KAAK2G,SAAWvC,EAAE,iBAClBpE,KAAK0G,YAActC,EAAE,8CACrB,IAAI7C,GAAOvB,IAOX,OANKjC,MAAKU,WAAWmI,GAAGC,WACpB7G,KAAK0G,YAAYpB,OAAQ,WACrB/D,EAAKuF,UAAU5L,KAAMqG,GAAOvB,SAI7BA,MAGX8G,UAAW,SAAUC,GACjB/G,KAAKgH,gBACL,IAAM3L,GAAQ+I,EAAE2C,GAAU9B,KAC1Bd,GAAApE,QAAQtB,WAAWL,cAAe/C,GAC7BsC,KAAM,WACH8F,OAAO4C,SAASY,YAI5BD,eAAgB,WACZhH,KAAK2G,SAASO,IAAK,aAAc,cAG1C3J,SvBsgCG,SAAUxC,EAAQD,EAASH,GAEjC,YwB1iCA,IAAAuJ,GAAAvJ,EAAA,GxB+iCIwJ,EAEJ,SAAgCzD,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,IAFhDwD,IwB7iCrC,SAAUE,GACRJ,WAAWmD,qBACPlD,KAAM,SAAUmD,GACZpH,KAAKqH,YAAcD,EAASC,YAC5BrH,KAAKtD,KAAO0K,EACZpH,KAAKL,MAAQyH,EAASzH,MACtBK,KAAKsH,OAASF,EAASE,OACvBtH,KAAKuH,gBAAkBnD,EAAE,qBACzBpE,KAAKwH,SAAWpD,EAAE,oBAClBpE,KAAK2G,SAAWvC,EAAG,uBACnBpE,KAAKyH,kBAAoBrD,EAAE,kCAAkCQ,KAAK,uBAElE5E,KAAK0H,WAAY1H,KAAKqH,aAEtBjD,EAAE,QAAQuD,GAAI,QAAS,kCAAmC,SAASnF,GAC/DA,EAAEqD,iBACF7F,KAAKlB,WAAW8I,MAAOxD,EAAE5B,EAAEqF,SAAU7H,QACvC8H,KAAK9H,QAIXlB,WAAY,SAAUyC,GAE3B,GAAMwG,GAAU/H,IAChB+H,GAAQC,KAAM,YAAY,GAC1BzG,EAAK0G,cAEI9D,EAAApE,QAAQtB,WAAWK,aACdnB,KAAM,WAElB,GAAMuK,GAAU9D,EAAE,sCAClBX,QAAO0E,SAAS,EAAG,GACnBD,EAAQE,YACRC,WAAW,WACVH,EAAQI,WACN,KAEHP,EAAQQ,WAAY,YACpBhH,EAAKiH,iBAIFd,WAAY,SAAU/I,GAClB,GAAM8J,GAAWzE,WAAWmD,oBAAoBsB,SAAU,oBAAsB9J,GAC1E+J,EAAUD,EAAUzI,KAAKtD,MACzB6E,EAAOvB,IAER0I,KACD1I,KAAKqH,YAAc1I,EACnBqB,KAAKuH,gBACAhC,OACAoD,KAAMF,EAAUzI,KAAKtD,OACrB8I,SACAZ,KAAM,QACN+C,GAAI,SAAU,SAAUnF,GACrBA,EAAEqD,iBACFtE,EAAKqH,WAAW1N,KAAMqG,EAAM6C,EAAEpE,SAGtCA,KAAK2G,SAAW3G,KAAKuH,gBAAgB3C,KAAM,wBAG/C5E,KAAK6I,cAGTA,WAAY,WACR,GAAMC,GAAqB1E,EAAE,qBAE7B0E,GAAmBvD,OAEnBnB,EAAE,gCAAgCwB,MAAO,SAAUpD,GAC/CA,EAAEqD,iBACFiD,EAAmBC,WAGvB/I,KAAKuH,gBAAgB3C,KAAM,UAAWS,KAAM,WACpD5B,OAAOuF,IAAIC,WAAYjJ,QAGV,UAAYA,KAAKqH,YAClBrH,KAAKyH,kBAAkByB,YAAa,UAEpClJ,KAAKyH,kBAAkB0B,SAAU,WAIzCC,aAAc,WACVpJ,KAAKwH,SAASmB,KAAK,IACnB3I,KAAKwH,SAAS0B,eAGlBG,YAAa,SAAU9I,GACnBP,KAAKwH,SAAS2B,SAAU,eACxBnJ,KAAKwH,SAAS2B,SAAU,qBACxBnJ,KAAKwH,SAAStB,KAAM3F,IAGxB0H,YAAa,WACTjI,KAAK2G,SAASO,IAAK,aAAc,YAGrCsB,YAAa,WACTxI,KAAK2G,SAASO,IAAK,aAAc,WAGrC0B,WAAY,SAAUU,GAC3B,GAAM/H,GAAOvB,IAEbsJ,GAAM1E,KAAM,sBAAuBoD,KAAM,WAAY,QACrDhI,KAAKoJ,eACLpJ,KAAKiI,cAEL9D,EAAApE,QAAQtB,WAAWC,QAASsB,KAAKqH,YAAaiC,EAAMC,YAAavJ,KAAKtD,MACxDiB,KAAM,SAAEC,GACpB2D,EAAK7E,KAAOkB,EAAS4L,QACrBjI,EAAKmG,WAAY9J,EAAS6L,UAEC,UAAtB7L,EAAS6L,WACbhG,OAAO4C,SAASC,KAAO1I,EAAS8L,YAGjCC,MAAO,SAAEtJ,GACTkB,EAAK8H,YAAahJ,KAGpBiJ,EAAM1E,KAAM,sBAAuB2D,WAAY,YAC/ChH,EAAKiH,gBAIJxE,WAAWmD,oBAAoBsB,SAAWmB,EAAEC,QAAQ,SAAWC,GAC3D,GAAIC,UACAC,GACIC,SAAa,kBACbC,YAAa,0BACbC,OAAa,2BACbC,SAAa,OAGrB,OAAO,UAAW1N,GAGd,MAFAkN,GAAES,iBAAmBL,GACrBD,EAAWA,GAAYH,EAAEnB,SAAUrE,EAAG0F,GAAKnB,SAC1BjM,OAG3Ba,SxB4iCI,SAAUxC,EAAQD,EAASH,GAEjC,YyBjsCA,IAAAuJ,GAAAvJ,EAAA,GzBssCIwJ,EAEJ,SAAgCzD,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,IAFhDwD,IyBpsCrC,SAAUE,GACRJ,WAAWjF,WACPhE,OAAQ,YAERkJ,KAAM,WACF,GAAM1C,GAAOvB,IAmCb,OAjCLsK,wBACHtK,KAAKgF,QAAUsF,sBAEPlG,EAAE,+BAA+BkB,OAAQ,WACrC,GAAMjK,GAAQ+I,EAAEpE,MAAMiF,KACtBd,GAAApE,QAAQhB,UAAUC,mBAAoB3D,GACjCsC,KAAM,WAEH,GAAM4M,GAAcnG,EAAE,wBACjB,WAAY/I,GACbkP,EAAYC,KAAM,WAAW,GAC7BD,EAAYC,KAAM,YAAY,IAE9BD,EAAYC,KAAM,YAAY,GAElCjJ,EAAKkJ,iBAIjBrG,EAAE,YAAYkB,OAAQ,WAClB,GAAMjK,GAAQ+I,EAAEpE,MAAM4G,GAAG,WACzBzC,GAAApE,QAAQb,aAAaC,UAAW9D,GAC3BsC,KAAM,WACH4D,EAAKkJ,iBAIjBrG,EAAE,iCAAiCwB,MAAO,WACtC,GAAM1I,GAAMkH,EAAEpE,MAAMtD,KAAM,kBACrBQ,KACDmJ,SAASC,KAAOpJ,KAGjB8C,MAMXyK,WAAY,WACR,GAAMC,GAAStG,EAAE,6CACjBsG,GAAOtC,YACPC,WAAY,WACRqC,EAAOpC,WACR,MAMbqC,gBAAiB,WAEhBlH,OAAOuF,IAAI4B,YAAa,2BAA6BC,MAAO,sDAM7D5L,UAAW,WACDkF,EAAApE,QAAQhB,UAAUE,YACbtB,KAAM,WACH8F,OAAO4C,SAASY,QAAO,MAOzC6D,mBAAoB,WAEnBrH,OAAOuF,IAAI4B,YAAY,+BAAiCC,MAAO,kDAGhD7G,WAAW+G,UAAU,eAC7BC,gBAAiBhL,KAAKgF,QAAQiG,yBAGrC1N,SzBwsCG,SAAUxC,EAAQD,EAASH,GAEjC,Y0BhyCA,IAAAuJ,GAAAvJ,EAAA,G1BqyCIwJ,EAEJ,SAAgCzD,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,IAFhDwD,I0BnyCvC,SAAUE,GACNJ,WAAWkH,MACPnQ,OAAQ,OACRsJ,eAAgB,GAChBC,gBAAiB,KACjBC,uBAEAN,KAAM,WACF,GAAM1C,GAAOvB,IAwBb,OAtBAA,MAAKsE,gBAAkBF,EAAE,qBACzBpE,KAAKqE,eAAiBrE,KAAKsE,gBAAgBW,MACpBb,EAAE,6BACRiB,KAAK,WAClB9D,EAAKgD,oBAAoBH,EAAEpE,MAAMtD,KAAK,WAAa0H,EAAEpE,QAEzDA,KAAK0F,uBAAuB1F,KAAKqE,gBACjCrE,KAAKsE,gBAAgBgB,OAAO,WACxB,GAAMjK,GAAQ+I,EAAEpE,MAAMiF,KACtB1D,GAAKoE,0BACLpE,EAAKmE,uBAAuBrK,GAC5BkG,EAAKhD,UAAUlD,GACfkG,EAAK8C,eAAiBhJ,IAE1B+I,EAAE,+BAA+BwB,MAAM,SAASpD,GAC5CA,EAAEqD,iBACFzB,EAAE,wBAAwB2E,WAE9B3E,EAAE,kCAAkCwB,MAAM,SAASpD,GAC/CA,EAAEqD,iBACFzB,EAAE,2BAA2B2E,WAE1B/I,MAGX2F,wBAAyB,WACrB,GAAMI,GAAW/F,KAAKqE,cAClBrE,MAAKuE,oBAAoBwB,IACzB/F,KAAKuE,oBAAoBwB,GAAUR,QAI3CG,uBAAwB,SAASM,OACmB,KAArChG,KAAKuE,oBAAoByB,IAChChG,KAAKuE,oBAAoByB,GAAQC,OAEjC,WAAaD,GAAU,cAAgBA,EACvC5B,EAAE,sBAAsB6B,OAExB7B,EAAE,sBAAsBmB,QAIhChH,UAAW,SAAUlD,GACjB8I,EAAApE,QAAQ5B,QAAQI,UAAWlD,MAGpCkC,S1B2yCG,SAAUxC,EAAQD,EAASH,GAEjC,c2Bx2CE,SAAUyJ,GAGR,GAAIJ,IACAtJ,WAEAuJ,KAAM,WASF,QAASkH,GAAuBC,GAC5B,GAAIC,GAAQD,EAAMxG,KAAK,4BACnBK,EAAMqG,SAASD,EAAMnF,OAAQ,KAAO,IACpCqF,EAAUH,EAAMxG,KAAK,4BACrB4G,SAAGpQ,SAAGqQ,QAEVD,GAAID,EAAQvD,KAAK,KACjB5M,EAAIsQ,KAAKC,IAAM,EAAFH,GAETvG,EAAM,IAAKA,EAAM,GACjBA,EAAM,MAAOA,EAAM,KAEvBwG,GAAQ,IAAIxG,GAAK,IAAK7J,EAEtBmQ,EAAQrE,KAAM0E,iBAAkBH,IAGpC,QAASI,KAGLzH,EAAE,0CAA0CiB,KAAK,WAC7C8F,EAAuB/G,EAAEpE,SAI7BoE,EAAE,0CAA0CiB,KAAK,WAC7C8F,EAAuB/G,EAAEpE,SAI7BoE,EAAE,uCAAuCiB,KAAK,WAC1C8F,EAAuB/G,EAAEpE,SAtC1CoE,EAAE,QAAQuD,GAAG,SAAU,cAAe,WACrC,GAAIzK,GAAMkH,EAAEpE,MAAMiF,KACd/H,GAAIN,OAAS,IAChByJ,SAASC,KAAOpJ,KAuCTuG,OAAOqI,4BAA8B,WACjCzD,WAAWwD,EAAgC,MAE/CzH,EAAE,WAAYiE,WAAWwD,EAAgC,QAG7DE,WAAY,SAAUhR,GAClB,MAAKiF,MAAK5D,eAAgBrB,IACtBiF,KAAKtF,QAASK,GAAWiF,KAAMjF,GAASkJ,OACjCjE,KAAKtF,QAASK,QAK7BgQ,UAAW,SAAUhQ,GACjB,WAAuC,KAA3BiF,KAAKtF,QAASK,GACfiF,KAAKtF,QAASK,GAEdiF,KAAK+L,WAAYhR,IAKpCiJ,GAAWgI,OAEPC,iBACIC,KAAM,WACF9H,EAAG,uCAAuC+H,QAAS,WAI3DC,KAAM,SAAU1P,EAAM3B,GAGlB,MAFA2B,GAAKD,OAAS,YACdC,EAAK3B,OAASA,EACPqJ,EAAE5G,MACLN,IAAKY,QACLhB,OAAQ,OACRJ,KAAMA,MAKlBsH,EAAWqI,SAEPpI,KAAM,WACFG,EAAG,4CAA4CwB,MAAO,SAAUpD,GAC5DA,EAAEqD,gBACOzB,GAAEpE,MAAMtD,KAAM,MACX0H,EAAEpE,MAAMtD,KAAM,QAE1B0H,GAAEpE,MAAMsM,OAAQ,UAAW/G,WAKvC9B,OAAOO,WAAaA,GAErBzG,S3B+2CG,SAAUxC,EAAQD,EAASH,GAEjC,YAiBA,SAAS4R,GAAuB7L,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,G4B7+CvF,GAAAwD,GAAAvJ,EAAA,G5Bi+CIwJ,EAAYoI,EAAuBrI,G4Bh+CvCsI,EAAA7R,EAAA,IACA8R,EAAA9R,EAAA,I5Bq+CI+R,EAAQH,EAAuBE,G4Bp+CnCE,EAAAhS,EAAA,I5Bw+CIiS,EAAmBL,EAAuBI,I4Bt+C5C,SAAUvI,GAGRJ,WAAW9E,cAEP2N,kBAAmB,KACnBC,4BAA8B,KAC9B/R,OAAQ,eACRgS,cAAe,KACfC,YAAa,EACbrG,SAAU,KAEV1C,KAAM,WACF,GAAM1C,GAAOvB,IAGboE,GAAE,oCAAoCuD,GAAG,QAAS,SAASnF,GACvDA,EAAEqD,iBACFzB,EAAE,6BAA6B2E,OAAO,UAI1C/I,KAAK6M,kBAAoBzI,EAAG,gBAC5BpE,KAAKiN,qBAAuB7I,EAAE,8BAC9BpE,KAAK2G,SAAWvC,EAAE,YAEbpE,KAAK6M,kBAAkBjQ,QACxBoD,KAAK6M,kBAAkBjH,MAAO,SAAUpD,GACpCA,EAAEqD,iBACjBpC,OAAOuF,IAAI4B,YAAY,sBAAwBC,MAAO,kDACvCzG,EAAEpE,MAAMgI,KAAK,YAAY,GACzBzG,EAAK2L,YAAY,EAAAV,EAAAW,SAAS,mBAIlC/I,EAAE,iBAAiBwB,MAAO,SAASpD,GAM/B,MALAA,GAAEqD,iBAEGuH,SAAS,EAAAZ,EAAAa,IAAI,kBACdhH,SAASY,UAEN,IAIX7C,EAAG,8BAA+BuD,GAAI,SAAU,WAC5CvD,EAAE,iBAAiB4D,KAAM,YAAY,KAGzC5D,EAAE,YAAYkB,OAAQ,WAClB,GAAMgI,GAAYlJ,EAAEpE,MAAM4G,GAAG,WAC7BzC,GAAApE,QAAQb,aAAaC,UAAWmO,GAC3B3P,KAAM,WACH,GAAM+M,GAAStG,EAAE,sDACjBsG,GAAOtC,YACPC,WAAY,WACRqC,EAAOpC,WACR,SAIftI,KAAKiN,qBAAqB3H,OAAQ,WAC9B,GAAMjK,GAAQ+I,EAAEpE,MAAM4G,GAAG,WAEzBrF,GAAKoF,SAASO,IAAK,aAAc,WAE5B3F,EAAKgM,OAASlS,IACfmS,aAAcjM,EAAKgM,OACnBhM,EAAKoF,SAASO,IAAK,aAAc,WAGrC3F,EAAKgM,MAAQlF,WAAY,WACrBlE,EAAApE,QAAQb,aAAaF,mBAAoB3D,GACpCsC,KAAM,WACH0I,SAASY,YAElB,OAKPjH,KAAKyN,eAAiB,GAAIzJ,YAAW9E,aAAawO,eAErCtJ,EAAE,oBAEViB,KAAM,SAAUsI,EAAOC,GACxB,GAAIC,SAEAA,GADCzJ,EAAEwJ,GAAKlR,KAAK,oBACN,GAAIsH,YAAW9E,aAAa4O,IAAK1J,EAAEwJ,GAAMxJ,EAAEwJ,GAAKlR,KAAK,UAAW0H,EAAEwJ,GAAKlR,KAAK,qBAG5E,GAAIsH,YAAW9E,aAAa4O,IAAK1J,EAAEwJ,GAAMxJ,EAAEwJ,GAAKlR,KAAK,WAEhE6E,EAAKkM,eAAeM,KAAMF,KAG9BzJ,EAAE,WAAW4J,MAAO,WAChBzM,EAAKkM,eAAeQ,UAAW7J,EAAEpE,MAAMiF,MAAO,WAC9C1D,EAAKkM,eAAeS,iBAGxB9J,EAAE,0BAA0BkB,OAAQ,WAChC/D,EAAKkM,eAAeQ,UAAW7J,EAAEpE,MAAMiF,MAAO,aAC9C1D,EAAKkM,eAAeS,iBAGxB9J,EAAE,mBAAmBkB,OAAQ,WACzB,GAAMG,GAAUrB,EAAEpE,MACZmO,EAAO1I,EAAQ/I,KAAK,WACpBrB,EAAQoK,EAAQ+E,KAAM,WACtB4D,EAAe7M,EAAKkM,eAAeY,iBAEzC,KAAM,GAAIrT,KAAKoT,GACXA,EAAapT,GAAGsK,OAAQ6I,EAAM9S,KAKpB+I,EAAE,yCACVwB,MAAO,WACb,GAAM0I,GAAQlK,EAAGpE,MACXyF,EAAUlE,EAAKkM,eAAec,YAAaD,EAAM5R,KAAM,QAAU4R,EAAM5R,KAAM,UAC5E+I,KAIF6I,EAAM1H,GAAI,YACXnB,EAAQ+I,SAGR/I,EAAQgJ,cAIErK,EAAE,2BACVwB,MAAO,WACb,GAAM0I,GAAQlK,EAAGpE,MACb0O,EAAQnN,EAAKkM,eAAekB,UAChC,KAAM,GAAI3T,KAAK0T,GACNA,EAAMtS,eAAgBpB,KAClBsT,EAAM1H,GAAI,YACX8H,EAAM1T,GAAGwT,SAGTE,EAAM1T,GAAGyT,cAOzBrK,EAAE,iBAAiBuD,GAAG,QAAS,WAC3B,GAAM2G,GAAQlK,EAAEpE,MACV4O,EAAWN,EAAM1J,KAAM,wBACvBgJ,EAAMrM,EAAKkM,eAAec,YAAaD,EAAM5R,KAAM,QAAU4R,EAAM5R,KAAM,UAE1EkR,KACDA,EAAItI,OAAQ,WAAasJ,EAASpE,KAAM,YACxCoD,EAAIiB,aAAajK,KAAM,8BAA+B4F,KAAK,YAAcoE,EAASpE,KAAM,cAKhG,IAAMsE,GAAa1K,EAAE,qCACrB0K,GAAWxJ,OAAQ,WACf,GAAMyJ,GAAe3K,EAAEpE,MAAMwK,KAAK,UAElCsE,GAAWzJ,KAAM,WACbrF,KAAKgP,QAAUD,MAKvB3K,EAAE,QAAQuD,GAAG,QAAS,kCAAmC,WAChDlE,OAAOwL,WAAa,KACrB7K,EAAEpE,MAAMsM,SAAS1H,KAAK,kCAAkCmE,OAAO,SAQvE,IAAImG,GAA2BtF,EAAEuF,SAAS,WAEjC1L,OAAOwL,YAAc,IACtB7K,EAAE,kCAAkC8C,IAAI,UAAW,QAEnD9C,EAAE,kCAAkC8C,IAAI,UAAW,SAGxD,IAIH,OAFAzD,QAAO2L,iBAAiB,SAAUF,GAE3BlP,MAGXkN,WAAY,SAAUxD,GAAW,GAAA2F,GAAArP,KACvBuB,EAAOvB,IAKb,QAHyB,KAAb0J,IACRA,GAAW,GAERnI,EAAK+N,oBAuBP,CACD,GAAMjQ,GAAWkQ,eAAeC,QAAQ,YAClC7Q,EAAO+M,KAAK+D,MAAO,GAAKF,eAAeC,QAAQ,SACrDrL,GAAApE,QAAQb,aAAaI,UAAWD,EAAUV,GACrChB,KAAM,SAAEC,GACL,OAAkC,KAAtBA,EAAS8R,UAEjB,GAAK9R,EAAS8R,UAAYhG,EAEtB6F,eAAeI,QAGfN,EAAKO,kBAAmB,MAGnB,IAAShS,EAASiS,UAAYzL,EAAE,qBAAqBxH,OACtDoM,IAAI4B,YAAa,qBAAuBC,MAAO,kDAE/CpH,OAAO4C,SAASC,KAAOoD,MAI1B,KAAO9L,EAAS8R,SAAW,CAE5B,GAAIrQ,GAAWiM,SAAUiE,eAAeC,QAAQ,aAAgB9D,KAAK+D,MAAO,GAAKF,eAAeC,QAAQ,SACxGD,gBAAeO,QAAS,WAAYzQ,GAGpCgQ,EAAKO,kBAAmBvQ,GAGxBoE,OAAO4E,WAAY,WACf9G,EAAK2L,WAAYxD,IAClB,UAIPjG,QAAO4C,SAASC,KAAOoD,QA5DL,CAGc,OAAvC6F,eAAeC,QAAQ,aACxBD,eAAeO,QAAQ,WAAY,GAIvC,IAAMzQ,GAAWkQ,eAAeC,QAAQ,WACxCxP,MAAK4P,kBAAmBvQ,GAGxB8E,EAAApE,QAAQb,aAAaE,WAAYC,GAC5B1B,KAAM,SAAEC,OAE4B,KAAnBA,EAASmS,OAAiE,OAApCR,eAAeC,QAAQ,UACvED,eAAeO,QAAQ,QAASlS,EAASmS,OAG7CxO,EAAK+N,qBAAsB,EAC3B/N,EAAK2L,WAAYxD,OA+CjCkG,kBAAmB,SAAUvQ,GAA2B,GAAjB2Q,GAAiBrT,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,EAC/C0C,GAAW,MACZA,EAAW,KAGf+E,EAAE,qDAAqD8B,KAAM7G,EAAW,KACnEA,GAAY,IACb+E,EAAE,kDAAkD8B,KAAK,iBAExD8J,GACb5L,EAAE,kDAAkD8B,KAAK,iBAEjD9B,EAAE,oDAAoD6L,MAAO5Q,EAAW,MAG5EE,WAAY,WAAW,GAAA2Q,GAAAlQ,IACnBmE,GAAApE,QAAQb,aAAaK,aAChB5B,KAAM,WAElB4R,eAAeI,QAEfO,EAAKN,kBAAmB,GAAG,GAGZnM,OAAO4C,SAASC,MAAO,EAAAkG,EAAAW,SAAS,oBAMhDnJ,WAAW9E,aAAa4O,IAAxBpB,EAAA3M,QACAiE,WAAW9E,aAAawO,eAAxBd,EAAA7M,SAEDxC,S5Bo+CG,SAAUxC,EAAQD,EAASH,GAEjC,Y6B3xDA,IAAAuJ,GAAAvJ,EAAA,G7BgyDIwJ,EAEJ,SAAgCzD,GAAO,MAAOA,IAAOA,EAAI1E,WAAa0E,GAAQX,QAASW,IAFhDwD,I6B9xDrC,SAAUE,GAERJ,WAAWxE,aAEPzE,OAAQ,cACRoV,UAAW,EACX9Q,SAAU,EAEV4E,KAAM,WAEF,GAAI1C,GAAOvB,KACPoQ,EAAOhM,EAAE,OAETiM,0BACArQ,KAAKgF,QAAUqL,wBAEnBrQ,KAAKsQ,eAAiBlM,EAAE,wBAExB,IAAImM,GAAyBnM,EAAE,4BAE/BmM,GAAuBC,IAAI,QAAS,UACpCD,EAAuB5I,GAAG,QAA2E,kCAAmC,SAAUnF,GAC9IA,EAAEqD,gBAEF,IAAI4K,GAA2BrM,EAAEpE,MAAM0Q,QAAQ,iCAC3CC,EAA8BF,EAAyBG,UAAU,gCAErED,GAA4BE,YAAY,0DAEpCF,EAA4BG,SAAS,0DACrCL,EAAyBtH,SAAS,uCAElCsH,EAAyBvH,YAAY,yCAKzClJ,KAAKsQ,eAAe1T,QACpBoD,KAAKsQ,eAAe1K,MAAM,SAAUpD,GAChCA,EAAEqD,iBACjBpC,OAAOuF,IAAI4B,YAAY,+BAAiCC,MAAO,kDAChDzG,EAAEpE,MAAMgI,KAAK,YAAY,GACzBzG,EAAKyJ,gBAAgBzJ,EAAKyD,QAAQiG,uBAK1C,IAAM8F,GAAOtN,OAAO4C,SAAS0K,IAC7B,IAAIA,EAAM,CACN,GAAMnD,GAAMxJ,EAAE2M,EACVnD,GAAIhR,QACJgR,EAAIhJ,KAAK,+BAA+BuH,QAAQ,SAgFxD,MA1EA/H,GAAE,kCAAkCkB,OAAO,WAClC,MAAQlB,EAAEpE,MAAMiF,MACjBb,EAAEpE,MAAM0Q,QAAQ,iBAAiB9L,KAAK,sBAAsBW,OAE5DnB,EAAEpE,MAAM0Q,QAAQ,iBAAiB9L,KAAK,sBAAsBqB,SAEjEX,SAGH8K,EAAKzI,GAAG,QAAS,yBAA0B,SAAUnF,GACjDA,EAAEqD,iBACFzB,EAAEpE,MAAM0Q,QAAQ,cAAcM,SAC9B5M,EAAE,kBAAkBQ,KAAK,oCAAsCR,EAAEpE,MAAMgI,KAAK,WAAa,KAAKgJ,WAIlG5M,EAAE,gBAAgBwB,MAAM,WACpB,GAAMjG,GAAQyE,EAAE,yBAAyBa,MACnC1J,EAAO6I,EAAE,oBAAoBa,KAqCnC,OApCAd,GAAApE,QAAQP,YAAYE,aAAcC,EAAOpE,GACpCoC,KAAM,SAAEC,GACL,GAAMqT,GAAW7M,EAAE,4BAEb8M,EAAM9M,EAAE,UAAU4D,MACpBmJ,IAAOvT,EAASwT,OAChBnB,MAAS,OAEP1U,EAAO6I,EAAE,WAAWuE,KAAK/K,EAASrC,KAExC0V,GAASI,OAAO,wBAChBJ,EAASrM,KAAK,SAASyM,OAAQH,EAAK3V,GAGpC0V,EAASI,OAAOjN,EAAE,yBAAyBuE,KAAKhJ,IAChDsR,EAASI,OAAOjN,EAAE,QAAQ4D,MACtBsJ,UAAW1T,EAAS2T,QACpB1G,MAAS,uCACTvE,KAAQ,IACRkL,IAAOjQ,EAAKyD,QAAQyM,mBACrB9I,KAAK,4CAERvE,EAAE,WAAW4D,MACT3J,KAAM,SACNyL,GAAI,iBACJvO,KAAM,qBACNF,MAAO6E,KAAKwR,WAAa/R,MAAO/B,EAAS+B,MAAOpE,KAAMqC,EAASrC,SAChEoW,SAASV,GAEZ7M,EAAE,wBAAwBiN,OAAOJ,GACjC7M,EAAE,yBAAyBa,IAAI,IAC/Bb,EAAE,oBAAoBa,IAAI,MAE7B0E,MAAO,SAAEtJ,GACNuR,MAAOvR,EAAME,YAEd,IAIX6P,EAAKzI,GAAG,SAAU,YAAa,SAAUnF,GACrCA,EAAEqD,gBACF,IAAMgM,GAAYzN,EAAEpE,MAAMuJ,YACtBuI,EAAO1N,EAAEpE,KASb,OAPA8R,GAAKlN,KAAK,WAAWoD,KAAK,WAAY,YAEtC7D,EAAApE,QAAQP,YAAYK,oBAAqBgS,GACpClU,KAAM,WACHmU,EAAKlN,KAAK,WAAW2D,WAAW,YAChChH,EAAKwQ,uBAEN,IAGJ/R,MAIX+R,kBAAmB,WACf,GAAMrH,GAAStG,EAAE,mDACjBX,QAAO0E,SAAS,EAAE,GAClBuC,EAAOtC,YACPC,WAAY,WACRqC,EAAOpC,WACR,MAGb0C,gBAAiB,SAAWtB,GAC3B,GAAMnI,GAAOvB,SAEqB,KAAb0J,IACRA,GAAW,GAGfnI,EAAKqO,oBAELzL,EAAApE,QAAQP,YAAYC,UACf9B,KAAM,SAAEC,GACbA,EAAS8R,SAKJhG,IACOjG,OAAO4C,SAAWqD,GAJpCjG,OAAO4E,WAAW,WACjB9G,EAAKyJ,gBAAiBtB,IACpB,QAODkG,kBAAmB,WACnB5P,KAAKX,SAAW,KACpBW,KAAKX,UAAY,IAEbW,KAAKX,SAAW,MACpBW,KAAKX,SAAW,IAEjB+E,EAAE,qDAAqD8B,KAAMlG,KAAKX,SAAW,KAC7E+E,EAAE,oDAAoD4D,KAAM,QAAS,SAAWhI,KAAKX,SAAW,QAGhG9B,S7B6xDG,SAAUxC,EAAQD,EAASH,GAEjC,c8Bl9DE,SAAUyJ,GACRJ,WAAWgO,QACPjX,OAAQ,SACRkX,mBAAoB,KACpBC,UAAW,KACX3E,MAAM,KACN5G,SAAU,KACV1C,KAAM,WACFjE,KAAK2G,SAAWvC,EAAE,YAClBpE,KAAKgF,QAAUmN,kBACfnS,KAAKiS,mBAAqB7N,EAAG,2BAC7BpE,KAAKkS,UAAY9N,EAAE,sBAAsBa,MACzCjF,KAAKoS,eAAiBhO,EAAE,wBAExBpE,KAAKiS,mBAAmB3M,OAAQ,WAC5B7B,OAAO4C,SAASC,KAAOlC,EAAEpE,MAAM4E,KAAM,aAAclI,KAAM,QAG7D,IAAI6E,GAAOvB,IACXA,MAAKoS,eAAe9M,OAAQ,WACxB/D,EAAKoF,SAASO,IAAK,aAAc,WACrB9C,EAAEpE,MAAM4G,GAAG,aACTrF,EAAKgM,OACfC,aAAcjM,EAAKgM,OACnBhM,EAAKoF,SAASO,IAAK,aAAc,WAIjC3F,EAAKgM,MAAQlF,WAAY,WACrBhC,SAASC,KAAO/E,EAAKyD,QAAQqN,kBAC9B,OAMXrS,KAAKsS,YAGLlO,EAAE,2BAA2BuD,GAAI,QAAS,SAASnF,GAC/CA,EAAEqD,iBACFQ,SAASY,YAIjBqL,UAAW,WACP,GAAI5V,GAAO,GAAI6V,QAAOC,cAAcC,SACpC/V,GAAKgW,UAAU,WAAY,OAC3BhW,EAAKgW,UAAU,SAAU,qBAGzB,KAAK,GADDC,GAAczS,KAAKC,MAAOH,KAAKkS,WAC1BlX,EAAI,EAAGA,EAAI2X,EAAY/V,OAAQ5B,IACpC2X,EAAY3X,GAAG,GAAK,GAAI4X,MAAMD,EAAY3X,GAAG,IAC7C2X,EAAY3X,GAAG,GAAK0Q,KAAK+D,MAAOkD,EAAY3X,GAAG,IAGP,GAAnC0Q,KAAK+D,MAAOkD,EAAY3X,GAAG,MAC5B2X,EAAY3X,GAAG,IAAM,IAK7B0B,GAAKmW,QAAQF,EAEb,IAAI3I,IACA8I,WACIC,KAAM,GACNC,IAAK,GACL/C,MAAO,MACPgD,OAAQ,OAEZC,QAAS,WACTC,UAAW,WAEXC,QAAUC,SAAU,QACpBC,OACIC,OAAQ,WACRC,YAAcC,IAAK,IAEvBC,SAAWC,QAAQ,GACnBC,QACIC,GAAKC,KAAM,SAEfC,MACIC,GACIC,MAAQC,MAAO,yBAKvBC,EAAQ,GAAI5B,QAAOC,cAAc4B,UAAUtQ,SAASuQ,eAAe,gBACvEF,GAAMG,KAAK5X,EAAMsN,GAEjB5F,EAAEX,QAAQ8Q,OAAO,WACbJ,EAAMG,KAAK5X,EAAMsN,QAI/BzM,S9Bu9DI,SAAUxC,EAAQD,EAASH,GAEjC,Y+B3jEAA,GAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,K/BkkEF,SAAUI,EAAQD,EAASH,GAEjC,YAGAe,QAAOC,eAAeb,EAAS,cAC3BO,OAAO,GgCjlEX,IAAMyS,GAAM,SAAE0G,EAAUC,EAASC,GAC7B,GAAIC,GAAMH,EACNI,EAASH,EAAQI,cACjBC,GAAkB,EAClB/O,GAAW,EACXgP,GAAU,EAERC,EAAWL,EAAI/P,KAAM,mBACvBqQ,EAAWN,EAAI/P,KAAM,mBACrBsQ,EAAUP,EAAI/P,KAAM,kBACpBuQ,EAAaR,EAAI/P,KAAM,2BACvBwQ,EAAeT,EAAI/P,KAAM,oBAM7B,OAJK8P,KACDI,EAAkBJ,EAAYG,gBAI9BtP,KAAM,WACFoP,EAAIxL,SAAU,iBACd4L,GAAU,GAGd9O,KAAM,WACF0O,EAAIzL,YAAa,iBACjB6L,GAAU,GAGdlG,WAAY,WACR,MAAO8F,IAGXU,MAAO,WACH,MAAOV,GAAI3M,KAAM,OAGrBsN,UAAW,WACP,MAAOV,IAGXW,YAAa,SAAUrP,GACnB,MAAc,KAATA,IAILA,EAAOA,EAAK2O,cACLD,EAAOY,OAAQtP,IAAW,IAGrCuP,qBAAsB,SAAUvP,GAC5B,MAAc,KAATA,KAIE4O,IAIP5O,EAAOA,EAAK2O,cACLC,IAAoB5O,IAG/BwP,UAAW,WACP,MAAOX,IAGXY,WAAY,WACR,MAAO5P,IAGXyI,OAAQ,WACJzI,GAAW,GAGf0I,SAAU,WACN1I,GAAW,GAGfT,OAAQ,SAAU6I,EAAM9S,GACpB,OAAS8S,GACL,IAAK,SACD+G,EAAQ1K,KAAM,UAAWnP,EACzB,MAEJ,KAAK,UACD4Z,EAASzK,KAAM,UAAWnP,EAC1B,MAEJ,KAAK,UACD+Z,EAAalM,cACb8L,EAASxK,KAAM,UAAWnP,GACrBA,GACDsZ,EAAIzL,YAAa,YACjBkM,EAAajM,SAAU,2BACvB6L,EAAShN,KAAM,WAAW,KAE1B2M,EAAIxL,SAAU,YACdiM,EAAajM,SAAU,6BACvB6L,EAASzM,WAAY,WAEzB,MAEJ,KAAK,SACD4M,EAAW3K,KAAM,UAAWnP,MhCgmEhDP,GAAQiF,QgCvlEO+N,GhC2lET,SAAU/S,EAAQD,EAASH,GAEjC,YAGAe,QAAOC,eAAeb,EAAS,cAC3BO,OAAO,GAGX,IAAI4E,GAA4B,kBAAXO,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOrE,UAAY,eAAkBuE,IiCptEhQgN,EAAiB,WACnB,GAAIgB,MACAkH,EAAgB,GAChBC,EAAyB,EAE7B,QACI9H,KAAM,SAAUH,GACQ,gBAAf,KAAOA,EAAP,YAAA3N,EAAO2N,KACRc,EAAMX,KAAMH,IAIpBe,SAAU,WACN,MAAOD,IAGXc,QAAS,SAAUxU,GACf,QAAK0T,EAAM1T,IACA0T,EAAM1T,IAUrBuT,YAAa,SAAUlQ,EAAMyL,GACzB,GAAIzO,IAAQ,CACZ,KAAM,GAAIL,KAAK0T,GACX,GAAK,aAAerQ,EAAO,IAAMyL,IAAO4E,EAAM1T,GAAGqa,QAAU,CACvDha,EAAQqT,EAAM1T,EACd,OAGR,MAAOK,IAGXgT,gBAAiB,WACb,GAAI0G,KACJ,KAAM,GAAI/Z,KAAK0T,GACNA,EAAM1T,GAAG0a,aACVX,EAAQhH,KAAMW,EAAM1T,GAG5B,OAAO+Z,IAGXe,iBAAkB,WACd,GAAI/P,KAEJ,KAAM,GAAI/K,KAAK0T,GACNA,EAAM1T,GAAG0a,aAAehH,EAAM1T,GAAG2a,cAClC5P,EAASgI,KAAMW,EAAM1T,GAI7B,OAAO+K,IAGXkI,UAAW,SAAU2G,EAAQvW,GACX,cAATA,EACDwX,EAAyBjB,EAGzBgB,EAAgBhB,GAIxB1G,aAAc,WACV,IAAM,GAAIlT,KAAK0T,GACNA,EAAM1T,KACF0T,EAAM1T,GAAGua,YAAaK,IAAmBlH,EAAM1T,GAAGya,qBAAsBI,GACzEnH,EAAM1T,GAAGiL,OAGTyI,EAAM1T,GAAGuK,UjC4tEjCzK,GAAQiF,QiCntEO2N,GjCutET,SAAU3S,EAAQD,EAASH,GAEjC,YAGAe,QAAOC,eAAeb,EAAS,cAC7BO,OAAO,GkC5yEIgS,MAAM,SAAE0I,GACjB,MAAOhY,MAAKiH,QAAS+Q,IAAS,IASrB5I,UAAU,SAAE6I,GACrB,MAAOjY,MAAKkY,MAAOD,IAAY,KlC0zE7B,SAAUjb,EAAQD,EAASH,IAEL,SAASub,EAASzT;;;;;;;CmCt0E9C,SAAAA,EAAA0T,GACApb,EAAAD,QAAAqb,KAGCnW,EAAA,WAAqB,YAEtB,SAAAoW,GAAAC,GACA,GAAAhY,SAAAgY,EACA,eAAAA,IAAA,WAAAhY,GAAA,aAAAA,GAGA,QAAAuD,GAAAyU,GACA,wBAAAA,GAkCA,QAAAC,GAAAC,GACAC,EAAAD,EAGA,QAAAE,GAAAC,GACAC,EAAAD,EAqBA,QAAAE,KACA,gBAAAC,EACA,WACAA,EAAAC,IAIAC,IAuBA,QAAAA,KAGA,GAAAC,GAAA3O,UACA,mBACA,MAAA2O,GAAAF,EAAA,IAKA,QAAAA,KACA,OAAA9b,GAAA,EAAiBA,EAAAic,EAASjc,GAAA,IAI1Bkc,EAHAC,EAAAnc,IACAmc,EAAAnc,EAAA,IAIAmc,EAAAnc,OAAA6B,GACAsa,EAAAnc,EAAA,OAAA6B,GAGAoa,EAAA,EA4BA,QAAAtZ,GAAAyZ,EAAAC,GACA,GAAAC,GAAA3a,UAEA2P,EAAAtM,KAEAuX,EAAA,GAAAvX,MAAAW,YAAA6W,OAEA3a,KAAA0a,EAAAE,KACAC,EAAAH,EAGA,IAAAI,GAAArL,EAAAqL,MAaA,OAXAA,GACA,WACA,GAAAT,GAAAI,EAAAK,EAAA,EACAhB,GAAA,WACA,MAAAiB,GAAAD,EAAAJ,EAAAL,EAAA5K,EAAAuL,cAIAC,EAAAxL,EAAAiL,EAAAH,EAAAC,GAGAE,EAkCA,QAAAQ,GAAA9b,GAEA,GAAA+b,GAAAhY,IAEA,IAAA/D,GAAA,gBAAAA,MAAA0E,cAAAqX,EACA,MAAA/b,EAGA,IAAAgc,GAAA,GAAAD,GAAAR,EAEA,OADAna,GAAA4a,EAAAhc,GACAgc,EAKA,QAAAT,MAQA,QAAAU,KACA,UAAAC,WAAA,4CAGA,QAAAC,KACA,UAAAD,WAAA,wDAGA,QAAAE,GAAAJ,GACA,IACA,MAAAA,GAAAta,KACG,MAAA0C,GAEH,MADAiY,IAAAjY,QACAiY,IAIA,QAAAC,GAAAC,EAAAnd,EAAAod,EAAAC,GACA,IACAF,EAAAtd,KAAAG,EAAAod,EAAAC,GACG,MAAAlW,GACH,MAAAA,IAIA,QAAAmW,GAAAV,EAAAW,EAAAJ,GACA7B,EAAA,SAAAsB,GACA,GAAAY,IAAA,EACAxY,EAAAkY,EAAAC,EAAAI,EAAA,SAAAvd,GACAwd,IAGAA,GAAA,EACAD,IAAAvd,EACAgC,EAAA4a,EAAA5c,GAEAyd,EAAAb,EAAA5c,KAEK,SAAA0d,GACLF,IAGAA,GAAA,EAEAvb,EAAA2a,EAAAc,KACK,YAAAd,EAAAe,QAAA,sBAELH,GAAAxY,IACAwY,GAAA,EACAvb,EAAA2a,EAAA5X,KAEG4X,GAGH,QAAAgB,GAAAhB,EAAAW,GACAA,EAAAjB,SAAAuB,GACAJ,EAAAb,EAAAW,EAAAf,SACGe,EAAAjB,SAAAwB,GACH7b,EAAA2a,EAAAW,EAAAf,SAEAC,EAAAc,MAAA/b,GAAA,SAAAxB,GACA,MAAAgC,GAAA4a,EAAA5c,IACK,SAAA0d,GACL,MAAAzb,GAAA2a,EAAAc,KAKA,QAAAK,GAAAnB,EAAAoB,EAAAb,GACAa,EAAA1Y,cAAAsX,EAAAtX,aAAA6X,IAAA7a,GAAA0b,EAAA1Y,YAAAtD,UAAA0a,EACAkB,EAAAhB,EAAAoB,GAEAb,IAAAF,IACAhb,EAAA2a,EAAAK,GAAAjY,OACAiY,GAAAjY,MAAA,UACKxD,KAAA2b,EACLM,EAAAb,EAAAoB,GACKzX,EAAA4W,GACLG,EAAAV,EAAAoB,EAAAb,GAEAM,EAAAb,EAAAoB,GAKA,QAAAhc,GAAA4a,EAAA5c,GACA4c,IAAA5c,EACAiC,EAAA2a,EAAAC,KACG9B,EAAA/a,GACH+d,EAAAnB,EAAA5c,EAAAgd,EAAAhd,IAEAyd,EAAAb,EAAA5c,GAIA,QAAAie,GAAArB,GACAA,EAAAsB,UACAtB,EAAAsB,SAAAtB,EAAAJ,SAGA2B,EAAAvB,GAGA,QAAAa,GAAAb,EAAA5c,GACA4c,EAAAN,SAAA8B,KAIAxB,EAAAJ,QAAAxc,EACA4c,EAAAN,OAAAuB,GAEA,IAAAjB,EAAAyB,aAAA9c,QACA+Z,EAAA6C,EAAAvB,IAIA,QAAA3a,GAAA2a,EAAAc,GACAd,EAAAN,SAAA8B,KAGAxB,EAAAN,OAAAwB,GACAlB,EAAAJ,QAAAkB,EAEApC,EAAA2C,EAAArB,IAGA,QAAAH,GAAAxL,EAAAiL,EAAAH,EAAAC,GACA,GAAAqC,GAAApN,EAAAoN,aACA9c,EAAA8c,EAAA9c,MAEA0P,GAAAiN,SAAA,KAEAG,EAAA9c,GAAA2a,EACAmC,EAAA9c,EAAAsc,IAAA9B,EACAsC,EAAA9c,EAAAuc,IAAA9B,EAEA,IAAAza,GAAA0P,EAAAqL,QACAhB,EAAA6C,EAAAlN,GAIA,QAAAkN,GAAAvB,GACA,GAAA0B,GAAA1B,EAAAyB,aACAE,EAAA3B,EAAAN,MAEA,QAAAgC,EAAA/c,OAAA,CAQA,OAJA2a,OAAA1a,GACAqa,MAAAra,GACAgd,EAAA5B,EAAAJ,QAEA7c,EAAA,EAAiBA,EAAA2e,EAAA/c,OAAwB5B,GAAA,EACzCuc,EAAAoC,EAAA3e,GACAkc,EAAAyC,EAAA3e,EAAA4e,GAEArC,EACAK,EAAAgC,EAAArC,EAAAL,EAAA2C,GAEA3C,EAAA2C,EAIA5B,GAAAyB,aAAA9c,OAAA,GAGA,QAAAkd,KACA9Z,KAAAK,MAAA,KAKA,QAAA0Z,GAAA7C,EAAA2C,GACA,IACA,MAAA3C,GAAA2C,GACG,MAAArX,GAEH,MADAwX,IAAA3Z,MAAAmC,EACAwX,IAIA,QAAApC,GAAAgC,EAAA3B,EAAAf,EAAA2C,GACA,GAAAI,GAAArY,EAAAsV,GACA7b,MAAAwB,GACAwD,MAAAxD,GACAqd,MAAArd,GACAsd,MAAAtd,EAEA,IAAAod,GAWA,GAVA5e,EAAA0e,EAAA7C,EAAA2C,GAEAxe,IAAA2e,IACAG,GAAA,EACA9Z,EAAAhF,EAAAgF,MACAhF,EAAAgF,MAAA,MAEA6Z,GAAA,EAGAjC,IAAA5c,EAEA,WADAiC,GAAA2a,EAAAG,SAIA/c,GAAAwe,EACAK,GAAA,CAGAjC,GAAAN,SAAA8B,KAEGQ,GAAAC,EACH7c,EAAA4a,EAAA5c,GACK8e,EACL7c,EAAA2a,EAAA5X,GACKuZ,IAAAV,GACLJ,EAAAb,EAAA5c,GACKue,IAAAT,IACL7b,EAAA2a,EAAA5c,IAIA,QAAA+e,GAAAnC,EAAAoC,GACA,IACAA,EAAA,SAAAhf,GACAgC,EAAA4a,EAAA5c,IACK,SAAA0d,GACLzb,EAAA2a,EAAAc,KAEG,MAAAvW,GACHlF,EAAA2a,EAAAzV,IAKA,QAAA8X,KACA,MAAAxQ,MAGA,QAAA4N,GAAAO,GACAA,EAAAR,IAAA3N,KACAmO,EAAAN,WAAA9a,GACAob,EAAAJ,YAAAhb,GACAob,EAAAyB,gBAGA,QAAAa,GAAAvC,EAAAwC,GACAxa,KAAAya,qBAAAzC,EACAhY,KAAAiY,QAAA,GAAAD,GAAAR,GAEAxX,KAAAiY,QAAAR,KACAC,EAAA1X,KAAAiY,SAGAyC,EAAAF,IACAxa,KAAApD,OAAA4d,EAAA5d,OACAoD,KAAA2a,WAAAH,EAAA5d,OAEAoD,KAAA6X,QAAA,GAAA+C,OAAA5a,KAAApD,QAEA,IAAAoD,KAAApD,OACAkc,EAAA9Y,KAAAiY,QAAAjY,KAAA6X,UAEA7X,KAAApD,OAAAoD,KAAApD,QAAA,EACAoD,KAAA6a,WAAAL,GACA,IAAAxa,KAAA2a,YACA7B,EAAA9Y,KAAAiY,QAAAjY,KAAA6X,WAIAva,EAAA0C,KAAAiY,QAAA6C,KAIA,QAAAA,KACA,UAAAxa,OAAA,2CA8GA,QAAAya,GAAAC,GACA,UAAAT,GAAAva,KAAAgb,GAAA/C,QAoEA,QAAAgD,GAAAD,GAEA,GAAAhD,GAAAhY,IAEA,OAKA,IAAAgY,GALA0C,EAAAM,GAKA,SAAA3d,EAAAC,GAEA,OADAV,GAAAoe,EAAApe,OACA5B,EAAA,EAAqBA,EAAA4B,EAAY5B,IACjCgd,EAAA3a,QAAA2d,EAAAhgB,IAAA2C,KAAAN,EAAAC,IAPA,SAAAsM,EAAAtM,GACA,MAAAA,GAAA,GAAA6a,WAAA,sCA8CA,QAAA+C,GAAAnC,GAEA,GAAAf,GAAAhY,KACAiY,EAAA,GAAAD,GAAAR,EAEA,OADAla,GAAA2a,EAAAc,GACAd,EAGA,QAAAkD,KACA,SAAAhD,WAAA,sFAGA,QAAAiD,KACA,SAAAjD,WAAA,yHA0GA,QAAAkD,GAAAhB,GACAra,KAAAyX,IAAA6C,IACAta,KAAA6X,QAAA7X,KAAA2X,WAAA9a,GACAmD,KAAA0Z,gBAEAlC,IAAA6C,IACA,kBAAAA,IAAAc,IACAnb,eAAAqb,GAAAjB,EAAApa,KAAAqa,GAAAe,KAmPA,QAAAE,KACA,GAAAC,OAAA1e,EAEA,aAAA4F,EACA8Y,EAAA9Y,MACK,uBAAAlB,MACLga,EAAAha,SAEA,KACAga,EAAA9Z,SAAA,iBACS,MAAAe,GACT,SAAAlC,OAAA,4EAIA,GAAAkb,GAAAD,EAAAne,OAEA,IAAAoe,EAAA,CACA,GAAAC,GAAA,IACA,KACAA,EAAA/f,OAAAS,UAAAuf,SAAAxgB,KAAAsgB,EAAAne,WACS,MAAAmF,IAIT,wBAAAiZ,IAAAD,EAAAG,KACA,OAIAJ,EAAAne,QAAAie,EAlmCA,GAAAO,OAAA/e,EAEA+e,GADAhB,MAAAF,QACAE,MAAAF,QAEA,SAAArE,GACA,yBAAA3a,OAAAS,UAAAuf,SAAAxgB,KAAAmb,GAIA,IAAAqE,GAAAkB,EAEA3E,EAAA,EACAJ,MAAAha,GACA2Z,MAAA3Z,GAEA8Z,EAAA,SAAAO,EAAA2E,GACA1E,EAAAF,GAAAC,EACAC,EAAAF,EAAA,GAAA4E,EAEA,KADA5E,GAAA,KAKAT,EACAA,EAAAM,GAEAgF,MAaAC,EAAA,mBAAAtY,mBAAA5G,GACAmf,EAAAD,MACAE,EAAAD,EAAAE,kBAAAF,EAAAG,uBACAC,EAAA,mBAAA7a,WAAA,KAAA2U,GAAiF,wBAAAwF,SAAAxgB,KAAAgb,GAGjFmG,EAAA,mBAAAC,oBAAA,mBAAAC,gBAAA,mBAAAC,gBAmDArF,EAAA,GAAAyD,OAAA,KA0BAkB,MAAAjf,EAGAif,GADAM,EA5EA,WAGA,kBACA,MAAAlG,GAAAuG,SAAA3F,OA0ECmF,EA3DD,WACA,GAAAS,GAAA,EACAC,EAAA,GAAAV,GAAAnF,GACA8F,EAAA9Y,SAAA+Y,eAAA,GAGA,OAFAF,GAAAG,QAAAF,GAA0BG,eAAA,IAE1B,WACAH,EAAAlgB,KAAAggB,MAAA,MAsDCL,EAjDD,WACA,GAAAW,GAAA,GAAAR,eAEA,OADAQ,GAAAC,MAAAC,UAAApG,EACA,WACA,MAAAkG,GAAAG,MAAAC,YAAA,WA+CCvgB,KAAAkf,EAnBD,WACA,IACA,GACAsB,GAAA1iB,EAAA,GAEA,OADAkc,GAAAwG,EAAAC,WAAAD,EAAAE,aACA3G,IACG,MAAApU,GACH,MAAAuU,SAeAA,GA0EA,IAAAU,IAAA/L,KAAA8R,SAAA9B,SAAA,IAAA+B,UAAA,IAIAhE,OAAA,GACAP,GAAA,EACAC,GAAA,EAEAb,GAAA,GAAAwB,GA6KAE,GAAA,GAAAF,GA+DAhQ,GAAA,CAsqBA,OA1nBAyQ,GAAApe,UAAA0e,WAAA,SAAAL,GACA,OAAAxf,GAAA,EAAiBgF,KAAA2X,SAAA8B,IAAAze,EAAAwf,EAAA5d,OAA6C5B,IAC9DgF,KAAA0d,WAAAlD,EAAAxf,OAIAuf,EAAApe,UAAAuhB,WAAA,SAAAC,EAAA3iB,GACA,GAAAI,GAAA4E,KAAAya,qBACAmD,EAAAxiB,EAAAiC,OAEA,IAAAugB,IAAA7F,EAAA,CACA,GAAA8F,GAAAxF,EAAAsF,EAEA,IAAAE,IAAAlgB,GAAAggB,EAAAhG,SAAA8B,GACAzZ,KAAA8d,WAAAH,EAAAhG,OAAA3c,EAAA2iB,EAAA9F,aACK,sBAAAgG,GACL7d,KAAA2a,aACA3a,KAAA6X,QAAA7c,GAAA2iB,MACK,IAAAviB,IAAAigB,EAAA,CACL,GAAApD,GAAA,GAAA7c,GAAAoc,EACA4B,GAAAnB,EAAA0F,EAAAE,GACA7d,KAAA+d,cAAA9F,EAAAjd,OAEAgF,MAAA+d,cAAA,GAAA3iB,GAAA,SAAAwiB,GACA,MAAAA,GAAAD,KACO3iB,OAGPgF,MAAA+d,cAAAH,EAAAD,GAAA3iB,IAIAuf,EAAApe,UAAA2hB,WAAA,SAAAE,EAAAhjB,EAAAK,GACA,GAAA4c,GAAAjY,KAAAiY,OAEAA,GAAAN,SAAA8B,KACAzZ,KAAA2a,aAEAqD,IAAA7E,GACA7b,EAAA2a,EAAA5c,GAEA2E,KAAA6X,QAAA7c,GAAAK,GAIA,IAAA2E,KAAA2a,YACA7B,EAAAb,EAAAjY,KAAA6X,UAIA0C,EAAApe,UAAA4hB,cAAA,SAAA9F,EAAAjd,GACA,GAAAijB,GAAAje,IAEA8X,GAAAG,MAAApb,GAAA,SAAAxB,GACA,MAAA4iB,GAAAH,WAAA5E,GAAAle,EAAAK,IACG,SAAA0d,GACH,MAAAkF,GAAAH,WAAA3E,GAAAne,EAAA+d,MA8SAsC,EAAA6C,IAAAnD,EACAM,EAAA8C,KAAAlD,EACAI,EAAAhe,QAAA0a,EACAsD,EAAA/d,OAAA4d,EACAG,EAAA+C,cAAA9H,EACA+E,EAAAgD,SAAA5H,EACA4E,EAAAiD,MAAA3H,EAEA0E,EAAAlf,WACAwE,YAAA0a,EAmMA1d,OA6BAgM,MAAA,SAAA0N,GACA,MAAArX,MAAArC,KAAA,KAAA0Z,KAuCAgE,EAAAkD,SAAAjD,EACAD,EAAAje,QAAAie,EAEAA,MnCo1E6BngB,KAAKJ,EAASH,EAAoB,IAAKA,EAAoB,MAIlF,SAAUI,EAAQD,GoC98GxB,QAAA8M,GAAArF,EAAAic,EAAAvhB,GACA,OAAAA,EAAAL,QACA,aAAA2F,GAAArH,KAAAsjB,EACA,cAAAjc,GAAArH,KAAAsjB,EAAAvhB,EAAA,GACA,cAAAsF,GAAArH,KAAAsjB,EAAAvhB,EAAA,GAAAA,EAAA,GACA,cAAAsF,GAAArH,KAAAsjB,EAAAvhB,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEA,MAAAsF,GAAAqF,MAAA4W,EAAAvhB,GAGAlC,EAAAD,QAAA8M,GpC+9GM,SAAU7M,EAAQD,EAASH,GqC99GjC,QAAA8jB,GAAApjB,EAAAqjB,GACA,GAAAC,GAAAjE,EAAArf,GACAujB,GAAAD,GAAAE,EAAAxjB,GACAyjB,GAAAH,IAAAC,GAAAG,EAAA1jB,GACA2jB,GAAAL,IAAAC,IAAAE,GAAAG,EAAA5jB,GACA6jB,EAAAP,GAAAC,GAAAE,GAAAE,EACAG,EAAAD,EAAAE,EAAA/jB,EAAAuB,OAAAyiB,WACAziB,EAAAuiB,EAAAviB,MAEA,QAAAoF,KAAA3G,IACAqjB,IAAAtiB,EAAAlB,KAAAG,EAAA2G,IACAkd,IAEA,UAAAld,GAEA8c,IAAA,UAAA9c,GAAA,UAAAA,IAEAgd,IAAA,UAAAhd,GAAA,cAAAA,GAAA,cAAAA,IAEAU,EAAAV,EAAApF,KAEAuiB,EAAApR,KAAA/L,EAGA,OAAAmd,GA7CA,GAAAC,GAAAzkB,EAAA,IACAkkB,EAAAlkB,EAAA,IACA+f,EAAA/f,EAAA,IACAokB,EAAApkB,EAAA,IACA+H,EAAA/H,EAAA,IACAskB,EAAAtkB,EAAA,IAGAyH,EAAA1G,OAAAS,UAGAC,EAAAgG,EAAAhG,cAqCArB,GAAAD,QAAA2jB,GrC0/GM,SAAU1jB,EAAQD,EAASH,GsC7hHjC,QAAA2kB,GAAAjkB,GACA,MAAAyG,GAAAzG,IAAAyF,EAAAzF,IAAAkkB,EAdA,GAAAze,GAAAnG,EAAA,GACAmH,EAAAnH,EAAA,GAGA4kB,EAAA,oBAaAxkB,GAAAD,QAAAwkB,GtCijHM,SAAUvkB,EAAQD,EAASH,GuC5hHjC,QAAA6kB,GAAAnkB,GACA,SAAAwG,EAAAxG,IAAAokB,EAAApkB,MAGAuG,EAAAvG,GAAAqkB,EAAAC,GACA9c,KAAA+c,EAAAvkB,IA3CA,GAAAuG,GAAAjH,EAAA,IACA8kB,EAAA9kB,EAAA,IACAkH,EAAAlH,EAAA,GACAilB,EAAAjlB,EAAA,IAMAklB,EAAA,sBAGAF,EAAA,8BAGAG,EAAAre,SAAAtF,UACAiG,EAAA1G,OAAAS,UAGA4jB,EAAAD,EAAApE,SAGAtf,EAAAgG,EAAAhG,eAGAsjB,EAAAM,OAAA,IACAD,EAAA7kB,KAAAkB,GAAA6jB,QAAAJ,EAAA,QACAI,QAAA,sEAmBAllB,GAAAD,QAAA0kB,GvCykHM,SAAUzkB,EAAQD,EAASH,GwCjkHjC,QAAAulB,GAAA7kB,GACA,MAAAyG,GAAAzG,IACAsG,EAAAtG,EAAAuB,WAAAujB,EAAArf,EAAAzF,IAxDA,GAAAyF,GAAAnG,EAAA,GACAgH,EAAAhH,EAAA,IACAmH,EAAAnH,EAAA,GA8BAwlB,IACAA,GAZA,yBAYAA,EAXA,yBAYAA,EAXA,sBAWAA,EAVA,uBAWAA,EAVA,uBAUAA,EATA,uBAUAA,EATA,8BASAA,EARA,wBASAA,EARA,yBAQA,EACAA,EAjCA,sBAiCAA,EAhCA,kBAiCAA,EApBA,wBAoBAA,EAhCA,oBAiCAA,EApBA,qBAoBAA,EAhCA,iBAiCAA,EAhCA,kBAgCAA,EA/BA,qBAgCAA,EA/BA,gBA+BAA,EA9BA,mBA+BAA,EA9BA,mBA8BAA,EA7BA,mBA8BAA,EA7BA,gBA6BAA,EA5BA,mBA6BAA,EA5BA,qBA4BA,EAcAplB,EAAAD,QAAAolB,GxC8nHM,SAAUnlB,EAAQD,EAASH,GyCzqHjC,QAAAylB,GAAAnkB,GACA,IAAA6G,EAAA7G,GACA,MAAAokB,GAAApkB,EAEA,IAAAkjB,KACA,QAAAnd,KAAAtG,QAAAO,GACAG,EAAAlB,KAAAe,EAAA+F,IAAA,eAAAA,GACAmd,EAAApR,KAAA/L,EAGA,OAAAmd,GA1BA,GAAArc,GAAAnI,EAAA,IACA0lB,EAAA1lB,EAAA,IAGAyH,EAAA1G,OAAAS,UAGAC,EAAAgG,EAAAhG,cAsBArB,GAAAD,QAAAslB,GzCgsHM,SAAUrlB,EAAQD,EAASH,G0CjtHjC,QAAA2lB,GAAA/d,EAAAge,GACA,MAAAC,GAAAC,EAAAle,EAAAge,EAAAtd,GAAAV,EAAA,IAbA,GAAAU,GAAAtI,EAAA,IACA8lB,EAAA9lB,EAAA,IACA6lB,EAAA7lB,EAAA,GAcAI,GAAAD,QAAAwlB,G1CouHM,SAAUvlB,EAAQD,EAASH,G2CpvHjC,GAAA+lB,GAAA/lB,EAAA,IACAgB,EAAAhB,EAAA,GACAsI,EAAAtI,EAAA,IAUAgmB,EAAAhlB,EAAA,SAAA4G,EAAAqe,GACA,MAAAjlB,GAAA4G,EAAA,YACA3G,cAAA,EACAC,YAAA,EACAR,MAAAqlB,EAAAE,GACAve,UAAA,KALAY,CASAlI,GAAAD,QAAA6lB,G3C2vHM,SAAU5lB,EAAQD,G4CvwHxB,QAAAskB,GAAArjB,EAAA8kB,GAIA,IAHA,GAAAlT,IAAA,EACAwR,EAAAvE,MAAA7e,KAEA4R,EAAA5R,GACAojB,EAAAxR,GAAAkT,EAAAlT,EAEA,OAAAwR,GAGApkB,EAAAD,QAAAskB,G5CuxHM,SAAUrkB,EAAQD,G6CnyHxB,QAAAgmB,GAAAve,GACA,gBAAAlH,GACA,MAAAkH,GAAAlH,IAIAN,EAAAD,QAAAgmB,G7CizHM,SAAU/lB,EAAQD,EAASH,G8CjzHjC,QAAAomB,GAAAC,EAAAC,EAAAhlB,EAAAilB,GACA,GAAAC,IAAAllB,CACAA,UAKA,KAHA,GAAA0R,IAAA,EACA/Q,EAAAqkB,EAAArkB,SAEA+Q,EAAA/Q,GAAA,CACA,GAAAoF,GAAAif,EAAAtT,GAEAyT,EAAAF,EACAA,EAAAjlB,EAAA+F,GAAAgf,EAAAhf,KAAA/F,EAAA+kB,OACAnkB,OAEAA,KAAAukB,IACAA,EAAAJ,EAAAhf,IAEAmf,EACAhf,EAAAlG,EAAA+F,EAAAof,GAEArf,EAAA9F,EAAA+F,EAAAof,GAGA,MAAAnlB,GApCA,GAAA8F,GAAApH,EAAA,GACAwH,EAAAxH,EAAA,EAsCAI,GAAAD,QAAAimB,G9Cq0HM,SAAUhmB,EAAQD,EAASH,G+C52HjC,GAAA6G,GAAA7G,EAAA,GAGA0mB,EAAA7f,EAAA,qBAEAzG,GAAAD,QAAAumB,G/Cm3HM,SAAUtmB,EAAQD,EAASH,GgD92HjC,QAAA2mB,GAAAC,GACA,MAAAjB,GAAA,SAAArkB,EAAAulB,GACA,GAAA7T,IAAA,EACA/Q,EAAA4kB,EAAA5kB,OACAskB,EAAAtkB,EAAA,EAAA4kB,EAAA5kB,EAAA,OAAAC,GACA4kB,EAAA7kB,EAAA,EAAA4kB,EAAA,OAAA3kB,EAWA,KATAqkB,EAAAK,EAAA3kB,OAAA,qBAAAskB,IACAtkB,IAAAskB,OACArkB,GAEA4kB,GAAAC,EAAAF,EAAA,GAAAA,EAAA,GAAAC,KACAP,EAAAtkB,EAAA,MAAAC,GAAAqkB,EACAtkB,EAAA,GAEAX,EAAAP,OAAAO,KACA0R,EAAA/Q,GAAA,CACA,GAAAokB,GAAAQ,EAAA7T,EACAqT,IACAO,EAAAtlB,EAAA+kB,EAAArT,EAAAuT,GAGA,MAAAjlB,KAhCA,GAAAqkB,GAAA3lB,EAAA,IACA+mB,EAAA/mB,EAAA,GAmCAI,GAAAD,QAAAwmB,GhD+3HM,SAAUvmB,EAAQD,EAASH,GiDx5HjC,QAAA2H,GAAArG,EAAA+F,GACA,GAAA3G,GAAAsmB,EAAA1lB,EAAA+F,EACA,OAAAwd,GAAAnkB,SAAAwB,GAbA,GAAA2iB,GAAA7kB,EAAA,IACAgnB,EAAAhnB,EAAA,GAeAI,GAAAD,QAAAwH,GjD06HM,SAAUvH,EAAQD,EAASH,GkDj6HjC,QAAAuG,GAAA7F,GACA,GAAAumB,GAAAxlB,EAAAlB,KAAAG,EAAA4F,GACAiC,EAAA7H,EAAA4F,EAEA,KACA5F,EAAA4F,OAAApE,EACA,IAAAglB,IAAA,EACG,MAAArf,IAEH,GAAA2c,GAAA2C,EAAA5mB,KAAAG,EAQA,OAPAwmB,KACAD,EACAvmB,EAAA4F,GAAAiC,QAEA7H,GAAA4F,IAGAke,EA1CA,GAAA3e,GAAA7F,EAAA,GAGAyH,EAAA1G,OAAAS,UAGAC,EAAAgG,EAAAhG,eAOA0lB,EAAA1f,EAAAsZ,SAGAza,EAAAT,IAAAY,gBAAAvE,EA6BA9B,GAAAD,QAAAoG,GlDi8HM,SAAUnG,EAAQD,GmDt+HxB,QAAA6mB,GAAA1lB,EAAA+F,GACA,aAAA/F,MAAAY,GAAAZ,EAAA+F,GAGAjH,EAAAD,QAAA6mB,GnDq/HM,SAAU5mB,EAAQD,EAASH,GoDl/HjC,QAAA+mB,GAAArmB,EAAAsS,EAAA1R,GACA,IAAA4F,EAAA5F,GACA,QAEA,IAAAoC,SAAAsP,EACA,oBAAAtP,EACAqD,EAAAzF,IAAAyG,EAAAiL,EAAA1R,EAAAW,QACA,UAAAyB,GAAAsP,IAAA1R,KAEAiG,EAAAjG,EAAA0R,GAAAtS,GAxBA,GAAA6G,GAAAvH,EAAA,IACA+G,EAAA/G,EAAA,GACA+H,EAAA/H,EAAA,IACAkH,EAAAlH,EAAA,EA0BAI,GAAAD,QAAA4mB,GpDwgIM,SAAU3mB,EAAQD,EAASH,GqDthIjC,QAAA8kB,GAAAld,GACA,QAAAwf,OAAAxf,GAhBA,GAAA8e,GAAA1mB,EAAA,IAGAonB,EAAA,WACA,GAAAC,GAAA,SAAAC,KAAAZ,KAAAa,MAAAb,EAAAa,KAAAC,UAAA,GACA,OAAAH,GAAA,iBAAAA,EAAA,KAcAjnB,GAAAD,QAAA2kB,GrD4iIM,SAAU1kB,EAAQD,EAASH,GsD/jIjC,GAAAynB,GAAAznB,EAAA,IAGA0lB,EAAA+B,EAAA1mB,OAAAwmB,KAAAxmB,OAEAX,GAAAD,QAAAulB,GtDskIM,SAAUtlB,EAAQD,EAASH,IuD3kIjC,SAAAI,GAAA,GAAAsG,GAAA1G,EAAA,IAGA0nB,EAAA,gBAAAvnB,UAAAwnB,UAAAxnB,EAGAynB,EAAAF,GAAA,gBAAAtnB,UAAAunB,UAAAvnB,EAGAynB,EAAAD,KAAAznB,UAAAunB,EAGAI,EAAAD,GAAAnhB,EAAA6U,QAGAwM,EAAA,WACA,IACA,MAAAD,MAAAE,SAAAF,EAAAE,QAAA,QACG,MAAAngB,OAGHzH,GAAAD,QAAA4nB,IvD+kI6BxnB,KAAKJ,EAASH,EAAoB,IAAII,KAI7D,SAAUA,EAAQD,GwDvlIxB,QAAAqG,GAAA9F,GACA,MAAAymB,GAAA5mB,KAAAG,GAjBA,GAAA+G,GAAA1G,OAAAS,UAOA2lB,EAAA1f,EAAAsZ,QAaA3gB,GAAAD,QAAAqG,GxD+mIM,SAAUpG,EAAQD,GyD5nIxB,QAAAsnB,GAAA7f,EAAAqgB,GACA,gBAAA/G,GACA,MAAAtZ,GAAAqgB,EAAA/G,KAIA9gB,EAAAD,QAAAsnB,GzD2oIM,SAAUrnB,EAAQD,EAASH,G0D3oIjC,QAAA8lB,GAAAle,EAAAge,EAAAqC,GAEA,MADArC,GAAAsC,MAAAhmB,KAAA0jB,EAAAhe,EAAA3F,OAAA,EAAA2jB,EAAA,GACA,WAMA,IALA,GAAAtjB,GAAAN,UACAgR,GAAA,EACA/Q,EAAAimB,EAAA5lB,EAAAL,OAAA2jB,EAAA,GACAuC,EAAAlI,MAAAhe,KAEA+Q,EAAA/Q,GACAkmB,EAAAnV,GAAA1Q,EAAAsjB,EAAA5S,EAEAA,IAAA,CAEA,KADA,GAAAoV,GAAAnI,MAAA2F,EAAA,KACA5S,EAAA4S,GACAwC,EAAApV,GAAA1Q,EAAA0Q,EAGA,OADAoV,GAAAxC,GAAAqC,EAAAE,GACAlb,EAAArF,EAAAvC,KAAA+iB,IA/BA,GAAAnb,GAAAjN,EAAA,IAGAkoB,EAAAnX,KAAAsX,GAgCAjoB,GAAAD,QAAA2lB,G1DgqIM,SAAU1lB,EAAQD,EAASH,G2DnsIjC,GAAAgmB,GAAAhmB,EAAA,IACAsoB,EAAAtoB,EAAA,IAUA6lB,EAAAyC,EAAAtC,EAEA5lB,GAAAD,QAAA0lB,G3D0sIM,SAAUzlB,EAAQD,G4DvsIxB,QAAAmoB,GAAA1gB,GACA,GAAA2gB,GAAA,EACAC,EAAA,CAEA,mBACA,GAAAC,GAAAC,IACAC,EAAAC,GAAAH,EAAAD,EAGA,IADAA,EAAAC,EACAE,EAAA,GACA,KAAAJ,GAAAM,EACA,MAAA7mB,WAAA,OAGAumB,GAAA,CAEA,OAAA3gB,GAAAqF,UAAA/K,GAAAF,YA/BA,GAAA6mB,GAAA,IACAD,EAAA,GAGAF,EAAAzQ,KAAA6Q,GA+BA1oB,GAAAD,QAAAmoB,G5D8tIM,SAAUloB,EAAQD,G6DrvIxB,QAAA8kB,GAAArd,GACA,SAAAA,EAAA,CACA,IACA,MAAAwd,GAAA7kB,KAAAqH,GACK,MAAAC,IACL,IACA,MAAAD,GAAA,GACK,MAAAC,KAEL,SArBA,GAAAsd,GAAAre,SAAAtF,UAGA4jB,EAAAD,EAAApE,QAqBA3gB,GAAAD,QAAA8kB,G7DywIM,SAAU7kB,EAAQD,EAASH,G8DlyIjC,GAAAoH,GAAApH,EAAA,GACAomB,EAAApmB,EAAA,IACA2mB,EAAA3mB,EAAA,IACA+G,EAAA/G,EAAA,GACAmI,EAAAnI,EAAA,IACAunB,EAAAvnB,EAAA,IAGAyH,EAAA1G,OAAAS,UAGAC,EAAAgG,EAAAhG,eAkCAsnB,EAAApC,EAAA,SAAArlB,EAAA+kB,GACA,GAAAle,EAAAke,IAAAtf,EAAAsf,GAEA,WADAD,GAAAC,EAAAkB,EAAAlB,GAAA/kB,EAGA,QAAA+F,KAAAgf,GACA5kB,EAAAlB,KAAA8lB,EAAAhf,IACAD,EAAA9F,EAAA+F,EAAAgf,EAAAhf,KAKAjH,GAAAD,QAAA4oB,G9DyyIM,SAAU3oB,EAAQD,G+D/0IxB,QAAA4lB,GAAArlB,GACA,kBACA,MAAAA,IAIAN,EAAAD,QAAA4lB,G/Dy2IM,SAAU3lB,EAAQD,EAASH,GgEl4IjC,GAAA2kB,GAAA3kB,EAAA,IACAmH,EAAAnH,EAAA,GAGAyH,EAAA1G,OAAAS,UAGAC,EAAAgG,EAAAhG,eAGAunB,EAAAvhB,EAAAuhB,qBAoBA9E,EAAAS,EAAA,WAA8C,MAAA3iB,eAAoB2iB,EAAA,SAAAjkB,GAClE,MAAAyG,GAAAzG,IAAAe,EAAAlB,KAAAG,EAAA,YACAsoB,EAAAzoB,KAAAG,EAAA,UAGAN,GAAAD,QAAA+jB,GhEy4IM,SAAU9jB,EAAQD,GiEr5IxB,GAAA4f,GAAAE,MAAAF,OAEA3f,GAAAD,QAAA4f,GjEm7IM,SAAU3f,EAAQD,EAASH,IkE58IjC,SAAAI,GAAA,GAAAyG,GAAA7G,EAAA,GACAipB,EAAAjpB,EAAA,IAGA0nB,EAAA,gBAAAvnB,UAAAwnB,UAAAxnB,EAGAynB,EAAAF,GAAA,gBAAAtnB,UAAAunB,UAAAvnB,EAGAynB,EAAAD,KAAAznB,UAAAunB,EAGAwB,EAAArB,EAAAhhB,EAAAqiB,WAAAhnB,GAGAinB,EAAAD,IAAA9E,aAAAliB,GAmBAkiB,EAAA+E,GAAAF,CAEA7oB,GAAAD,QAAAikB,IlEg9I6B7jB,KAAKJ,EAASH,EAAoB,IAAII,KAI7D,SAAUA,EAAQD,EAASH,GmEz/IjC,GAAAulB,GAAAvlB,EAAA,IACAmmB,EAAAnmB,EAAA,IACA+nB,EAAA/nB,EAAA,IAGAopB,EAAArB,KAAAzD,aAmBAA,EAAA8E,EAAAjD,EAAAiD,GAAA7D,CAEAnlB,GAAAD,QAAAmkB,GnEggJM,SAAUlkB,EAAQD,EAASH,GoE1/IjC,QAAAunB,GAAAjmB,GACA,MAAAyF,GAAAzF,GAAAwiB,EAAAxiB,GAAAmkB,EAAAnkB,GAjCA,GAAAwiB,GAAA9jB,EAAA,IACAylB,EAAAzlB,EAAA,IACA+G,EAAA/G,EAAA,EAkCAI,GAAAD,QAAAonB,GpEiiJM,SAAUnnB,EAAQD,GqExjJxB,QAAA8oB,KACA,SAGA7oB,EAAAD,QAAA8oB,GrE4kJM,SAAU7oB,EAAQD,GsEllJxB,QAAAkpB,KACA,SAAA1jB,OAAA,mCAEA,QAAA2jB,KACA,SAAA3jB,OAAA,qCAsBA,QAAA4jB,GAAAC,GACA,GAAAC,IAAA/b,WAEA,MAAAA,YAAA8b,EAAA,EAGA,KAAAC,IAAAJ,IAAAI,IAAA/b,WAEA,MADA+b,GAAA/b,WACAA,WAAA8b,EAAA,EAEA,KAEA,MAAAC,GAAAD,EAAA,GACK,MAAA3hB,GACL,IAEA,MAAA4hB,GAAAlpB,KAAA,KAAAipB,EAAA,GACS,MAAA3hB,GAET,MAAA4hB,GAAAlpB,KAAA8E,KAAAmkB,EAAA,KAMA,QAAAE,GAAAC,GACA,GAAAC,IAAA/W,aAEA,MAAAA,cAAA8W,EAGA,KAAAC,IAAAN,IAAAM,IAAA/W,aAEA,MADA+W,GAAA/W,aACAA,aAAA8W,EAEA,KAEA,MAAAC,GAAAD,GACK,MAAA9hB,GACL,IAEA,MAAA+hB,GAAArpB,KAAA,KAAAopB,GACS,MAAA9hB,GAGT,MAAA+hB,GAAArpB,KAAA8E,KAAAskB,KAYA,QAAAE,KACAC,GAAAC,IAGAD,GAAA,EACAC,EAAA9nB,OACAua,EAAAuN,EAAAC,OAAAxN,GAEAyN,GAAA,EAEAzN,EAAAva,QACAioB,KAIA,QAAAA,KACA,IAAAJ,EAAA,CAGA,GAAAK,GAAAZ,EAAAM,EACAC,IAAA,CAGA,KADA,GAAAxN,GAAAE,EAAAva,OACAqa,GAAA,CAGA,IAFAyN,EAAAvN,EACAA,OACAyN,EAAA3N,GACAyN,GACAA,EAAAE,GAAAG,KAGAH,IAAA,EACA3N,EAAAE,EAAAva,OAEA8nB,EAAA,KACAD,GAAA,EACAJ,EAAAS,IAiBA,QAAAE,GAAAb,EAAArB,GACA9iB,KAAAmkB,MACAnkB,KAAA8iB,QAYA,QAAAtL,MAhKA,GAOA4M,GACAG,EARArO,EAAAnb,EAAAD,YAgBA,WACA,IAEAspB,EADA,kBAAA/b,YACAA,WAEA2b,EAEK,MAAAxhB,GACL4hB,EAAAJ,EAEA,IAEAO,EADA,kBAAA/W,cACAA,aAEAyW,EAEK,MAAAzhB,GACL+hB,EAAAN,KAuDA,IAEAS,GAFAvN,KACAsN,GAAA,EAEAG,GAAA,CAyCA1O,GAAAuG,SAAA,SAAA0H,GACA,GAAAlnB,GAAA,GAAA2d,OAAAje,UAAAC,OAAA,EACA,IAAAD,UAAAC,OAAA,EACA,OAAA5B,GAAA,EAAuBA,EAAA2B,UAAAC,OAAsB5B,IAC7CiC,EAAAjC,EAAA,GAAA2B,UAAA3B,EAGAmc,GAAApJ,KAAA,GAAAiX,GAAAb,EAAAlnB,IACA,IAAAka,EAAAva,QAAA6nB,GACAP,EAAAW,IASAG,EAAA7oB,UAAA4oB,IAAA,WACA/kB,KAAAmkB,IAAAvc,MAAA,KAAA5H,KAAA8iB,QAEA5M,EAAA+O,MAAA,UACA/O,EAAAgP,SAAA,EACAhP,EAAAiP,OACAjP,EAAAkP,QACAlP,EAAAmP,QAAA,GACAnP,EAAAoP,YAIApP,EAAAvO,GAAA6P,EACAtB,EAAAqP,YAAA/N,EACAtB,EAAAsP,KAAAhO,EACAtB,EAAA1F,IAAAgH,EACAtB,EAAAuP,eAAAjO,EACAtB,EAAAwP,mBAAAlO,EACAtB,EAAAyP,KAAAnO,EACAtB,EAAA0P,gBAAApO,EACAtB,EAAA2P,oBAAArO,EAEAtB,EAAA4P,UAAA,SAAAvqB,GAAqC,UAErC2a,EAAAyM,QAAA,SAAApnB,GACA,SAAA+E,OAAA,qCAGA4V,EAAA6P,IAAA,WAA2B,WAC3B7P,EAAA8P,MAAA,SAAAC,GACA,SAAA3lB,OAAA,mCAEA4V,EAAAgQ,MAAA,WAA4B,WtEomJtB,SAAUnrB,EAAQD","file":"admin.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 29);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _assign = __webpack_require__(60);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction Fetcher() {\n var fetchUrl = ajaxurl;\n var fetchNonce = wphb.nonces.HBFetchNonce;\n var actionPrefix = 'wphb_';\n var actionPrefixPro = 'wphb_pro_';\n\n function request(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'GET';\n\n data.nonce = fetchNonce;\n data.action = action;\n var args = { data: data, method: method };\n args.url = fetchUrl;\n var Promise = __webpack_require__(33).Promise;\n return new Promise(function (resolve, reject) {\n jQuery.ajax(args).done(resolve).fail(reject);\n }).then(function (response) {\n return checkStatus(response);\n });\n }\n\n var methods = {\n /**\n * Caching module actions.\n */\n caching: {\n /**\n * Set expiration for browser caching.\n *\n * @param type File type.\n * @param value Expiry value.\n */\n setExpiration: function setExpiration(type, value) {\n var action = actionPrefix + 'caching_set_expiration';\n return request(action, { type: type, value: value }, 'POST');\n },\n\n /**\n * Set server type.\n *\n * @param value Server type.\n */\n setServer: function setServer(value) {\n var action = actionPrefix + 'caching_set_server_type';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Reload snippet.\n *\n * @param type Server type.\n */\n reloadSnippets: function reloadSnippets(type) {\n var action = actionPrefix + 'caching_reload_snippet';\n return request(action, { type: type }, 'POST').then(function (response) {\n return response;\n });\n }\n },\n\n /**\n * CLoudflare module actions.\n */\n cloudflare: {\n /**\n * Connect to CloudFlare.\n *\n * @param step\n * @param formData\n * @param cfData\n */\n connect: function connect(step, formData, cfData) {\n var action = actionPrefix + 'cloudflare_connect';\n return request(action, { step: step, formData: formData, cfData: cfData }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Set expiry for CloudFlare cache.\n *\n * @param value Expiry value.\n */\n setExpiration: function setExpiration(value) {\n var action = actionPrefix + 'cloudflare_set_expiry';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Purge CloudFlare cache.\n */\n purgeCache: function purgeCache() {\n var action = actionPrefix + 'cloudflare_purge_cache';\n return request(action, {}, 'POST');\n }\n },\n\n /**\n * Dashboard module actions.\n */\n dashboard: {\n /**\n * Toggle global minification settings for network installs.\n *\n * @param value Accepts: 'super-admins', 'false' and 'true'. Default: 'true'.\n */\n toggleMinification: function toggleMinification(value) {\n var action = actionPrefix + 'dash_toggle_network_minification';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Skip quick setup.\n */\n skipSetup: function skipSetup() {\n var action = actionPrefix + 'dash_skip_setup';\n return request(action, {}, 'POST');\n }\n },\n\n /**\n * Minification module actions.\n */\n minification: {\n /**\n * Toggle CDN settings.\n *\n * @param value CDN checkbox value.\n */\n toggleCDN: function toggleCDN(value) {\n var action = actionPrefix + 'minification_toggle_cdn';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Toggle minificatiojn settings on per site basis.\n *\n * @param value\n */\n toggleMinification: function toggleMinification(value) {\n var action = actionPrefix + 'minification_toggle_minification';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Start minification check.\n *\n * @param progress\n */\n startCheck: function startCheck(progress) {\n var action = actionPrefix + 'minification_start_check';\n return request(action, { progress: progress }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Do a step in minification process.\n *\n * @param progress\n * @param step\n */\n checkStep: function checkStep(progress, step) {\n var action = actionPrefix + 'minification_check_step';\n return request(action, { progress: progress, step: step }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Cancel minification scan.\n */\n cancelScan: function cancelScan() {\n var action = actionPrefix + 'minification_cancel_scan';\n return request(action, {}, 'POST');\n }\n },\n\n /**\n * Performance module actions.\n */\n performance: {\n /**\n * Run performance test.\n */\n runTest: function runTest() {\n var action = actionPrefix + 'performance_run_test';\n return request(action, {}, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Add a single email/name recipient to the reports list.\n *\n * @param email\n * @param name\n */\n addRecipient: function addRecipient(email, name) {\n var action = actionPrefixPro + 'performance_add_recipient';\n return request(action, { email: email, name: name }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Save reporting settings on minification page.\n *\n * @param data From data.\n */\n saveReportsSettings: function saveReportsSettings(data) {\n var action = actionPrefixPro + 'performance_save_reports_settings';\n return request(action, { data: data }, 'POST');\n }\n }\n };\n\n (0, _assign2.default)(this, methods);\n}\n\nvar HBFetcher = new Fetcher();\nexports.default = HBFetcher;\n\n\nfunction checkStatus(response) {\n if ((typeof response === 'undefined' ? 'undefined' : _typeof(response)) !== 'object') {\n response = JSON.parse(response);\n }\n if (response.success) {\n return response.data;\n }\n\n var data = response.data || {};\n var error = new Error(data.message || 'Error trying to fetch response from server');\n error.response = response;\n throw error;\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(6),\n getRawTag = __webpack_require__(48),\n objectToString = __webpack_require__(54);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(10);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(15),\n isLength = __webpack_require__(16);\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(2);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(8),\n eq = __webpack_require__(13);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(9);\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(47);\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(17)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(1),\n isObject = __webpack_require__(4);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\njQuery(document).ready(function () {\n WPHB_Admin.init();\n});\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n 'use strict';\n\n WPHB_Admin.caching = {\n\n module: 'caching',\n selectedServer: '',\n $serverSelector: null,\n $serverInstructions: [],\n $expirySelectors: [],\n $snippets: [],\n\n init: function init() {\n var self = this,\n cachingMetabox = $('#wphb-box-caching-enable'),\n cachingContent = cachingMetabox.find('.box-content'),\n cachingContentSpinner = cachingContent.find('.spinner'),\n cachingFooter = cachingMetabox.find('.box-footer');\n\n if (wphbCachingStrings) self.strings = wphbCachingStrings;\n\n this.$serverSelector = $('#wphb-server-type');\n this.selectedServer = this.$serverSelector.val();\n //this.$spinner = $('#wphb-box-caching-enable .spinner');\n\n self.$snippets.apache = $('#wphb-code-snippet-apache').find('pre').first();\n self.$snippets.nginx = $('#wphb-code-snippet-nginx').find('pre').first();\n\n var instructionsList = $('.wphb-server-instructions');\n instructionsList.each(function () {\n self.$serverInstructions[$(this).data('server')] = $(this);\n });\n\n var expirySelectors = $('.wphb-expiry-select');\n\n expirySelectors.each(function () {\n var type = $(this).data('type');\n if (type) {\n $(this).change(function () {\n //self.$spinner.css( 'visibility', 'visible' );\n cachingContent.find('.wphb-content').hide();\n cachingFooter.hide();\n cachingContentSpinner.fadeIn();\n $('.wphb-notice').hide();\n\n // Expiration selector has changed\n (function (element) {\n var value = $(element).val();\n // Change the plugin settings\n _fetcher2.default.caching.setExpiration(type, value).then(function () {\n // And reload the code snippet\n self.reloadSnippets();\n });\n return false;\n })(this);\n });\n }\n });\n\n this.showServerInstructions(this.selectedServer);\n\n this.$serverSelector.change(function () {\n var value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions(value);\n self.setServer(value);\n self.selectedServer = value;\n });\n\n $('#toggle-apache-instructions').click(function (e) {\n e.preventDefault();\n $('.apache-instructions').slideToggle();\n });\n\n $('#toggle-litespeed-instructions').click(function (e) {\n e.preventDefault();\n $('.litespeed-instructions').slideToggle();\n });\n\n return this;\n },\n\n setServer: function setServer(value) {\n _fetcher2.default.caching.setServer(value);\n },\n\n hideCurrentInstructions: function hideCurrentInstructions() {\n var selected = this.selectedServer;\n if (this.$serverInstructions[selected]) {\n this.$serverInstructions[selected].hide();\n }\n },\n\n showServerInstructions: function showServerInstructions(server) {\n if (typeof this.$serverInstructions[server] !== 'undefined') {\n this.$serverInstructions[server].show();\n }\n\n if ('apache' === server || 'LiteSpeed' === server) {\n $('#enable-cache-wrap').show();\n } else {\n $('#enable-cache-wrap').hide();\n }\n },\n\n reloadSnippets: function reloadSnippets() {\n var self = this;\n var stop = false;\n for (var i in self.$snippets) {\n if (self.$snippets.hasOwnProperty(i)) {\n _fetcher2.default.caching.reloadSnippets(i).then(function (response) {\n if (stop) {\n return;\n }\n\n self.$snippets[response.type].text(response.code);\n\n // Make sure that we only do things when server displayed is the processed one\n if (response.type !== self.selectedServer) {\n return;\n }\n\n if ('apache' === response.type && response.updatedFile) {\n $('#wphb-notice-code-snippet-htaccess-updated').show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n } else if ('apache' === response.type && self.strings.cacheEnabled && !response.updatedFile) {\n $('#wphb-notice-code-snippet-htaccess-error').show();\n location.href = self.strings.htaccessErrorURL;\n } else {\n $('#wphb-notice-code-snippet-updated').show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n }\n //self.$spinner.css( 'visibility', 'hidden' );\n });\n }\n }\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.cloudflare = {\n module: 'cloudflare',\n $cfSelector: false,\n $spinner: false,\n\n init: function init() {\n this.$spinner = $('.wphb-spinner');\n this.$cfSelector = $('#wphb-caching-cloudflare-summary-set-expiry');\n var self = this;\n if (wphb.cloudflare.is.connected) {\n this.$cfSelector.change(function () {\n self.setExpiry.call(self, [this]);\n });\n }\n\n return this;\n },\n\n setExpiry: function setExpiry(selector) {\n this.displaySpinner();\n var value = $(selector).val();\n _fetcher2.default.cloudflare.setExpiration(value).then(function () {\n window.location.reload();\n });\n },\n\n displaySpinner: function displaySpinner() {\n this.$spinner.css('visibility', 'visible');\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.DashboardCloudFlare = {\n init: function init(settings) {\n this.currentStep = settings.currentStep;\n this.data = settings;\n this.email = settings.email;\n this.apiKey = settings.apiKey;\n this.$stepsContainer = $('#cloudflare-steps');\n this.$infoBox = $('#cloudflare-info');\n this.$spinner = $('.cloudflare-spinner');\n this.$deactivateButton = $('#wphb-box-dashboard-cloudflare').find('.box-title .buttons');\n\n this.renderStep(this.currentStep);\n\n $('body').on('click', '.cloudflare-clear-cache .button', function (e) {\n e.preventDefault();\n this.purgeCache.apply($(e.target), [this]);\n }.bind(this));\n },\n\n purgeCache: function purgeCache(self) {\n // Show spinner\n var $button = this;\n $button.attr('disabled', true);\n self.showSpinner();\n\n _fetcher2.default.cloudflare.purgeCache().then(function () {\n // Show notice\n var $notice = $('#wphb-notice-cloudflare-purge-cache');\n window.scrollTo(0, 0);\n $notice.slideDown();\n setTimeout(function () {\n $notice.slideUp();\n }, 5e3);\n // Remove spinner\n $button.removeAttr('disabled');\n self.hideSpinner();\n });\n },\n\n renderStep: function renderStep(step) {\n var template = WPHB_Admin.DashboardCloudFlare.template('#cloudflare-step-' + step);\n var content = template(this.data);\n var self = this;\n\n if (content) {\n this.currentStep = step;\n this.$stepsContainer.hide().html(template(this.data)).fadeIn().find('form').on('submit', function (e) {\n e.preventDefault();\n self.submitStep.call(self, $(this));\n });\n\n this.$spinner = this.$stepsContainer.find('.cloudflare-spinner');\n }\n\n this.bindEvents();\n },\n\n bindEvents: function bindEvents() {\n var $howToInstructions = $('#cloudflare-how-to');\n\n $howToInstructions.hide();\n\n $('#cloudflare-how-to-title > a').click(function (e) {\n e.preventDefault();\n $howToInstructions.toggle();\n });\n\n this.$stepsContainer.find('select').each(function () {\n window.WDP.wpmuSelect(this);\n });\n\n if ('final' === this.currentStep) {\n this.$deactivateButton.removeClass('hidden');\n } else {\n this.$deactivateButton.addClass('hidden');\n }\n },\n\n emptyInfoBox: function emptyInfoBox() {\n this.$infoBox.html('');\n this.$infoBox.removeClass();\n },\n\n showInfoBox: function showInfoBox(message) {\n this.$infoBox.addClass('wphb-notice');\n this.$infoBox.addClass('wphb-notice-error');\n this.$infoBox.text(message);\n },\n\n showSpinner: function showSpinner() {\n this.$spinner.css('visibility', 'visible');\n },\n\n hideSpinner: function hideSpinner() {\n this.$spinner.css('visibility', 'hidden');\n },\n\n submitStep: function submitStep($form) {\n var self = this;\n\n $form.find('input[type=submit]').attr('disabled', 'true');\n this.emptyInfoBox();\n this.showSpinner();\n\n _fetcher2.default.cloudflare.connect(this.currentStep, $form.serialize(), this.data).then(function (response) {\n self.data = response.newData;\n self.renderStep(response.nextStep);\n\n if (response.nextStep === 'final') {\n window.location.href = response.redirect;\n }\n }).catch(function (error) {\n self.showInfoBox(error);\n });\n\n $form.find('input[type=submit]').removeAttr('disabled');\n self.hideSpinner();\n }\n };\n\n WPHB_Admin.DashboardCloudFlare.template = _.memoize(function (id) {\n var compiled = void 0,\n options = {\n evaluate: /<#([\\s\\S]+?)#>/g,\n interpolate: /\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/g,\n escape: /\\{\\{([^\\}]+?)\\}\\}(?!\\})/g,\n variable: 'data'\n };\n\n return function (data) {\n _.templateSettings = options;\n compiled = compiled || _.template($(id).html());\n return compiled(data);\n };\n });\n})(jQuery);\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.dashboard = {\n module: 'dashboard',\n\n init: function init() {\n var self = this;\n\n if (wphbDashboardStrings) this.strings = wphbDashboardStrings;\n\n $('#wphb-activate-minification').change(function () {\n var value = $(this).val();\n _fetcher2.default.dashboard.toggleMinification(value).then(function () {\n // If disabled, uncheck CDN checkbox and disable it.\n var CDNcheckbox = $('input[name=\"use_cdn\"]');\n if ('false' === value) {\n CDNcheckbox.prop('checked', false);\n CDNcheckbox.prop('disabled', true);\n } else {\n CDNcheckbox.prop('disabled', false);\n }\n self.showNotice();\n });\n });\n\n $('#use_cdn').change(function () {\n var value = $(this).is(':checked');\n _fetcher2.default.minification.toggleCDN(value).then(function () {\n self.showNotice();\n });\n });\n\n $('.wphb-performance-report-item').click(function () {\n var url = $(this).data('performance-url');\n if (url) {\n location.href = url;\n }\n });\n return this;\n },\n\n /**\n * Notice on settings update.\n */\n showNotice: function showNotice() {\n var notice = $('#wphb-notice-minification-settings-updated');\n notice.slideDown();\n setTimeout(function () {\n notice.slideUp();\n }, 5000);\n },\n\n /**\n * Run quick setup.\n */\n startQuickSetup: function startQuickSetup() {\n // Show quick setup modal\n window.WDP.showOverlay('#wphb-quick-setup-modal', { class: 'wphb-modal small wphb-quick-setup-modal no-close' });\n },\n\n /**\n * Skip quick setup.\n */\n skipSetup: function skipSetup() {\n _fetcher2.default.dashboard.skipSetup().then(function () {\n window.location.reload(true);\n });\n },\n\n /**\n * Run performance test after quick setup.\n */\n runPerformanceTest: function runPerformanceTest() {\n // Show quick setup modal\n window.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' });\n\n // Run performance test\n var module = WPHB_Admin.getModule('performance');\n module.performanceTest(this.strings.finishedTestURLsLink);\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.gzip = {\n module: \"gzip\",\n selectedServer: \"\",\n $serverSelector: null,\n $serverInstructions: [],\n\n init: function init() {\n var self = this;\n\n this.$serverSelector = $(\"#wphb-server-type\");\n this.selectedServer = this.$serverSelector.val();\n var instructionsList = $(\".wphb-server-instructions\");\n instructionsList.each(function () {\n self.$serverInstructions[$(this).data(\"server\")] = $(this);\n });\n this.showServerInstructions(this.selectedServer);\n this.$serverSelector.change(function () {\n var value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions(value);\n self.setServer(value);\n self.selectedServer = value;\n });\n $(\"#toggle-apache-instructions\").click(function (e) {\n e.preventDefault();\n $(\".apache-instructions\").toggle();\n });\n $(\"#toggle-litespeed-instructions\").click(function (e) {\n e.preventDefault();\n $(\".litespeed-instructions\").toggle();\n });\n return this;\n },\n\n hideCurrentInstructions: function hideCurrentInstructions() {\n var selected = this.selectedServer;\n if (this.$serverInstructions[selected]) {\n this.$serverInstructions[selected].hide();\n }\n },\n\n showServerInstructions: function showServerInstructions(server) {\n if (typeof this.$serverInstructions[server] !== \"undefined\") {\n this.$serverInstructions[server].show();\n }\n if (\"apache\" === server || 'LiteSpeed' === server) {\n $(\"#enable-cache-wrap\").show();\n } else {\n $(\"#enable-cache-wrap\").hide();\n }\n },\n\n setServer: function setServer(value) {\n _fetcher2.default.caching.setServer(value);\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n(function ($) {\n 'use strict';\n\n var WPHB_Admin = {\n modules: [],\n // Common functionality to all screens\n init: function init() {\n\n $('body').on('change', '.mobile-nav', function () {\n var url = $(this).val();\n if (url.length > 0) {\n location.href = url;\n }\n });\n\n function updatePerformanceGraph($wrap) {\n var $item = $wrap.find('.wphb-score-result-label'),\n val = parseInt($item.text(), 10) || 100,\n $circle = $wrap.find(\".wphb-score-graph-result\"),\n r = void 0,\n c = void 0,\n pct = void 0;\n r = $circle.attr('r');\n c = Math.PI * (r * 2);\n\n if (val < 0) {\n val = 0;\n }\n if (val > 100) {\n val = 100;\n }\n\n pct = (100 - val) / 100 * c;\n\n $circle.css({ strokeDashoffset: pct });\n }\n\n function updatePerformanceResultsGraphs() {\n\n // Update Overall Score\n $(\".wphb-performance-report-overall-score\").each(function () {\n updatePerformanceGraph($(this));\n });\n\n // Update Current Score\n $(\".wphb-performance-report-current-score\").each(function () {\n updatePerformanceGraph($(this));\n });\n\n // Update All Scores\n $(\".wphb-performance-report-item-score\").each(function () {\n updatePerformanceGraph($(this));\n });\n }\n window.register_events_performance = function () {\n setTimeout(updatePerformanceResultsGraphs, 500);\n };\n $(function () {\n setTimeout(updatePerformanceResultsGraphs, 500);\n });\n },\n initModule: function initModule(module) {\n if (this.hasOwnProperty(module)) {\n this.modules[module] = this[module].init();\n return this.modules[module];\n }\n\n return {};\n },\n getModule: function getModule(module) {\n if (typeof this.modules[module] !== 'undefined') return this.modules[module];else return this.initModule(module);\n }\n };\n\n WPHB_Admin.utils = {\n\n membershipModal: {\n open: function open() {\n $('#wphb-upgrade-membership-modal-link').trigger('click');\n }\n },\n\n post: function post(data, module) {\n data.action = 'wphb_ajax';\n data.module = module;\n return $.ajax({\n url: ajaxurl,\n method: 'POST',\n data: data\n });\n }\n };\n\n WPHB_Admin.notices = {\n\n init: function init() {\n $('.wphb-notice:not(.notice) a.wphb-dismiss').click(function (e) {\n e.preventDefault();\n var id = $(this).data('id');\n var nonce = $(this).data('nonce');\n\n $(this).parent('.error').hide();\n });\n }\n };\n\n window.WPHB_Admin = WPHB_Admin;\n})(jQuery);\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nvar _helpers = __webpack_require__(32);\n\nvar _Row = __webpack_require__(30);\n\nvar _Row2 = _interopRequireDefault(_Row);\n\nvar _RowsCollection = __webpack_require__(31);\n\nvar _RowsCollection2 = _interopRequireDefault(_RowsCollection);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n 'use strict';\n\n WPHB_Admin.minification = {\n\n $checkFilesButton: null,\n $checkFilesResultsContainer: null,\n module: 'minification',\n checkURLSList: null,\n checkedURLS: 0,\n $spinner: null,\n\n init: function init() {\n var self = this;\n\n // Filter action button on Minification page\n $('#wphb-minification-filter-button').on('click', function (e) {\n e.preventDefault();\n $('#wphb-minification-filter').toggle('slow');\n });\n\n // Check files button\n this.$checkFilesButton = $('#check-files');\n this.$disableMinification = $('#wphb-disable-minification');\n this.$spinner = $('.spinner');\n\n if (this.$checkFilesButton.length) {\n this.$checkFilesButton.click(function (e) {\n e.preventDefault();\n window.WDP.showOverlay(\"#check-files-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' });\n $(this).attr('disabled', true);\n self.checkFiles((0, _helpers.getLink)('minification'));\n });\n }\n\n $('.wphb-discard').click(function (e) {\n e.preventDefault();\n\n if (confirm((0, _helpers.__)('discardAlert'))) {\n location.reload();\n }\n return false;\n });\n\n $('.wphb-enqueued-files input').on('change', function () {\n $('.wphb-discard').attr('disabled', false);\n });\n\n $('#use_cdn').change(function () {\n var cdn_value = $(this).is(':checked');\n _fetcher2.default.minification.toggleCDN(cdn_value).then(function () {\n var notice = $('#wphb-notice-minification-advanced-settings-updated');\n notice.slideDown();\n setTimeout(function () {\n notice.slideUp();\n }, 5000);\n });\n });\n\n this.$disableMinification.change(function () {\n var value = $(this).is(':checked');\n\n self.$spinner.css('visibility', 'visible');\n\n if (self.timer && value) {\n clearTimeout(self.timer);\n self.$spinner.css('visibility', 'hidden');\n }\n\n self.timer = setTimeout(function () {\n _fetcher2.default.minification.toggleMinification(value).then(function () {\n location.reload();\n });\n }, 3000);\n });\n\n this.rowsCollection = new WPHB_Admin.minification.RowsCollection();\n\n var rows = $('.wphb-border-row');\n\n rows.each(function (index, row) {\n var _row = void 0;\n if ($(row).data('filter-secondary')) {\n _row = new WPHB_Admin.minification.Row($(row), $(row).data('filter'), $(row).data('filter-secondary'));\n } else {\n _row = new WPHB_Admin.minification.Row($(row), $(row).data('filter'));\n }\n self.rowsCollection.push(_row);\n });\n\n $('#wphb-s').keyup(function () {\n self.rowsCollection.addFilter($(this).val(), 'primary');\n self.rowsCollection.applyFilters();\n });\n\n $('#wphb-secondary-filter').change(function () {\n self.rowsCollection.addFilter($(this).val(), 'secondary');\n self.rowsCollection.applyFilters();\n });\n\n $('.filter-toggles').change(function () {\n var element = $(this);\n var what = element.data('toggles');\n var value = element.prop('checked');\n var visibleItems = self.rowsCollection.getVisibleItems();\n\n for (var i in visibleItems) {\n visibleItems[i].change(what, value);\n }\n });\n\n // Files selectors\n var filesList = $('input.wphb-minification-file-selector');\n filesList.click(function () {\n var $this = $(this);\n var element = self.rowsCollection.getItemById($this.data('type'), $this.data('handle'));\n if (!element) {\n return;\n }\n\n if ($this.is(':checked')) {\n element.select();\n } else {\n element.unSelect();\n }\n });\n\n var selectAll = $('#minification-bulk-file');\n selectAll.click(function () {\n var $this = $(this);\n var items = self.rowsCollection.getItems();\n for (var i in items) {\n if (items.hasOwnProperty(i)) {\n if ($this.is(':checked')) {\n items[i].select();\n } else {\n items[i].unSelect();\n }\n }\n }\n });\n\n // Include/exclude file checkbox\n $('.toggle-cross').on('click', function () {\n var $this = $(this);\n var checkbox = $this.find('input.toggle-include');\n var row = self.rowsCollection.getItemById($this.data('type'), $this.data('handle'));\n // Mark the item as include or not in the rows list\n if (row) {\n row.change('include', !checkbox.prop('checked'));\n row.getElement().find('input:not(.toggle-include)').prop('disabled', !checkbox.prop('checked'));\n }\n });\n\n // Handle two CDN checkboxes on Minification page\n var checkboxes = $(\"input[type=checkbox][name=use_cdn]\");\n checkboxes.change(function () {\n var checkedState = $(this).prop('checked');\n\n checkboxes.each(function () {\n this.checked = checkedState;\n });\n });\n\n /* Show details of minification row on mobile devices */\n $('body').on('click', '.wphb-minification-file-details', function () {\n if (window.innerWidth < 783) {\n $(this).parent().find('.wphb-minification-row-details').toggle('slow');\n }\n });\n\n /*\n Catch window resize and revert styles for responsive divs\n 1/4 of a second should be enough to trigger during device rotations (from portrait to landscape mode)\n */\n var minification_resize_rows = _.debounce(function () {\n\n if (window.innerWidth >= 783) {\n $('.wphb-minification-row-details').css('display', 'flex');\n } else {\n $('.wphb-minification-row-details').css('display', 'none');\n }\n }, 250);\n\n window.addEventListener('resize', minification_resize_rows);\n\n return this;\n },\n\n checkFiles: function checkFiles(redirect) {\n var _this = this;\n\n var self = this;\n\n if (typeof redirect === 'undefined') redirect = false;\n\n if (!self.minificationStarted) {\n // Store the progress in session storage to persist during page reloads\n // If there is no previous value, we init one with 10%\n if (sessionStorage.getItem('progress') === null) {\n sessionStorage.setItem('progress', 10);\n }\n\n // Update progress bar\n var progress = sessionStorage.getItem('progress');\n this.updateProgressBar(progress);\n\n // Send an AJAX request that will flag the check files as started\n _fetcher2.default.minification.startCheck(progress).then(function (response) {\n // Set the number of steps to be used in percentage count. Only if not set already.\n if (typeof response.steps !== 'undefined' && sessionStorage.getItem('steps') === null) {\n sessionStorage.setItem('steps', response.steps);\n }\n\n self.minificationStarted = true;\n self.checkFiles(redirect);\n });\n } else {\n var _progress = sessionStorage.getItem('progress');\n var step = Math.round(80 / sessionStorage.getItem('steps'));\n _fetcher2.default.minification.checkStep(_progress, step).then(function (response) {\n if (typeof response.finished !== 'undefined') {\n // Finished\n if (response.finished && redirect) {\n // Clear session storage\n sessionStorage.clear();\n\n // Update progress bar\n _this.updateProgressBar(100);\n\n // Show enable cdn modal only for members\n if (true === response.show_cdn && $('#enable-cdn-modal').length) {\n WDP.showOverlay('#enable-cdn-modal', { class: 'wphb-modal small wphb-progress-modal no-close' });\n } else {\n window.location.href = redirect;\n }\n }\n // Next step\n else if (!response.finished) {\n // Store the progress in session storage to persist during page reloads\n var _progress2 = parseInt(sessionStorage.getItem('progress')) + Math.round(80 / sessionStorage.getItem('steps'));\n sessionStorage.setItem('progress', _progress2);\n\n // Update progress bar.\n _this.updateProgressBar(_progress2);\n\n // Wait 3 seconds before calling again\n window.setTimeout(function () {\n self.checkFiles(redirect);\n }, 3000);\n }\n } else {\n // Error\n window.location.href = redirect;\n }\n });\n } // End else\n }, // End checkFiles\n\n updateProgressBar: function updateProgressBar(progress) {\n var cancel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (progress > 100) {\n progress = 100;\n }\n // Update progress bar\n $('.wphb-scan-progress .wphb-scan-progress-text span').text(progress + '%');\n if (progress >= 90) {\n $('.wphb-progress-state .wphb-progress-state-text').text('Finalizing...');\n }\n if (cancel) {\n $('.wphb-progress-state .wphb-progress-state-text').text('Cancelling...');\n }\n $('.wphb-scan-progress .wphb-scan-progress-bar span').width(progress + '%');\n },\n\n cancelScan: function cancelScan() {\n var _this2 = this;\n\n _fetcher2.default.minification.cancelScan().then(function () {\n // Clear session storage\n sessionStorage.clear();\n\n _this2.updateProgressBar(0, true);\n\n // Reload page\n window.location.href = (0, _helpers.getLink)('minification');\n });\n }\n\n }; // End WPHB_Admin.minification\n\n WPHB_Admin.minification.Row = _Row2.default;\n WPHB_Admin.minification.RowsCollection = _RowsCollection2.default;\n})(jQuery);\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n 'use strict';\n\n WPHB_Admin.performance = {\n\n module: 'performance',\n iteration: 0,\n progress: 0,\n\n init: function init() {\n\n var self = this;\n var body = $('body');\n\n if (wphbPerformanceStrings) this.strings = wphbPerformanceStrings;\n\n this.$runTestButton = $('#run-performance-test');\n\n var performanceReportTable = $(\".performance-report-table\");\n\n performanceReportTable.off('click', 'button');\n performanceReportTable.on('click', '.wphb-performance-report-item-cta .additional-content-opener' && 'tr.wphb-performance-report-item', function (e) {\n e.preventDefault();\n\n var getParentPerformanceItem = $(this).closest(\".wphb-performance-report-item\"),\n getNextAdditionalContentRow = getParentPerformanceItem.nextUntil(\".wphb-performance-report-item\");\n\n getNextAdditionalContentRow.toggleClass(\"wphb-performance-report-item-additional-content-opened\");\n\n if (getNextAdditionalContentRow.hasClass(\"wphb-performance-report-item-additional-content-opened\")) {\n getParentPerformanceItem.addClass(\"wphb-performance-report-item-opened\");\n } else {\n getParentPerformanceItem.removeClass(\"wphb-performance-report-item-opened\");\n }\n });\n\n if (this.$runTestButton.length) {\n this.$runTestButton.click(function (e) {\n e.preventDefault();\n window.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' });\n $(this).attr('disabled', true);\n self.performanceTest(self.strings.finishedTestURLsLink);\n });\n }\n\n // If a hash is present in URL, let's open the rule extra content\n var hash = window.location.hash;\n if (hash) {\n var row = $(hash);\n if (row.length) {\n row.find('.trigger-additional-content').trigger('click');\n }\n }\n\n // Schedule show/hide day of week\n $('select[name=\"email-frequency\"]').change(function () {\n if ('1' === $(this).val()) {\n $(this).closest('.schedule-box').find('div.days-container').hide();\n } else {\n $(this).closest('.schedule-box').find('div.days-container').show();\n }\n }).change();\n\n // Remove recipient\n body.on('click', '.wphb-remove-recipient', function (e) {\n e.preventDefault();\n $(this).closest('.recipient').remove();\n $('.scan-settings').find(\"input[id='scan_recipient'][value=\" + $(this).attr('data-id') + \"]\").remove();\n });\n\n // Add recipient\n $('#add-receipt').click(function () {\n var email = $(\"#wphb-username-search\").val();\n var name = $(\"#wphb-first-name\").val();\n _fetcher2.default.performance.addRecipient(email, name).then(function (response) {\n var user_row = $('<div class=\"recipient\"/>');\n\n var img = $('<img/>').attr({\n 'src': response.avatar,\n 'width': '30'\n });\n var name = $('<span/>').html(response.name);\n\n user_row.append('<span class=\"name\"/>');\n user_row.find('.name').append(img, name);\n\n user_row.append($('<span class=\"email\"/>').html(email));\n user_row.append($('<a/>').attr({\n 'data-id': response.user_id,\n 'class': 'remove float-r wphb-remove-recipient',\n 'href': '#',\n 'alt': self.strings.removeButtonText\n }).html('<i class=\"dev-icon dev-icon-cross\"></i>'));\n\n $('<input>').attr({\n type: 'hidden',\n id: 'scan_recipient',\n name: 'email-recipients[]',\n value: JSON.stringify({ email: response.email, name: response.name })\n }).appendTo(user_row);\n\n $('.receipt .recipients').append(user_row);\n $(\"#wphb-username-search\").val('');\n $(\"#wphb-first-name\").val('');\n }).catch(function (error) {\n alert(error.message);\n });\n return false;\n });\n\n // Save report settings\n body.on('submit', '.scan-frm', function (e) {\n e.preventDefault();\n var form_data = $(this).serialize();\n var that = $(this);\n\n that.find('.button').attr('disabled', 'disabled');\n\n _fetcher2.default.performance.saveReportsSettings(form_data).then(function () {\n that.find('.button').removeAttr('disabled');\n self.showUpdateMessage();\n });\n return false;\n });\n\n return this;\n },\n\n showUpdateMessage: function showUpdateMessage() {\n var notice = $('#wphb-notice-performance-report-settings-updated');\n window.scrollTo(0, 0);\n notice.slideDown();\n setTimeout(function () {\n notice.slideUp();\n }, 5000);\n },\n\n performanceTest: function performanceTest(redirect) {\n var self = this;\n\n if (typeof redirect === 'undefined') redirect = false;\n\n // Update progress bar\n self.updateProgressBar();\n\n _fetcher2.default.performance.runTest().then(function (response) {\n if (!response.finished) {\n // Try again 5 seconds later\n window.setTimeout(function () {\n self.performanceTest(redirect);\n }, 5000);\n } else if (redirect) {\n window.location = redirect;\n }\n });\n },\n\n updateProgressBar: function updateProgressBar() {\n if (this.progress < 90) {\n this.progress += 35;\n }\n if (this.progress > 100) {\n this.progress = 90;\n }\n $('.wphb-scan-progress .wphb-scan-progress-text span').text(this.progress + '%');\n $('.wphb-scan-progress .wphb-scan-progress-bar span').attr('style', 'width:' + this.progress + '%');\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n(function ($) {\n WPHB_Admin.uptime = {\n module: 'uptime',\n $dataRangeSelector: null,\n chartData: null,\n timer: null,\n $spinner: null,\n init: function init() {\n this.$spinner = $('.spinner');\n this.strings = wphbUptimeStrings;\n this.$dataRangeSelector = $('#wphb-uptime-data-range');\n this.chartData = $('#uptime-chart-json').val();\n this.$disableUptime = $('#wphb-disable-uptime');\n\n this.$dataRangeSelector.change(function () {\n window.location.href = $(this).find(':selected').data('url');\n });\n\n var self = this;\n this.$disableUptime.change(function () {\n self.$spinner.css('visibility', 'visible');\n var value = $(this).is(':checked');\n if (value && self.timer) {\n clearTimeout(self.timer);\n self.$spinner.css('visibility', 'hidden');\n } else {\n // you have 3 seconds to change your mind\n self.timer = setTimeout(function () {\n location.href = self.strings.disableUptimeURL;\n }, 3000);\n }\n\n return;\n });\n\n this.drawChart();\n\n /* Re-check Uptime status */\n $('#uptime-re-check-status').on('click', function (e) {\n e.preventDefault();\n location.reload();\n });\n },\n\n drawChart: function drawChart() {\n var data = new google.visualization.DataTable();\n data.addColumn('datetime', 'Day');\n data.addColumn('number', 'Response Time (ms)');\n\n var chart_array = JSON.parse(this.chartData);\n for (var i = 0; i < chart_array.length; i++) {\n chart_array[i][0] = new Date(chart_array[i][0]);\n chart_array[i][1] = Math.round(chart_array[i][1]);\n\n /* brings the graph below the x axis */\n if (Math.round(chart_array[i][1]) == 0) {\n chart_array[i][1] = -100;\n }\n }\n\n data.addRows(chart_array);\n\n var options = {\n chartArea: {\n left: 80,\n top: 20,\n width: '90%',\n height: '90%'\n },\n colors: ['#24ADE5'],\n curveType: 'function',\n /*interpolateNulls: true,*/\n legend: { position: 'none' },\n vAxis: {\n format: '#,### ms',\n viewWindow: { min: 0 /* don't display negative values */\n } },\n tooltip: { isHtml: true },\n series: {\n 0: { axis: 'Resp' }\n },\n axes: {\n y: {\n Resp: { label: 'Response Time (ms)' }\n }\n }\n };\n\n var chart = new google.visualization.LineChart(document.getElementById('uptime-chart'));\n chart.draw(data, options);\n\n $(window).resize(function () {\n chart.draw(data, options);\n });\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n__webpack_require__(27);\n__webpack_require__(24);\n__webpack_require__(20);\n__webpack_require__(26);\n__webpack_require__(23);\n__webpack_require__(22);\n__webpack_require__(28);\n__webpack_require__(21);\n__webpack_require__(19);\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar Row = function Row(_element, _filter, _filter_sec) {\n var $el = _element,\n filter = _filter.toLowerCase(),\n filterSecondary = false,\n selected = false,\n visible = true;\n\n var $include = $el.find('.toggle-include'),\n $combine = $el.find('.toggle-combine'),\n $minify = $el.find('.toggle-minify'),\n $posFooter = $el.find('.toggle-position-footer'),\n $disableIcon = $el.find('.toggle-cross > i');\n\n if (_filter_sec) {\n filterSecondary = _filter_sec.toLowerCase();\n }\n\n return {\n hide: function hide() {\n $el.addClass('out-of-filter');\n visible = false;\n },\n\n show: function show() {\n $el.removeClass('out-of-filter');\n visible = true;\n },\n\n getElement: function getElement() {\n return $el;\n },\n\n getId: function getId() {\n return $el.attr('id');\n },\n\n getFilter: function getFilter() {\n return filter;\n },\n\n matchFilter: function matchFilter(text) {\n if (text === '') {\n return true;\n }\n\n text = text.toLowerCase();\n return filter.search(text) > -1;\n },\n\n matchSecondaryFilter: function matchSecondaryFilter(text) {\n if (text === '') {\n return true;\n }\n\n if (!filterSecondary) {\n return false;\n }\n\n text = text.toLowerCase();\n return filterSecondary === text;\n },\n\n isVisible: function isVisible() {\n return visible;\n },\n\n isSelected: function isSelected() {\n return selected;\n },\n\n select: function select() {\n selected = true;\n },\n\n unSelect: function unSelect() {\n selected = false;\n },\n\n change: function change(what, value) {\n switch (what) {\n case 'minify':\n {\n $minify.prop('checked', value);\n break;\n }\n case 'combine':\n {\n $combine.prop('checked', value);\n break;\n }\n case 'include':\n {\n $disableIcon.removeClass();\n $include.prop('checked', value);\n if (value) {\n $el.removeClass('disabled');\n $disableIcon.addClass('dev-icon dev-icon-cross');\n $include.attr('checked', true);\n } else {\n $el.addClass('disabled');\n $disableIcon.addClass('wdv-icon wdv-icon-refresh');\n $include.removeAttr('checked');\n }\n break;\n }\n case 'footer':\n {\n $posFooter.prop('checked', value);\n break;\n }\n }\n }\n\n };\n};\n\nexports.default = Row;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar RowsCollection = function RowsCollection() {\n var items = [];\n var currentFilter = '';\n var currentSecondaryFilter = '';\n\n return {\n push: function push(row) {\n if ((typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') {\n items.push(row);\n }\n },\n\n getItems: function getItems() {\n return items;\n },\n\n getItem: function getItem(i) {\n if (items[i]) {\n return items[i];\n }\n return false;\n },\n\n /**\n * Get a collection item by type and ID\n * @param type\n * @param id\n */\n getItemById: function getItemById(type, id) {\n var value = false;\n for (var i in items) {\n if ('wphb-file-' + type + '-' + id === items[i].getId()) {\n value = items[i];\n break;\n }\n }\n return value;\n },\n\n getVisibleItems: function getVisibleItems() {\n var visible = [];\n for (var i in items) {\n if (items[i].isVisible()) {\n visible.push(items[i]);\n }\n }\n return visible;\n },\n\n getSelectedItems: function getSelectedItems() {\n var selected = [];\n\n for (var i in items) {\n if (items[i].isVisible() && items[i].isSelected()) {\n selected.push(items[i]);\n }\n }\n\n return selected;\n },\n\n addFilter: function addFilter(filter, type) {\n if (type === 'secondary') {\n currentSecondaryFilter = filter;\n } else {\n currentFilter = filter;\n }\n },\n\n applyFilters: function applyFilters() {\n for (var i in items) {\n if (items[i]) {\n if (items[i].matchFilter(currentFilter) && items[i].matchSecondaryFilter(currentSecondaryFilter)) {\n items[i].show();\n } else {\n items[i].hide();\n }\n }\n }\n }\n };\n};\n\nexports.default = RowsCollection;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Strings internationalization\n *\n * @param str\n *\n * @returns {*|string}\n */\nvar __ = exports.__ = function __(str) {\n return wphb.strings[str] || '';\n};\n\n/**\n * Get a link to a HB screen\n *\n * @param {string} screen Screen slug\n * @returns {string}\n */\nvar getLink = exports.getLink = function getLink(screen) {\n return wphb.links[screen] || '';\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global) {var require;/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\t true ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = __webpack_require__(69);\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && \"function\" === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(68), __webpack_require__(17)))\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTimes = __webpack_require__(42),\n isArguments = __webpack_require__(62),\n isArray = __webpack_require__(63),\n isBuffer = __webpack_require__(64),\n isIndex = __webpack_require__(11),\n isTypedArray = __webpack_require__(65);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(1),\n isObjectLike = __webpack_require__(5);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(15),\n isMasked = __webpack_require__(51),\n isObject = __webpack_require__(4),\n toSource = __webpack_require__(59);\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(1),\n isLength = __webpack_require__(16),\n isObjectLike = __webpack_require__(5);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototype = __webpack_require__(12),\n nativeKeys = __webpack_require__(52);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar identity = __webpack_require__(14),\n overRest = __webpack_require__(56),\n setToString = __webpack_require__(57);\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar constant = __webpack_require__(61),\n defineProperty = __webpack_require__(9),\n identity = __webpack_require__(14);\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(7),\n baseAssignValue = __webpack_require__(8);\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(2);\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseRest = __webpack_require__(40),\n isIterateeCall = __webpack_require__(50);\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsNative = __webpack_require__(37),\n getValue = __webpack_require__(49);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(6);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(13),\n isArrayLike = __webpack_require__(3),\n isIndex = __webpack_require__(11),\n isObject = __webpack_require__(4);\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar coreJsData = __webpack_require__(45);\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(55);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(10);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)(module)))\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = __webpack_require__(34);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSetToString = __webpack_require__(41),\n shortOut = __webpack_require__(58);\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(7),\n copyObject = __webpack_require__(44),\n createAssigner = __webpack_require__(46),\n isArrayLike = __webpack_require__(3),\n isPrototype = __webpack_require__(12),\n keys = __webpack_require__(66);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsArguments = __webpack_require__(36),\n isObjectLike = __webpack_require__(5);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(2),\n stubFalse = __webpack_require__(67);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)(module)))\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsTypedArray = __webpack_require__(38),\n baseUnary = __webpack_require__(43),\n nodeUtil = __webpack_require__(53);\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(35),\n baseKeys = __webpack_require__(39),\n isArrayLike = __webpack_require__(3);\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// admin.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 29);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f3f08962be2e8bf066f2","import assign from 'lodash/assign';\n\nfunction Fetcher() {\n let fetchUrl = ajaxurl;\n let fetchNonce = wphb.nonces.HBFetchNonce;\n const actionPrefix = 'wphb_';\n const actionPrefixPro = 'wphb_pro_';\n\n function request( action, data = {}, method = 'GET' ) {\n data.nonce = fetchNonce;\n data.action = action;\n let args = { data, method };\n args.url = fetchUrl;\n let Promise = require('es6-promise').Promise;\n return new Promise( ( resolve, reject ) => {\n jQuery.ajax( args ).done( resolve ).fail( reject );\n })\n .then( ( response ) => checkStatus( response ) );\n\n }\n\n const methods = {\n /**\n * Caching module actions.\n */\n caching: {\n /**\n * Set expiration for browser caching.\n *\n * @param type File type.\n * @param value Expiry value.\n */\n setExpiration: ( type, value ) => {\n const action = actionPrefix + 'caching_set_expiration';\n return request( action, { type, value }, 'POST' );\n },\n\n /**\n * Set server type.\n *\n * @param value Server type.\n */\n setServer: ( value ) => {\n const action = actionPrefix + 'caching_set_server_type';\n return request( action, { value }, 'POST' );\n },\n\n /**\n * Reload snippet.\n *\n * @param type Server type.\n */\n reloadSnippets: ( type ) => {\n const action = actionPrefix + 'caching_reload_snippet';\n return request( action, { type }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n }\n },\n\n /**\n * CLoudflare module actions.\n */\n cloudflare: {\n\t\t\t/**\n\t\t\t * Connect to CloudFlare.\n\t\t\t *\n\t\t\t * @param step\n\t\t\t * @param formData\n\t\t\t * @param cfData\n\t\t\t */\n\t\t\tconnect: ( step, formData, cfData ) => {\n\t\t\t\tconst action = actionPrefix + 'cloudflare_connect';\n return request( action, { step, formData, cfData }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n /**\n * Set expiry for CloudFlare cache.\n *\n * @param value Expiry value.\n */\n setExpiration: ( value ) => {\n const action = actionPrefix + 'cloudflare_set_expiry';\n return request( action, { value }, 'POST' );\n },\n\n\t\t\t/**\n * Purge CloudFlare cache.\n\t\t\t */\n\t\t\tpurgeCache: () => {\n const action = actionPrefix + 'cloudflare_purge_cache';\n return request( action, {}, 'POST' );\n }\n },\n\n /**\n * Dashboard module actions.\n */\n dashboard: {\n /**\n * Toggle global minification settings for network installs.\n *\n * @param value Accepts: 'super-admins', 'false' and 'true'. Default: 'true'.\n */\n toggleMinification: ( value ) => {\n const action = actionPrefix + 'dash_toggle_network_minification';\n return request( action, { value }, 'POST' );\n },\n\n\t\t\t/**\n * Skip quick setup.\n\t\t\t */\n\t\t\tskipSetup: () => {\n const action = actionPrefix + 'dash_skip_setup';\n return request( action, {}, 'POST' );\n }\n },\n\n /**\n * Minification module actions.\n */\n minification: {\n /**\n * Toggle CDN settings.\n *\n * @param value CDN checkbox value.\n */\n toggleCDN: ( value ) => {\n const action = actionPrefix + 'minification_toggle_cdn';\n return request( action, { value }, 'POST' );\n },\n\n /**\n * Toggle minificatiojn settings on per site basis.\n *\n * @param value\n */\n toggleMinification: ( value ) => {\n const action = actionPrefix + 'minification_toggle_minification';\n return request( action, { value }, 'POST' );\n },\n\n /**\n * Start minification check.\n *\n * @param progress\n */\n startCheck: ( progress ) => {\n const action = actionPrefix + 'minification_start_check';\n return request( action, { progress }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n /**\n * Do a step in minification process.\n *\n * @param progress\n * @param step\n */\n checkStep: ( progress, step ) => {\n const action = actionPrefix + 'minification_check_step';\n return request( action, { progress, step }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n\t\t\t/**\n * Cancel minification scan.\n\t\t\t */\n\t\t\tcancelScan: function cancelScan() {\n\t\t\t\tconst action = actionPrefix + 'minification_cancel_scan';\n\t\t\t\treturn request( action, {}, 'POST' );\n\t\t\t}\n },\n\n /**\n * Performance module actions.\n */\n performance: {\n\t\t\t/**\n * Run performance test.\n\t\t\t */\n\t\t\trunTest: () => {\n const action = actionPrefix + 'performance_run_test';\n return request( action, {}, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n /**\n * Add a single email/name recipient to the reports list.\n *\n * @param email\n * @param name\n */\n addRecipient: ( email, name ) => {\n const action = actionPrefixPro + 'performance_add_recipient';\n return request( action, { email, name }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n\n },\n\n /**\n * Save reporting settings on minification page.\n *\n * @param data From data.\n */\n saveReportsSettings: ( data ) => {\n const action = actionPrefixPro + 'performance_save_reports_settings';\n return request( action, { data }, 'POST' );\n }\n }\n };\n\n assign( this, methods );\n}\n\nconst HBFetcher = new Fetcher();\nexport default HBFetcher;\n\nfunction checkStatus( response ) {\n if ( typeof response !== 'object' ) {\n response = JSON.parse( response );\n }\n if ( response.success ) {\n return response.data;\n }\n\n let data = response.data || {};\n const error = new Error( data.message || 'Error trying to fetch response from server' );\n error.response = response;\n throw error;\n}\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/utils/fetcher.js","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetTag.js\n// module id = 1\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_root.js\n// module id = 2\n// module chunks = 0","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArrayLike.js\n// module id = 3\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObject.js\n// module id = 4\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObjectLike.js\n// module id = 5\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Symbol.js\n// module id = 6\n// module chunks = 0","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_assignValue.js\n// module id = 7\n// module chunks = 0","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseAssignValue.js\n// module id = 8\n// module chunks = 0","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_defineProperty.js\n// module id = 9\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_freeGlobal.js\n// module id = 10\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIndex.js\n// module id = 11\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isPrototype.js\n// module id = 12\n// module chunks = 0","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/eq.js\n// module id = 13\n// module chunks = 0","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/identity.js\n// module id = 14\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isFunction.js\n// module id = 15\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isLength.js\n// module id = 16\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 17\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 18\n// module chunks = 0","jQuery(document).ready( function() {\n WPHB_Admin.init();\n});\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-app.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n 'use strict';\n WPHB_Admin.caching = {\n\n module: 'caching',\n selectedServer: '',\n $serverSelector: null,\n $serverInstructions: [],\n $expirySelectors: [],\n $snippets: [],\n\n init: function () {\n let self = this,\n cachingMetabox = $('#wphb-box-caching-enable'),\n cachingContent = cachingMetabox.find('.box-content'),\n cachingContentSpinner = cachingContent.find('.spinner'),\n cachingFooter = cachingMetabox.find('.box-footer');\n\n if ( wphbCachingStrings )\n self.strings = wphbCachingStrings;\n\n this.$serverSelector = $( '#wphb-server-type' );\n this.selectedServer = this.$serverSelector.val();\n //this.$spinner = $('#wphb-box-caching-enable .spinner');\n\n self.$snippets.apache = $('#wphb-code-snippet-apache').find('pre').first();\n self.$snippets.nginx = $('#wphb-code-snippet-nginx').find('pre').first();\n\n let instructionsList = $( '.wphb-server-instructions' );\n instructionsList.each( function() {\n self.$serverInstructions[ $(this).data('server') ] = $(this);\n });\n\n let expirySelectors = $( '.wphb-expiry-select' );\n\n expirySelectors.each( function() {\n const type = $(this).data('type');\n if ( type ) {\n $(this).change( function() {\n //self.$spinner.css( 'visibility', 'visible' );\n cachingContent.find('.wphb-content').hide();\n cachingFooter.hide();\n cachingContentSpinner.fadeIn();\n $('.wphb-notice').hide();\n\n // Expiration selector has changed\n ( function( element ) {\n const value = $( element ).val();\n // Change the plugin settings\n Fetcher.caching.setExpiration( type, value )\n .then( () => {\n // And reload the code snippet\n self.reloadSnippets();\n });\n return false;\n })( this );\n });\n }\n\n });\n\n this.showServerInstructions( this.selectedServer );\n\n this.$serverSelector.change( function() {\n let value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions( value );\n self.setServer(value);\n self.selectedServer = value;\n });\n\n $( '#toggle-apache-instructions').click( function( e ) {\n e.preventDefault();\n $('.apache-instructions').slideToggle();\n });\n\n $( '#toggle-litespeed-instructions').click( function( e ) {\n e.preventDefault();\n $('.litespeed-instructions').slideToggle();\n });\n\n\n return this;\n },\n\n setServer: function( value ) {\n Fetcher.caching.setServer( value );\n },\n\n hideCurrentInstructions: function() {\n let selected = this.selectedServer;\n if ( this.$serverInstructions[ selected ] ) {\n this.$serverInstructions[ selected ].hide();\n }\n },\n\n showServerInstructions: function( server ) {\n if ( typeof this.$serverInstructions[ server ] !== 'undefined' ) {\n this.$serverInstructions[ server ].show();\n }\n\n if ( 'apache' === server || 'LiteSpeed' === server ) {\n $( '#enable-cache-wrap').show();\n }\n else {\n $( '#enable-cache-wrap').hide();\n }\n },\n\n reloadSnippets: function() {\n let self = this;\n let stop = false;\n for ( let i in self.$snippets ) {\n if ( self.$snippets.hasOwnProperty( i ) ) {\n Fetcher.caching.reloadSnippets( i )\n .then( ( response ) => {\n if ( stop ) {\n return;\n }\n\n self.$snippets[response.type].text( response.code );\n\n // Make sure that we only do things when server displayed is the processed one\n if ( response.type !== self.selectedServer ) {\n return;\n }\n\n if ( 'apache' === response.type && response.updatedFile ) {\n $( '#wphb-notice-code-snippet-htaccess-updated' ).show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n } else if ( 'apache' === response.type && self.strings.cacheEnabled && ! response.updatedFile ) {\n $( '#wphb-notice-code-snippet-htaccess-error' ).show();\n location.href = self.strings.htaccessErrorURL;\n } else {\n $( '#wphb-notice-code-snippet-updated' ).show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n }\n //self.$spinner.css( 'visibility', 'hidden' );\n });\n }\n }\n }\n };\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-caching.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n WPHB_Admin.cloudflare = {\n module: 'cloudflare',\n $cfSelector: false,\n $spinner: false,\n\n init: function () {\n this.$spinner = $('.wphb-spinner');\n this.$cfSelector = $('#wphb-caching-cloudflare-summary-set-expiry');\n let self = this;\n if ( wphb.cloudflare.is.connected ) {\n this.$cfSelector.change( function() {\n self.setExpiry.call( self, [this] );\n } );\n }\n\n return this;\n },\n\n setExpiry: function( selector ) {\n this.displaySpinner();\n const value = $(selector).val();\n Fetcher.cloudflare.setExpiration( value )\n .then( () => {\n window.location.reload();\n });\n },\n\n displaySpinner: function() {\n this.$spinner.css( 'visibility', 'visible' );\n }\n };\n}( jQuery ) );\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-cloudflare.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n WPHB_Admin.DashboardCloudFlare = {\n init: function( settings ) {\n this.currentStep = settings.currentStep;\n this.data = settings;\n this.email = settings.email;\n this.apiKey = settings.apiKey;\n this.$stepsContainer = $('#cloudflare-steps');\n this.$infoBox = $('#cloudflare-info');\n this.$spinner = $( '.cloudflare-spinner' );\n this.$deactivateButton = $('#wphb-box-dashboard-cloudflare').find('.box-title .buttons');\n\n this.renderStep( this.currentStep );\n\n $('body').on( 'click', '.cloudflare-clear-cache .button', function(e ) {\n e.preventDefault();\n this.purgeCache.apply( $(e.target), [this] );\n }.bind(this));\n\n },\n\n purgeCache: function( self ) {\n // Show spinner\n\t\t\tconst $button = this;\n\t\t\t$button.attr( 'disabled', true );\n\t\t\tself.showSpinner();\n\n Fetcher.cloudflare.purgeCache()\n .then( () => {\n // Show notice\n\t\t\t\t\tconst $notice = $('#wphb-notice-cloudflare-purge-cache');\n\t\t\t\t\twindow.scrollTo(0, 0);\n\t\t\t\t\t$notice.slideDown();\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$notice.slideUp();\n\t\t\t\t\t}, 5e3);\n // Remove spinner\n\t\t\t\t\t$button.removeAttr( 'disabled' );\n\t\t\t\t\tself.hideSpinner();\n });\n },\n\n renderStep: function( step ) {\n const template = WPHB_Admin.DashboardCloudFlare.template( '#cloudflare-step-' + step );\n const content = template( this.data );\n const self = this;\n\n if ( content ) {\n this.currentStep = step;\n this.$stepsContainer\n .hide()\n .html( template( this.data ) )\n .fadeIn()\n .find( 'form' )\n .on( 'submit', function( e ) {\n e.preventDefault();\n self.submitStep.call( self, $(this) );\n });\n\n this.$spinner = this.$stepsContainer.find( '.cloudflare-spinner' );\n }\n\n this.bindEvents();\n },\n\n bindEvents: function() {\n const $howToInstructions = $('#cloudflare-how-to');\n\n $howToInstructions.hide();\n\n $('#cloudflare-how-to-title > a').click( function( e ) {\n e.preventDefault();\n $howToInstructions.toggle();\n });\n\n this.$stepsContainer.find( 'select' ).each( function() {\n\t\t\t\twindow.WDP.wpmuSelect( this );\n });\n\n if ( 'final' === this.currentStep ) {\n this.$deactivateButton.removeClass( 'hidden' );\n } else {\n this.$deactivateButton.addClass( 'hidden' );\n }\n },\n\n emptyInfoBox: function() {\n this.$infoBox.html('');\n this.$infoBox.removeClass();\n },\n\n showInfoBox: function( message ) {\n this.$infoBox.addClass( 'wphb-notice' );\n this.$infoBox.addClass( 'wphb-notice-error' );\n this.$infoBox.text( message );\n },\n\n showSpinner: function() {\n this.$spinner.css( 'visibility', 'visible' );\n },\n\n hideSpinner: function() {\n this.$spinner.css( 'visibility', 'hidden' );\n },\n\n submitStep: function( $form ) {\n\t\t\tconst self = this;\n\n\t\t\t$form.find( 'input[type=submit]' ).attr( 'disabled', 'true' );\n\t\t\tthis.emptyInfoBox();\n\t\t\tthis.showSpinner();\n\n\t\t\tFetcher.cloudflare.connect( this.currentStep, $form.serialize(), this.data )\n .then( ( response ) => {\n\t\t\t\t\tself.data = response.newData;\n\t\t\t\t\tself.renderStep( response.nextStep );\n\n\t\t\t\t\tif ( response.nextStep === 'final' ) {\n\t\t\t\t\t\twindow.location.href = response.redirect;\n\t\t\t\t\t}\n })\n\t\t\t\t.catch( ( error ) => {\n\t\t\t\t\tself.showInfoBox( error );\n\t\t\t\t});\n\n\t\t\t$form.find( 'input[type=submit]' ).removeAttr( 'disabled' );\n\t\t\tself.hideSpinner();\n }\n };\n\n WPHB_Admin.DashboardCloudFlare.template = _.memoize(function ( id ) {\n let compiled,\n options = {\n evaluate: /<#([\\s\\S]+?)#>/g,\n interpolate: /\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/g,\n escape: /\\{\\{([^\\}]+?)\\}\\}(?!\\})/g,\n variable: 'data'\n };\n\n return function ( data ) {\n _.templateSettings = options;\n compiled = compiled || _.template( $( id ).html() );\n return compiled( data );\n };\n });\n}(jQuery));\n\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-dashboard-cloudflare.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n WPHB_Admin.dashboard = {\n module: 'dashboard',\n\n init: function() {\n const self = this;\n\n\t\t\tif (wphbDashboardStrings)\n\t\t\t\tthis.strings = wphbDashboardStrings;\n\n $('#wphb-activate-minification').change( function() {\n const value = $(this).val();\n Fetcher.dashboard.toggleMinification( value )\n .then( () => {\n // If disabled, uncheck CDN checkbox and disable it.\n const CDNcheckbox = $('input[name=\"use_cdn\"]');\n if ( 'false' === value ) {\n CDNcheckbox.prop( 'checked', false );\n CDNcheckbox.prop( 'disabled', true );\n } else {\n CDNcheckbox.prop( 'disabled', false );\n }\n self.showNotice();\n });\n });\n\n $('#use_cdn').change( function() {\n const value = $(this).is(':checked');\n Fetcher.minification.toggleCDN( value )\n .then( () => {\n self.showNotice();\n });\n });\n\n $('.wphb-performance-report-item').click( function() {\n const url = $(this).data( 'performance-url' );\n if ( url ) {\n location.href = url;\n }\n });\n return this;\n },\n\n /**\n * Notice on settings update.\n */\n showNotice: function () {\n const notice = $('#wphb-notice-minification-settings-updated');\n notice.slideDown();\n setTimeout( function() {\n notice.slideUp();\n }, 5000 );\n },\n\n\t\t/**\n * Run quick setup.\n\t\t */\n\t\tstartQuickSetup: function () {\n // Show quick setup modal\n\t\t\twindow.WDP.showOverlay( '#wphb-quick-setup-modal', { class: 'wphb-modal small wphb-quick-setup-modal no-close' } );\n },\n\n\t\t/**\n * Skip quick setup.\n\t\t */\n\t\tskipSetup: function () {\n Fetcher.dashboard.skipSetup()\n .then( () => {\n window.location.reload(true);\n });\n },\n\n\t\t/**\n * Run performance test after quick setup.\n\t\t */\n\t\trunPerformanceTest: function() {\n\t\t\t// Show quick setup modal\n\t\t\twindow.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' } );\n\n\t\t\t// Run performance test\n\t\t\tconst module = WPHB_Admin.getModule('performance');\n\t\t\tmodule.performanceTest( this.strings.finishedTestURLsLink );\n }\n };\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-dashboard.js","import Fetcher from './utils/fetcher';\n\n(function($) {\n WPHB_Admin.gzip = {\n module: \"gzip\",\n selectedServer: \"\",\n $serverSelector: null,\n $serverInstructions: [],\n\n init: function() {\n const self = this;\n\n this.$serverSelector = $(\"#wphb-server-type\");\n this.selectedServer = this.$serverSelector.val();\n let instructionsList = $(\".wphb-server-instructions\");\n instructionsList.each(function() {\n self.$serverInstructions[$(this).data(\"server\")] = $(this);\n });\n this.showServerInstructions(this.selectedServer);\n this.$serverSelector.change(function() {\n const value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions(value);\n self.setServer(value);\n self.selectedServer = value;\n });\n $(\"#toggle-apache-instructions\").click(function(e) {\n e.preventDefault();\n $(\".apache-instructions\").toggle();\n });\n $(\"#toggle-litespeed-instructions\").click(function(e) {\n e.preventDefault();\n $(\".litespeed-instructions\").toggle();\n });\n return this;\n },\n\n hideCurrentInstructions: function() {\n const selected = this.selectedServer;\n if (this.$serverInstructions[selected]) {\n this.$serverInstructions[selected].hide();\n }\n },\n\n showServerInstructions: function(server) {\n if (typeof this.$serverInstructions[server] !== \"undefined\") {\n this.$serverInstructions[server].show();\n }\n if (\"apache\" === server || 'LiteSpeed' === server) {\n $(\"#enable-cache-wrap\").show();\n } else {\n $(\"#enable-cache-wrap\").hide();\n }\n },\n\n setServer: function( value ) {\n Fetcher.caching.setServer( value );\n },\n };\n})(jQuery);\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-gzip.js","( function( $ ) {\n 'use strict';\n\n let WPHB_Admin = {\n modules: [],\n // Common functionality to all screens\n init: function() {\n\n\t\t\t$('body').on('change', '.mobile-nav', function () {\n\t\t\t\tlet url = $(this).val();\n\t\t\t\tif (url.length > 0) {\n\t\t\t\t\tlocation.href = url;\n\t\t\t\t}\n\t\t\t});\n\n function updatePerformanceGraph($wrap){\n let $item = $wrap.find('.wphb-score-result-label'),\n val = parseInt($item.text(), 10) || 100,\n $circle = $wrap.find(\".wphb-score-graph-result\"),\n r, c, pct\n ;\n r = $circle.attr('r');\n c = Math.PI*(r*2);\n\n if (val < 0) { val = 0;}\n if (val > 100) { val = 100;}\n\n pct = ((100-val)/100)*c;\n\n $circle.css({ strokeDashoffset: pct});\n }\n\n function updatePerformanceResultsGraphs(){\n\n // Update Overall Score\n $(\".wphb-performance-report-overall-score\").each(function(){\n updatePerformanceGraph($(this));\n });\n\n // Update Current Score\n $(\".wphb-performance-report-current-score\").each(function(){\n updatePerformanceGraph($(this));\n });\n\n // Update All Scores\n $(\".wphb-performance-report-item-score\").each(function(){\n updatePerformanceGraph($(this));\n });\n\n }\n window.register_events_performance = function(){\n setTimeout(updatePerformanceResultsGraphs, 500);\n };\n $(function(){ setTimeout(updatePerformanceResultsGraphs, 500); });\n\n },\n initModule: function( module ) {\n if ( this.hasOwnProperty( module ) ) {\n this.modules[ module ] = this[ module ].init();\n return this.modules[ module ];\n }\n\n return {};\n },\n getModule: function( module ) {\n if ( typeof this.modules[ module ] !== 'undefined' )\n return this.modules[ module ];\n else\n return this.initModule( module );\n }\n };\n \n\n WPHB_Admin.utils = {\n\n membershipModal: {\n open: function() {\n $( '#wphb-upgrade-membership-modal-link').trigger( 'click' );\n }\n },\n\n post: function( data, module ) {\n data.action = 'wphb_ajax';\n data.module = module;\n return $.ajax({\n url: ajaxurl,\n method: 'POST',\n data: data\n });\n }\n };\n\n WPHB_Admin.notices = {\n\n init: function() {\n $( '.wphb-notice:not(.notice) a.wphb-dismiss').click( function( e ) {\n e.preventDefault();\n let id = $(this).data( 'id' );\n let nonce = $(this).data( 'nonce' );\n\n $(this).parent( '.error' ).hide();\n });\n }\n };\n\n window.WPHB_Admin = WPHB_Admin;\n\n}( jQuery ) );\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-main.js","import Fetcher from './utils/fetcher';\nimport { __, getLink } from './utils/helpers';\nimport Row from './minification/Row';\nimport RowsCollection from './minification/RowsCollection';\n\n( function( $ ) {\n 'use strict';\n\n WPHB_Admin.minification = {\n\n $checkFilesButton: null,\n $checkFilesResultsContainer : null,\n module: 'minification',\n checkURLSList: null,\n checkedURLS: 0,\n $spinner: null,\n\n init: function() {\n const self = this;\n\n // Filter action button on Minification page\n $('#wphb-minification-filter-button').on('click', function(e) {\n e.preventDefault();\n $('#wphb-minification-filter').toggle('slow');\n });\n\n // Check files button\n this.$checkFilesButton = $( '#check-files' );\n this.$disableMinification = $('#wphb-disable-minification');\n this.$spinner = $('.spinner');\n\n if ( this.$checkFilesButton.length ) {\n this.$checkFilesButton.click( function( e ) {\n e.preventDefault();\n\t\t\t\t\twindow.WDP.showOverlay(\"#check-files-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' } );\n $(this).attr('disabled', true);\n self.checkFiles( getLink( 'minification' ) );\n });\n }\n\n $('.wphb-discard').click( function(e) {\n e.preventDefault();\n\n if ( confirm( __( 'discardAlert' ) ) ) {\n location.reload();\n }\n return false;\n\n });\n\n $( '.wphb-enqueued-files input' ).on( 'change', function() {\n $('.wphb-discard').attr( 'disabled', false );\n });\n\n $('#use_cdn').change( function() {\n const cdn_value = $(this).is(':checked');\n Fetcher.minification.toggleCDN( cdn_value )\n .then( () => {\n const notice = $('#wphb-notice-minification-advanced-settings-updated');\n notice.slideDown();\n setTimeout( function() {\n notice.slideUp();\n }, 5000 );\n });\n });\n\n this.$disableMinification.change( function() {\n const value = $(this).is(':checked');\n\n self.$spinner.css( 'visibility', 'visible' );\n\n if ( self.timer && value ) {\n clearTimeout( self.timer );\n self.$spinner.css( 'visibility', 'hidden' );\n }\n\n self.timer = setTimeout( function() {\n Fetcher.minification.toggleMinification( value )\n .then( () => {\n location.reload();\n });\n }, 3000 );\n\n\n });\n\n this.rowsCollection = new WPHB_Admin.minification.RowsCollection();\n\n const rows = $('.wphb-border-row');\n\n rows.each( function( index, row ) {\n let _row;\n if ( $(row).data('filter-secondary') ) {\n _row = new WPHB_Admin.minification.Row( $(row), $(row).data('filter'), $(row).data('filter-secondary') );\n }\n else {\n _row = new WPHB_Admin.minification.Row( $(row), $(row).data('filter') );\n }\n self.rowsCollection.push( _row );\n });\n\n $('#wphb-s').keyup( function() {\n self.rowsCollection.addFilter( $(this).val(), 'primary' );\n self.rowsCollection.applyFilters();\n });\n\n $('#wphb-secondary-filter').change( function() {\n self.rowsCollection.addFilter( $(this).val(), 'secondary' );\n self.rowsCollection.applyFilters();\n });\n\n $('.filter-toggles').change( function() {\n const element = $(this);\n const what = element.data('toggles');\n const value = element.prop( 'checked' );\n const visibleItems = self.rowsCollection.getVisibleItems();\n\n for ( let i in visibleItems ) {\n visibleItems[i].change( what, value );\n }\n });\n\n // Files selectors\n const filesList = $('input.wphb-minification-file-selector');\n filesList.click( function() {\n const $this = $( this );\n const element = self.rowsCollection.getItemById( $this.data( 'type' ), $this.data( 'handle' ) );\n if ( ! element ) {\n return;\n }\n\n if ( $this.is( ':checked' ) ) {\n element.select();\n }\n else {\n element.unSelect();\n }\n });\n\n const selectAll = $('#minification-bulk-file');\n selectAll.click( function() {\n const $this = $( this );\n let items = self.rowsCollection.getItems();\n for ( let i in items ) {\n if ( items.hasOwnProperty( i ) ) {\n if ( $this.is( ':checked' ) ) {\n items[i].select();\n }\n else {\n items[i].unSelect();\n }\n }\n }\n });\n\n // Include/exclude file checkbox\n $('.toggle-cross').on('click', function() {\n const $this = $(this);\n const checkbox = $this.find( 'input.toggle-include' );\n const row = self.rowsCollection.getItemById( $this.data( 'type' ), $this.data( 'handle' ) );\n // Mark the item as include or not in the rows list\n if ( row ) {\n row.change( 'include', ! checkbox.prop( 'checked' ) );\n row.getElement().find( 'input:not(.toggle-include)' ).prop('disabled', ! checkbox.prop( 'checked' ) );\n }\n });\n\n // Handle two CDN checkboxes on Minification page\n const checkboxes = $(\"input[type=checkbox][name=use_cdn]\");\n checkboxes.change( function() {\n const checkedState = $(this).prop('checked');\n\n checkboxes.each( function() {\n this.checked = checkedState;\n });\n });\n\n /* Show details of minification row on mobile devices */\n $('body').on('click', '.wphb-minification-file-details', function() {\n if ( window.innerWidth < 783 ) {\n $(this).parent().find('.wphb-minification-row-details').toggle('slow');\n }\n });\n\n /*\n Catch window resize and revert styles for responsive divs\n 1/4 of a second should be enough to trigger during device rotations (from portrait to landscape mode)\n */\n let minification_resize_rows = _.debounce(function() {\n\n if ( window.innerWidth >= 783 ) {\n $('.wphb-minification-row-details').css('display', 'flex');\n } else {\n $('.wphb-minification-row-details').css('display', 'none');\n }\n\n }, 250);\n\n window.addEventListener('resize', minification_resize_rows);\n\n return this;\n },\n\n checkFiles: function( redirect ) {\n const self = this;\n\n if ( typeof redirect === 'undefined' )\n redirect = false;\n\n if ( ! self.minificationStarted ) {\n // Store the progress in session storage to persist during page reloads\n // If there is no previous value, we init one with 10%\n if ( sessionStorage.getItem('progress') === null ) {\n sessionStorage.setItem('progress', 10);\n }\n\n // Update progress bar\n const progress = sessionStorage.getItem('progress');\n this.updateProgressBar( progress );\n\n // Send an AJAX request that will flag the check files as started\n Fetcher.minification.startCheck( progress )\n .then( ( response ) => {\n // Set the number of steps to be used in percentage count. Only if not set already.\n if ( ( typeof response.steps !== 'undefined' ) && ( sessionStorage.getItem('steps') === null ) ) {\n sessionStorage.setItem('steps', response.steps);\n }\n\n self.minificationStarted = true;\n self.checkFiles( redirect );\n });\n }\n else {\n const progress = sessionStorage.getItem('progress');\n const step = Math.round( 80 / sessionStorage.getItem('steps') );\n Fetcher.minification.checkStep( progress, step )\n .then( ( response ) => {\n if ( typeof response.finished !== 'undefined' ) {\n // Finished\n if ( response.finished && redirect ) {\n // Clear session storage\n sessionStorage.clear();\n\n // Update progress bar\n this.updateProgressBar( 100 );\n\n // Show enable cdn modal only for members\n if ( true === response.show_cdn && $('#enable-cdn-modal').length ) {\n WDP.showOverlay( '#enable-cdn-modal', { class: 'wphb-modal small wphb-progress-modal no-close' } );\n } else {\n window.location.href = redirect;\n }\n }\n // Next step\n else if ( ! response.finished ) {\n // Store the progress in session storage to persist during page reloads\n let progress = parseInt( sessionStorage.getItem('progress') ) + Math.round( 80 / sessionStorage.getItem('steps') );\n sessionStorage.setItem( 'progress', progress );\n\n // Update progress bar.\n this.updateProgressBar( progress );\n\n // Wait 3 seconds before calling again\n window.setTimeout( function() {\n self.checkFiles( redirect );\n }, 3000);\n }\n } else {\n // Error\n window.location.href = redirect;\n }\n });\n } // End else\n\n }, // End checkFiles\n\n updateProgressBar: function( progress, cancel = false ) {\n if ( progress > 100 ) {\n progress = 100;\n }\n // Update progress bar\n $('.wphb-scan-progress .wphb-scan-progress-text span').text( progress + '%' );\n if ( progress >= 90 ) {\n $('.wphb-progress-state .wphb-progress-state-text').text('Finalizing...');\n }\n if ( cancel ) {\n\t\t\t\t$('.wphb-progress-state .wphb-progress-state-text').text('Cancelling...');\n }\n $('.wphb-scan-progress .wphb-scan-progress-bar span').width( progress + '%' );\n },\n\n cancelScan: function() {\n Fetcher.minification.cancelScan()\n .then( () => {\n\t\t\t\t\t// Clear session storage\n\t\t\t\t\tsessionStorage.clear();\n\n\t\t\t\t\tthis.updateProgressBar( 0, true );\n\n\t\t\t\t\t// Reload page\n window.location.href = getLink( 'minification' );\n });\n }\n\n }; // End WPHB_Admin.minification\n\n WPHB_Admin.minification.Row = Row;\n WPHB_Admin.minification.RowsCollection = RowsCollection;\n\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-minification.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n 'use strict';\n WPHB_Admin.performance = {\n\n module: 'performance',\n iteration: 0,\n progress: 0,\n\n init: function () {\n\n let self = this;\n let body = $('body');\n\n if (wphbPerformanceStrings)\n this.strings = wphbPerformanceStrings;\n\n this.$runTestButton = $('#run-performance-test');\n\n let performanceReportTable = $(\".performance-report-table\");\n\n performanceReportTable.off('click', 'button');\n performanceReportTable.on('click', '.wphb-performance-report-item-cta .additional-content-opener' && 'tr.wphb-performance-report-item', function (e) {\n e.preventDefault();\n\n let getParentPerformanceItem = $(this).closest(\".wphb-performance-report-item\"),\n getNextAdditionalContentRow = getParentPerformanceItem.nextUntil(\".wphb-performance-report-item\");\n\n getNextAdditionalContentRow.toggleClass(\"wphb-performance-report-item-additional-content-opened\");\n\n if (getNextAdditionalContentRow.hasClass(\"wphb-performance-report-item-additional-content-opened\")) {\n getParentPerformanceItem.addClass(\"wphb-performance-report-item-opened\");\n } else {\n getParentPerformanceItem.removeClass(\"wphb-performance-report-item-opened\");\n }\n\n });\n\n if (this.$runTestButton.length) {\n this.$runTestButton.click(function (e) {\n e.preventDefault();\n\t\t\t\t\twindow.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' } );\n $(this).attr('disabled', true);\n self.performanceTest(self.strings.finishedTestURLsLink);\n });\n }\n\n // If a hash is present in URL, let's open the rule extra content\n const hash = window.location.hash;\n if (hash) {\n const row = $(hash);\n if (row.length) {\n row.find('.trigger-additional-content').trigger('click');\n }\n\n }\n\n // Schedule show/hide day of week\n $('select[name=\"email-frequency\"]').change(function () {\n if ( '1' === $(this).val() ) {\n $(this).closest('.schedule-box').find('div.days-container').hide();\n } else {\n $(this).closest('.schedule-box').find('div.days-container').show();\n }\n }).change();\n\n // Remove recipient\n body.on('click', '.wphb-remove-recipient', function (e) {\n e.preventDefault();\n $(this).closest('.recipient').remove();\n $('.scan-settings').find(\"input[id='scan_recipient'][value=\" + $(this).attr('data-id') + \"]\").remove();\n });\n\n // Add recipient\n $('#add-receipt').click(function () {\n const email = $(\"#wphb-username-search\").val();\n const name = $(\"#wphb-first-name\").val();\n Fetcher.performance.addRecipient( email, name )\n .then( ( response ) => {\n const user_row = $('<div class=\"recipient\"/>');\n\n const img = $('<img/>').attr({\n 'src': response.avatar,\n 'width': '30'\n });\n const name = $('<span/>').html(response.name);\n\n user_row.append('<span class=\"name\"/>');\n user_row.find('.name').append( img, name);\n\n\n user_row.append($('<span class=\"email\"/>').html(email));\n user_row.append($('<a/>').attr({\n 'data-id': response.user_id,\n 'class': 'remove float-r wphb-remove-recipient',\n 'href': '#',\n 'alt': self.strings.removeButtonText\n }).html('<i class=\"dev-icon dev-icon-cross\"></i>'));\n\n $('<input>').attr({\n type: 'hidden',\n id: 'scan_recipient',\n name: 'email-recipients[]',\n value: JSON.stringify( { email: response.email, name: response.name } )\n }).appendTo(user_row);\n\n $('.receipt .recipients').append(user_row);\n $(\"#wphb-username-search\").val('');\n $(\"#wphb-first-name\").val('');\n })\n .catch( ( error ) => {\n alert( error.message );\n } );\n return false;\n });\n\n // Save report settings\n body.on('submit', '.scan-frm', function (e) {\n e.preventDefault();\n const form_data = $(this).serialize();\n let that = $(this);\n\n that.find('.button').attr('disabled', 'disabled');\n\n Fetcher.performance.saveReportsSettings( form_data )\n .then( () => {\n that.find('.button').removeAttr('disabled');\n self.showUpdateMessage();\n });\n return false;\n });\n\n return this;\n\n },\n\n showUpdateMessage: function () {\n const notice = $('#wphb-notice-performance-report-settings-updated');\n window.scrollTo(0,0);\n notice.slideDown();\n setTimeout( function() {\n notice.slideUp();\n }, 5000 );\n },\n\n\t\tperformanceTest: function ( redirect ) {\n\t\t\tconst self = this;\n\n if ( typeof redirect === 'undefined' )\n redirect = false;\n\n // Update progress bar\n self.updateProgressBar();\n\n Fetcher.performance.runTest()\n .then( ( response ) => {\n\t\t\t\t\tif ( ! response.finished ) {\n\t\t\t\t\t\t// Try again 5 seconds later\n\t\t\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t\t\tself.performanceTest( redirect );\n\t\t\t\t\t\t}, 5000);\n\t\t\t\t\t} else if ( redirect ) {\n window.location = redirect;\n\t\t\t\t\t}\n });\n },\n\n updateProgressBar: function() {\n\t\t\tif ( this.progress < 90 ) {\n\t\t\t\tthis.progress += 35;\n\t\t\t}\n\t\t\tif ( this.progress > 100 ) {\n\t\t\t\tthis.progress = 90;\n\t\t\t}\n\t\t\t$('.wphb-scan-progress .wphb-scan-progress-text span').text( this.progress + '%' );\n\t\t\t$('.wphb-scan-progress .wphb-scan-progress-bar span').attr( 'style', 'width:' + this.progress + '%' );\n }\n };\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-performance.js","( function( $ ) {\n WPHB_Admin.uptime = {\n module: 'uptime',\n $dataRangeSelector: null,\n chartData: null,\n timer:null,\n $spinner: null,\n init: function() {\n this.$spinner = $('.spinner');\n this.strings = wphbUptimeStrings;\n this.$dataRangeSelector = $( '#wphb-uptime-data-range' );\n this.chartData = $('#uptime-chart-json').val();\n this.$disableUptime = $('#wphb-disable-uptime');\n\n this.$dataRangeSelector.change( function() {\n window.location.href = $(this).find( ':selected' ).data( 'url' );\n });\n\n var self = this;\n this.$disableUptime.change( function() {\n self.$spinner.css( 'visibility', 'visible' );\n var value = $(this).is(':checked');\n if ( value && self.timer ) {\n clearTimeout( self.timer );\n self.$spinner.css( 'visibility', 'hidden' );\n }\n else {\n // you have 3 seconds to change your mind\n self.timer = setTimeout( function() {\n location.href = self.strings.disableUptimeURL;\n }, 3000 );\n }\n\n return;\n });\n\n this.drawChart();\n\n /* Re-check Uptime status */\n $('#uptime-re-check-status').on( 'click', function(e){\n e.preventDefault();\n location.reload();\n });\n },\n\n drawChart: function() {\n var data = new google.visualization.DataTable();\n data.addColumn('datetime', 'Day');\n data.addColumn('number', 'Response Time (ms)');\n\n var chart_array = JSON.parse( this.chartData );\n for (var i = 0; i < chart_array.length; i++) {\n chart_array[i][0] = new Date( chart_array[i][0] );\n chart_array[i][1] = Math.round( chart_array[i][1] );\n\n /* brings the graph below the x axis */\n if ( Math.round( chart_array[i][1] ) == 0 ) {\n chart_array[i][1] = -100;\n }\n\n }\n\n data.addRows(chart_array);\n\n var options = {\n chartArea: {\n left: 80,\n top: 20,\n width: '90%',\n height: '90%'\n },\n colors: ['#24ADE5'],\n curveType: 'function',\n /*interpolateNulls: true,*/\n legend: { position: 'none' },\n vAxis: {\n format: '#,### ms',\n viewWindow: { min: 0 } /* don't display negative values */\n },\n tooltip: { isHtml: true },\n series: {\n 0: { axis: 'Resp' }\n },\n axes: {\n y: {\n Resp: { label: 'Response Time (ms)' }\n }\n }\n };\n\n var chart = new google.visualization.LineChart(document.getElementById('uptime-chart'));\n chart.draw(data, options);\n\n $(window).resize(function(){\n chart.draw(data, options);\n });\n }\n };\n}(jQuery));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-uptime.js","require('./admin-main.js');\nrequire('./admin-performance.js');\nrequire('./admin-gzip.js');\nrequire('./admin-caching.js');\nrequire('./admin-minification.js');\nrequire('./admin-dashboard.js');\nrequire('./admin-dashboard-cloudflare.js');\nrequire('./admin-uptime.js');\nrequire('./admin-cloudflare.js');\nrequire('./admin-app.js');\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/index.js","const Row = ( _element, _filter, _filter_sec ) => {\n let $el = _element,\n filter = _filter.toLowerCase(),\n filterSecondary = false,\n selected = false,\n visible = true;\n\n const $include = $el.find( '.toggle-include' ),\n $combine = $el.find( '.toggle-combine' ),\n $minify = $el.find( '.toggle-minify' ),\n $posFooter = $el.find( '.toggle-position-footer' ),\n $disableIcon = $el.find( '.toggle-cross > i' );\n\n if ( _filter_sec ) {\n filterSecondary = _filter_sec.toLowerCase();\n }\n\n return {\n hide: function() {\n $el.addClass( 'out-of-filter' );\n visible = false;\n },\n\n show: function() {\n $el.removeClass( 'out-of-filter' );\n visible = true;\n },\n\n getElement: function() {\n return $el;\n },\n\n getId: function() {\n return $el.attr( 'id' );\n },\n\n getFilter: function() {\n return filter;\n },\n\n matchFilter: function( text ) {\n if ( text === '' ) {\n return true;\n }\n\n text = text.toLowerCase();\n return filter.search( text ) > - 1;\n },\n\n matchSecondaryFilter: function( text ) {\n if ( text === '' ) {\n return true;\n }\n\n if ( ! filterSecondary ) {\n return false;\n }\n\n text = text.toLowerCase();\n return filterSecondary === text;\n },\n\n isVisible: function() {\n return visible;\n },\n\n isSelected: function() {\n return selected;\n },\n\n select: function() {\n selected = true;\n },\n\n unSelect: function() {\n selected = false;\n },\n\n change: function( what, value ) {\n switch ( what ) {\n case 'minify': {\n $minify.prop( 'checked', value );\n break;\n }\n case 'combine': {\n $combine.prop( 'checked', value );\n break;\n }\n case 'include': {\n $disableIcon.removeClass();\n $include.prop( 'checked', value );\n if ( value ) {\n $el.removeClass( 'disabled' );\n $disableIcon.addClass( 'dev-icon dev-icon-cross' );\n $include.attr( 'checked', true );\n } else {\n $el.addClass( 'disabled' );\n $disableIcon.addClass( 'wdv-icon wdv-icon-refresh' );\n $include.removeAttr( 'checked' );\n }\n break;\n }\n case 'footer': {\n $posFooter.prop( 'checked', value );\n break;\n }\n }\n }\n\n };\n};\n\nexport default Row;\n\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/minification/Row.js","const RowsCollection = () => {\n let items = [];\n let currentFilter = '';\n let currentSecondaryFilter = '';\n\n return {\n push: function( row ) {\n if ( typeof row === 'object' ) {\n items.push( row );\n }\n },\n\n getItems: function() {\n return items;\n },\n\n getItem: function( i ) {\n if ( items[i] ) {\n return items[i];\n }\n return false;\n },\n\n /**\n * Get a collection item by type and ID\n * @param type\n * @param id\n */\n getItemById: function( type, id ) {\n let value = false;\n for ( let i in items ) {\n if ( 'wphb-file-' + type + '-' + id === items[i].getId() ) {\n value = items[i];\n break;\n }\n }\n return value;\n },\n\n getVisibleItems: function() {\n let visible = [];\n for ( let i in items ) {\n if ( items[i].isVisible() ) {\n visible.push( items[i] );\n }\n }\n return visible;\n },\n\n getSelectedItems: function() {\n let selected = [];\n\n for ( let i in items ) {\n if ( items[i].isVisible() && items[i].isSelected() ) {\n selected.push( items[i] );\n }\n }\n\n return selected;\n },\n\n addFilter: function( filter, type ) {\n if ( type === 'secondary' ) {\n currentSecondaryFilter = filter;\n }\n else {\n currentFilter = filter;\n }\n },\n\n applyFilters: function() {\n for ( let i in items ) {\n if ( items[i] ) {\n if ( items[i].matchFilter( currentFilter ) && items[i].matchSecondaryFilter( currentSecondaryFilter ) ) {\n items[i].show();\n }\n else {\n items[i].hide();\n }\n }\n\n }\n }\n };\n};\n\nexport default RowsCollection;\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/minification/RowsCollection.js","/**\n * Strings internationalization\n *\n * @param str\n *\n * @returns {*|string}\n */\nexport const __ = ( str ) => {\n return wphb.strings[ str ] || '';\n};\n\n/**\n * Get a link to a HB screen\n *\n * @param {string} screen Screen slug\n * @returns {string}\n */\nexport const getLink = ( screen ) => {\n return wphb.links[ screen ] || '';\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/utils/helpers.js","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es6-promise/dist/es6-promise.js\n// module id = 33\n// module chunks = 0","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_apply.js\n// module id = 34\n// module chunks = 0","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayLikeKeys.js\n// module id = 35\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsArguments.js\n// module id = 36\n// module chunks = 0","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsNative.js\n// module id = 37\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsTypedArray.js\n// module id = 38\n// module chunks = 0","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseKeys.js\n// module id = 39\n// module chunks = 0","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseRest.js\n// module id = 40\n// module chunks = 0","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseSetToString.js\n// module id = 41\n// module chunks = 0","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseTimes.js\n// module id = 42\n// module chunks = 0","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseUnary.js\n// module id = 43\n// module chunks = 0","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_copyObject.js\n// module id = 44\n// module chunks = 0","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_coreJsData.js\n// module id = 45\n// module chunks = 0","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createAssigner.js\n// module id = 46\n// module chunks = 0","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getNative.js\n// module id = 47\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getRawTag.js\n// module id = 48\n// module chunks = 0","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getValue.js\n// module id = 49\n// module chunks = 0","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIterateeCall.js\n// module id = 50\n// module chunks = 0","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isMasked.js\n// module id = 51\n// module chunks = 0","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nativeKeys.js\n// module id = 52\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nodeUtil.js\n// module id = 53\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_objectToString.js\n// module id = 54\n// module chunks = 0","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_overArg.js\n// module id = 55\n// module chunks = 0","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_overRest.js\n// module id = 56\n// module chunks = 0","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setToString.js\n// module id = 57\n// module chunks = 0","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_shortOut.js\n// module id = 58\n// module chunks = 0","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_toSource.js\n// module id = 59\n// module chunks = 0","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/assign.js\n// module id = 60\n// module chunks = 0","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/constant.js\n// module id = 61\n// module chunks = 0","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArguments.js\n// module id = 62\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArray.js\n// module id = 63\n// module chunks = 0","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isBuffer.js\n// module id = 64\n// module chunks = 0","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isTypedArray.js\n// module id = 65\n// module chunks = 0","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/keys.js\n// module id = 66\n// module chunks = 0","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/stubFalse.js\n// module id = 67\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 68\n// module chunks = 0"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///admin.min.js","webpack:///webpack/bootstrap c6aa48916b41edceda51","webpack:///./_src/admin/js/utils/fetcher.js","webpack:///./~/lodash/_baseGetTag.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/isArrayLike.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_assignValue.js","webpack:///./~/lodash/_baseAssignValue.js","webpack:///./~/lodash/_defineProperty.js","webpack:///./~/lodash/_freeGlobal.js","webpack:///./~/lodash/_isIndex.js","webpack:///./~/lodash/_isPrototype.js","webpack:///./~/lodash/eq.js","webpack:///./~/lodash/identity.js","webpack:///./~/lodash/isFunction.js","webpack:///./~/lodash/isLength.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./_src/admin/js/admin-app.js","webpack:///./_src/admin/js/admin-caching.js","webpack:///./_src/admin/js/admin-cloudflare.js","webpack:///./_src/admin/js/admin-dashboard-cloudflare.js","webpack:///./_src/admin/js/admin-dashboard.js","webpack:///./_src/admin/js/admin-gzip.js","webpack:///./_src/admin/js/admin-main.js","webpack:///./_src/admin/js/admin-minification.js","webpack:///./_src/admin/js/admin-performance.js","webpack:///./_src/admin/js/admin-uptime.js","webpack:///./_src/admin/js/index.js","webpack:///./_src/admin/js/minification/Row.js","webpack:///./_src/admin/js/minification/RowsCollection.js","webpack:///./_src/admin/js/utils/helpers.js","webpack:///./~/es6-promise/dist/es6-promise.js","webpack:///./~/lodash/_apply.js","webpack:///./~/lodash/_arrayLikeKeys.js","webpack:///./~/lodash/_baseIsArguments.js","webpack:///./~/lodash/_baseIsNative.js","webpack:///./~/lodash/_baseIsTypedArray.js","webpack:///./~/lodash/_baseKeys.js","webpack:///./~/lodash/_baseRest.js","webpack:///./~/lodash/_baseSetToString.js","webpack:///./~/lodash/_baseTimes.js","webpack:///./~/lodash/_baseUnary.js","webpack:///./~/lodash/_copyObject.js","webpack:///./~/lodash/_coreJsData.js","webpack:///./~/lodash/_createAssigner.js","webpack:///./~/lodash/_getNative.js","webpack:///./~/lodash/_getRawTag.js","webpack:///./~/lodash/_getValue.js","webpack:///./~/lodash/_isIterateeCall.js","webpack:///./~/lodash/_isMasked.js","webpack:///./~/lodash/_nativeKeys.js","webpack:///./~/lodash/_nodeUtil.js","webpack:///./~/lodash/_objectToString.js","webpack:///./~/lodash/_overArg.js","webpack:///./~/lodash/_overRest.js","webpack:///./~/lodash/_setToString.js","webpack:///./~/lodash/_shortOut.js","webpack:///./~/lodash/_toSource.js","webpack:///./~/lodash/assign.js","webpack:///./~/lodash/constant.js","webpack:///./~/lodash/isArguments.js","webpack:///./~/lodash/isArray.js","webpack:///./~/lodash/isBuffer.js","webpack:///./~/lodash/isTypedArray.js","webpack:///./~/lodash/keys.js","webpack:///./~/lodash/stubFalse.js","webpack:///./~/process/browser.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","Fetcher","request","action","data","arguments","length","undefined","method","nonce","fetchNonce","args","url","fetchUrl","Promise","resolve","reject","jQuery","ajax","done","fail","then","response","checkStatus","ajaxurl","wphb","nonces","HBFetchNonce","methods","caching","setExpiration","type","actionPrefix","setServer","reloadSnippets","cloudflare","connect","step","formData","cfData","purgeCache","dashboard","toggleMinification","skipSetup","minification","toggleCDN","startCheck","progress","checkStep","cancelScan","performance","runTest","addRecipient","email","actionPrefixPro","saveReportsSettings","_assign2","default","this","_typeof","JSON","parse","success","error","Error","message","Symbol","iterator","obj","constructor","_assign","HBFetcher","baseGetTag","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","toStringTag","freeGlobal","freeSelf","self","root","Function","isArrayLike","isLength","isFunction","isObject","isObjectLike","assignValue","key","objValue","eq","baseAssignValue","objectProto","writable","getNative","func","e","global","isIndex","MAX_SAFE_INTEGER","reIsUint","test","isPrototype","Ctor","other","identity","tag","funcTag","genTag","asyncTag","proxyTag","g","eval","window","webpackPolyfill","deprecate","paths","children","document","ready","WPHB_Admin","init","_fetcher","_fetcher2","$","selectedServer","$serverSelector","$serverInstructions","$expirySelectors","$snippets","cachingMetabox","cachingContent","find","cachingContentSpinner","cachingFooter","wphbCachingStrings","strings","val","apache","first","nginx","each","change","hide","fadeIn","element","showServerInstructions","hideCurrentInstructions","click","preventDefault","slideToggle","selected","server","show","text","code","updatedFile","location","href","recheckURL","cacheEnabled","htaccessErrorURL","$cfSelector","$spinner","is","connected","setExpiry","selector","displaySpinner","reload","css","DashboardCloudFlare","settings","currentStep","apiKey","$stepsContainer","$infoBox","$deactivateButton","renderStep","on","apply","target","bind","$button","attr","showSpinner","$notice","scrollTo","slideDown","setTimeout","slideUp","removeAttr","hideSpinner","template","content","html","submitStep","bindEvents","$howToInstructions","toggle","WDP","wpmuSelect","removeClass","addClass","emptyInfoBox","showInfoBox","$form","serialize","newData","nextStep","redirect","catch","_","memoize","id","compiled","options","evaluate","interpolate","escape","variable","templateSettings","wphbDashboardStrings","CDNcheckbox","prop","showNotice","notice","startQuickSetup","showOverlay","class","runPerformanceTest","getModule","performanceTest","finishedTestURLsLink","gzip","updatePerformanceGraph","$wrap","$item","parseInt","$circle","r","pct","Math","PI","strokeDashoffset","updatePerformanceResultsGraphs","register_events_performance","initModule","utils","membershipModal","open","trigger","post","notices","parent","_interopRequireDefault","_helpers","_Row","_Row2","_RowsCollection","_RowsCollection2","$checkFilesButton","$checkFilesResultsContainer","checkURLSList","checkedURLS","$disableMinification","checkFiles","getLink","confirm","__","cdn_value","timer","clearTimeout","rowsCollection","RowsCollection","index","row","_row","Row","push","keyup","addFilter","applyFilters","what","visibleItems","getVisibleItems","$this","getItemById","select","unSelect","items","getItems","checkbox","getElement","checkboxes","checkedState","checked","innerWidth","minification_resize_rows","debounce","addEventListener","_this","minificationStarted","sessionStorage","getItem","round","finished","clear","updateProgressBar","show_cdn","setItem","steps","cancel","width","_this2","iteration","body","wphbPerformanceStrings","$runTestButton","performanceReportTable","off","getParentPerformanceItem","closest","getNextAdditionalContentRow","nextUntil","toggleClass","hasClass","hash","remove","user_row","img","src","avatar","append","data-id","user_id","alt","removeButtonText","stringify","appendTo","alert","form_data","that","showUpdateMessage","uptime","$dataRangeSelector","chartData","wphbUptimeStrings","$disableUptime","disableUptimeURL","drawChart","google","visualization","DataTable","addColumn","chart_array","Date","addRows","chartArea","left","top","height","colors","curveType","legend","position","vAxis","format","viewWindow","min","tooltip","isHtml","series","0","axis","axes","y","Resp","label","chart","LineChart","getElementById","draw","resize","_element","_filter","_filter_sec","$el","filter","toLowerCase","filterSecondary","visible","$include","$combine","$minify","$posFooter","$disableIcon","getId","getFilter","matchFilter","search","matchSecondaryFilter","isVisible","isSelected","currentFilter","currentSecondaryFilter","getSelectedItems","str","screen","links","process","factory","objectOrFunction","x","setScheduler","scheduleFn","customSchedulerFn","setAsap","asapFn","asap","useVertxTimer","vertxNext","flush","useSetTimeout","globalSetTimeout","len","callback","queue","onFulfillment","onRejection","_arguments","child","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","Constructor","promise","selfFulfillment","TypeError","cannotReturnOwn","getThen","GET_THEN_ERROR","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","_label","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","PENDING","_subscribers","subscribers","settled","detail","ErrorObject","tryCatch","TRY_CATCH_ERROR","hasCallback","succeeded","failed","initializePromise","resolver","nextId","Enumerator$1","input","_instanceConstructor","isArray","_remaining","Array","_enumerate","validationError","all$1","entries","race$1","reject$1","needsResolver","needsNew","Promise$2","polyfill$1","local","P","promiseToString","toString","cast","_isArray","arg","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","Uint8ClampedArray","importScripts","MessageChannel","nextTick","iterations","observer","node","createTextNode","observe","characterData","channel","port1","onmessage","port2","postMessage","vertx","runOnLoop","runOnContext","random","substring","_eachEntry","entry","resolve$$1","_then","_settledAt","_willSettleAt","state","enumerator","all","race","_setScheduler","_setAsap","_asap","polyfill","thisArg","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","result","baseTimes","String","baseIsArguments","argsTag","baseIsNative","isMasked","reIsNative","reIsHostCtor","toSource","reRegExpChar","funcProto","funcToString","RegExp","replace","baseIsTypedArray","typedArrayTags","baseKeys","nativeKeys","baseRest","start","setToString","overRest","constant","baseSetToString","string","iteratee","baseUnary","copyObject","source","props","customizer","isNew","newValue","coreJsData","createAssigner","assigner","sources","guard","isIterateeCall","getValue","isOwn","unmasked","nativeObjectToString","maskSrcKey","uid","exec","keys","IE_PROTO","overArg","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","binding","transform","nativeMax","array","otherArgs","max","shortOut","count","lastCalled","stamp","nativeNow","remaining","HOT_SPAN","HOT_COUNT","now","assign","propertyIsEnumerable","stubFalse","Buffer","nativeIsBuffer","nodeIsTypedArray","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","concat","queueIndex","drainQueue","timeout","run","Item","title","browser","env","argv","version","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","cwd","chdir","dir","umask"],"mappings":"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","file":"admin.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 29);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _assign = __webpack_require__(60);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction Fetcher() {\n var fetchUrl = ajaxurl;\n var fetchNonce = wphb.nonces.HBFetchNonce;\n var actionPrefix = 'wphb_';\n var actionPrefixPro = 'wphb_pro_';\n\n function request(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'GET';\n\n data.nonce = fetchNonce;\n data.action = action;\n var args = { data: data, method: method };\n args.url = fetchUrl;\n var Promise = __webpack_require__(33).Promise;\n return new Promise(function (resolve, reject) {\n jQuery.ajax(args).done(resolve).fail(reject);\n }).then(function (response) {\n return checkStatus(response);\n });\n }\n\n var methods = {\n /**\n * Caching module actions.\n */\n caching: {\n /**\n * Set expiration for browser caching.\n *\n * @param type File type.\n * @param value Expiry value.\n */\n setExpiration: function setExpiration(type, value) {\n var action = actionPrefix + 'caching_set_expiration';\n return request(action, { type: type, value: value }, 'POST');\n },\n\n /**\n * Set server type.\n *\n * @param value Server type.\n */\n setServer: function setServer(value) {\n var action = actionPrefix + 'caching_set_server_type';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Reload snippet.\n *\n * @param type Server type.\n */\n reloadSnippets: function reloadSnippets(type) {\n var action = actionPrefix + 'caching_reload_snippet';\n return request(action, { type: type }, 'POST').then(function (response) {\n return response;\n });\n }\n },\n\n /**\n * CLoudflare module actions.\n */\n cloudflare: {\n /**\n * Connect to CloudFlare.\n *\n * @param step\n * @param formData\n * @param cfData\n */\n connect: function connect(step, formData, cfData) {\n var action = actionPrefix + 'cloudflare_connect';\n return request(action, { step: step, formData: formData, cfData: cfData }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Set expiry for CloudFlare cache.\n *\n * @param value Expiry value.\n */\n setExpiration: function setExpiration(value) {\n var action = actionPrefix + 'cloudflare_set_expiry';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Purge CloudFlare cache.\n */\n purgeCache: function purgeCache() {\n var action = actionPrefix + 'cloudflare_purge_cache';\n return request(action, {}, 'POST');\n }\n },\n\n /**\n * Dashboard module actions.\n */\n dashboard: {\n /**\n * Toggle global minification settings for network installs.\n *\n * @param value Accepts: 'super-admins', 'false' and 'true'. Default: 'true'.\n */\n toggleMinification: function toggleMinification(value) {\n var action = actionPrefix + 'dash_toggle_network_minification';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Skip quick setup.\n */\n skipSetup: function skipSetup() {\n var action = actionPrefix + 'dash_skip_setup';\n return request(action, {}, 'POST');\n }\n },\n\n /**\n * Minification module actions.\n */\n minification: {\n /**\n * Toggle CDN settings.\n *\n * @param value CDN checkbox value.\n */\n toggleCDN: function toggleCDN(value) {\n var action = actionPrefix + 'minification_toggle_cdn';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Toggle minificatiojn settings on per site basis.\n *\n * @param value\n */\n toggleMinification: function toggleMinification(value) {\n var action = actionPrefix + 'minification_toggle_minification';\n return request(action, { value: value }, 'POST');\n },\n\n /**\n * Start minification check.\n *\n * @param progress\n */\n startCheck: function startCheck(progress) {\n var action = actionPrefix + 'minification_start_check';\n return request(action, { progress: progress }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Do a step in minification process.\n *\n * @param progress\n * @param step\n */\n checkStep: function checkStep(progress, step) {\n var action = actionPrefix + 'minification_check_step';\n return request(action, { progress: progress, step: step }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Cancel minification scan.\n */\n cancelScan: function cancelScan() {\n var action = actionPrefix + 'minification_cancel_scan';\n return request(action, {}, 'POST');\n }\n },\n\n /**\n * Performance module actions.\n */\n performance: {\n /**\n * Run performance test.\n */\n runTest: function runTest() {\n var action = actionPrefix + 'performance_run_test';\n return request(action, {}, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Add a single email/name recipient to the reports list.\n *\n * @param email\n * @param name\n */\n addRecipient: function addRecipient(email, name) {\n var action = actionPrefixPro + 'performance_add_recipient';\n return request(action, { email: email, name: name }, 'POST').then(function (response) {\n return response;\n });\n },\n\n /**\n * Save reporting settings on minification page.\n *\n * @param data From data.\n */\n saveReportsSettings: function saveReportsSettings(data) {\n var action = actionPrefixPro + 'performance_save_reports_settings';\n return request(action, { data: data }, 'POST');\n }\n }\n };\n\n (0, _assign2.default)(this, methods);\n}\n\nvar HBFetcher = new Fetcher();\nexports.default = HBFetcher;\n\n\nfunction checkStatus(response) {\n if ((typeof response === 'undefined' ? 'undefined' : _typeof(response)) !== 'object') {\n response = JSON.parse(response);\n }\n if (response.success) {\n return response.data;\n }\n\n var data = response.data || {};\n var error = new Error(data.message || 'Error trying to fetch response from server');\n error.response = response;\n throw error;\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(6),\n getRawTag = __webpack_require__(48),\n objectToString = __webpack_require__(54);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(10);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(15),\n isLength = __webpack_require__(16);\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(2);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(8),\n eq = __webpack_require__(13);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(9);\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(47);\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(17)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(1),\n isObject = __webpack_require__(4);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\njQuery(document).ready(function () {\n WPHB_Admin.init();\n});\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n 'use strict';\n\n WPHB_Admin.caching = {\n\n module: 'caching',\n selectedServer: '',\n $serverSelector: null,\n $serverInstructions: [],\n $expirySelectors: [],\n $snippets: [],\n\n init: function init() {\n var self = this,\n cachingMetabox = $('#wphb-box-caching-enable'),\n cachingContent = cachingMetabox.find('.box-content'),\n cachingContentSpinner = cachingContent.find('.spinner'),\n cachingFooter = cachingMetabox.find('.box-footer');\n\n if (wphbCachingStrings) self.strings = wphbCachingStrings;\n\n this.$serverSelector = $('#wphb-server-type');\n this.selectedServer = this.$serverSelector.val();\n //this.$spinner = $('#wphb-box-caching-enable .spinner');\n\n self.$snippets.apache = $('#wphb-code-snippet-apache').find('pre').first();\n self.$snippets.nginx = $('#wphb-code-snippet-nginx').find('pre').first();\n\n var instructionsList = $('.wphb-server-instructions');\n instructionsList.each(function () {\n self.$serverInstructions[$(this).data('server')] = $(this);\n });\n\n var expirySelectors = $('.wphb-expiry-select');\n\n expirySelectors.each(function () {\n var type = $(this).data('type');\n if (type) {\n $(this).change(function () {\n //self.$spinner.css( 'visibility', 'visible' );\n cachingContent.find('.wphb-content').hide();\n cachingFooter.hide();\n cachingContentSpinner.fadeIn();\n $('.wphb-notice').hide();\n\n // Expiration selector has changed\n (function (element) {\n var value = $(element).val();\n // Change the plugin settings\n _fetcher2.default.caching.setExpiration(type, value).then(function () {\n // And reload the code snippet\n self.reloadSnippets();\n });\n return false;\n })(this);\n });\n }\n });\n\n this.showServerInstructions(this.selectedServer);\n\n this.$serverSelector.change(function () {\n var value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions(value);\n self.setServer(value);\n self.selectedServer = value;\n });\n\n $('#toggle-apache-instructions').click(function (e) {\n e.preventDefault();\n $('.apache-instructions').slideToggle();\n });\n\n $('#toggle-litespeed-instructions').click(function (e) {\n e.preventDefault();\n $('.litespeed-instructions').slideToggle();\n });\n\n return this;\n },\n\n setServer: function setServer(value) {\n _fetcher2.default.caching.setServer(value);\n },\n\n hideCurrentInstructions: function hideCurrentInstructions() {\n var selected = this.selectedServer;\n if (this.$serverInstructions[selected]) {\n this.$serverInstructions[selected].hide();\n }\n },\n\n showServerInstructions: function showServerInstructions(server) {\n if (typeof this.$serverInstructions[server] !== 'undefined') {\n this.$serverInstructions[server].show();\n }\n\n if ('apache' === server || 'LiteSpeed' === server) {\n $('#enable-cache-wrap').show();\n } else {\n $('#enable-cache-wrap').hide();\n }\n },\n\n reloadSnippets: function reloadSnippets() {\n var self = this;\n var stop = false;\n for (var i in self.$snippets) {\n if (self.$snippets.hasOwnProperty(i)) {\n _fetcher2.default.caching.reloadSnippets(i).then(function (response) {\n if (stop) {\n return;\n }\n\n self.$snippets[response.type].text(response.code);\n\n // Make sure that we only do things when server displayed is the processed one\n if (response.type !== self.selectedServer) {\n return;\n }\n\n if ('apache' === response.type && response.updatedFile) {\n $('#wphb-notice-code-snippet-htaccess-updated').show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n } else if ('apache' === response.type && self.strings.cacheEnabled && !response.updatedFile) {\n $('#wphb-notice-code-snippet-htaccess-error').show();\n location.href = self.strings.htaccessErrorURL;\n } else {\n $('#wphb-notice-code-snippet-updated').show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n }\n //self.$spinner.css( 'visibility', 'hidden' );\n });\n }\n }\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.cloudflare = {\n module: 'cloudflare',\n $cfSelector: false,\n $spinner: false,\n\n init: function init() {\n this.$spinner = $('.wphb-spinner');\n this.$cfSelector = $('#wphb-caching-cloudflare-summary-set-expiry');\n var self = this;\n if (wphb.cloudflare.is.connected) {\n this.$cfSelector.change(function () {\n self.setExpiry.call(self, [this]);\n });\n }\n\n return this;\n },\n\n setExpiry: function setExpiry(selector) {\n this.displaySpinner();\n var value = $(selector).val();\n _fetcher2.default.cloudflare.setExpiration(value).then(function () {\n window.location.reload();\n });\n },\n\n displaySpinner: function displaySpinner() {\n this.$spinner.css('visibility', 'visible');\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.DashboardCloudFlare = {\n init: function init(settings) {\n this.currentStep = settings.currentStep;\n this.data = settings;\n this.email = settings.email;\n this.apiKey = settings.apiKey;\n this.$stepsContainer = $('#cloudflare-steps');\n this.$infoBox = $('#cloudflare-info');\n this.$spinner = $('.cloudflare-spinner');\n this.$deactivateButton = $('#wphb-box-dashboard-cloudflare').find('.box-title .buttons');\n\n this.renderStep(this.currentStep);\n\n $('body').on('click', '.cloudflare-clear-cache .button', function (e) {\n e.preventDefault();\n this.purgeCache.apply($(e.target), [this]);\n }.bind(this));\n },\n\n purgeCache: function purgeCache(self) {\n // Show spinner\n var $button = this;\n $button.attr('disabled', true);\n self.showSpinner();\n\n _fetcher2.default.cloudflare.purgeCache().then(function () {\n // Show notice\n var $notice = $('#wphb-notice-cloudflare-purge-cache');\n window.scrollTo(0, 0);\n $notice.slideDown();\n setTimeout(function () {\n $notice.slideUp();\n }, 5e3);\n // Remove spinner\n $button.removeAttr('disabled');\n self.hideSpinner();\n });\n },\n\n renderStep: function renderStep(step) {\n var template = WPHB_Admin.DashboardCloudFlare.template('#cloudflare-step-' + step);\n var content = template(this.data);\n var self = this;\n\n if (content) {\n this.currentStep = step;\n this.$stepsContainer.hide().html(template(this.data)).fadeIn().find('form').on('submit', function (e) {\n e.preventDefault();\n self.submitStep.call(self, $(this));\n });\n\n this.$spinner = this.$stepsContainer.find('.cloudflare-spinner');\n }\n\n this.bindEvents();\n },\n\n bindEvents: function bindEvents() {\n var $howToInstructions = $('#cloudflare-how-to');\n\n $howToInstructions.hide();\n\n $('#cloudflare-how-to-title > a').click(function (e) {\n e.preventDefault();\n $howToInstructions.toggle();\n });\n\n this.$stepsContainer.find('select').each(function () {\n window.WDP.wpmuSelect(this);\n });\n\n if ('final' === this.currentStep) {\n this.$deactivateButton.removeClass('hidden');\n } else {\n this.$deactivateButton.addClass('hidden');\n }\n },\n\n emptyInfoBox: function emptyInfoBox() {\n this.$infoBox.html('');\n this.$infoBox.removeClass();\n },\n\n showInfoBox: function showInfoBox(message) {\n this.$infoBox.addClass('wphb-notice');\n this.$infoBox.addClass('wphb-notice-error');\n this.$infoBox.html(message + '');\n },\n\n showSpinner: function showSpinner() {\n this.$spinner.css('visibility', 'visible');\n },\n\n hideSpinner: function hideSpinner() {\n this.$spinner.css('visibility', 'hidden');\n },\n\n submitStep: function submitStep($form) {\n var self = this;\n\n $form.find('input[type=submit]').attr('disabled', 'true');\n this.emptyInfoBox();\n this.showSpinner();\n\n _fetcher2.default.cloudflare.connect(this.currentStep, $form.serialize(), this.data).then(function (response) {\n self.data = response.newData;\n self.renderStep(response.nextStep);\n\n if (response.nextStep === 'final') {\n window.location.href = response.redirect;\n }\n }).catch(function (error) {\n self.showInfoBox(error);\n });\n\n $form.find('input[type=submit]').removeAttr('disabled');\n self.hideSpinner();\n }\n };\n\n WPHB_Admin.DashboardCloudFlare.template = _.memoize(function (id) {\n var compiled = void 0,\n options = {\n evaluate: /<#([\\s\\S]+?)#>/g,\n interpolate: /\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/g,\n escape: /\\{\\{([^\\}]+?)\\}\\}(?!\\})/g,\n variable: 'data'\n };\n\n return function (data) {\n _.templateSettings = options;\n compiled = compiled || _.template($(id).html());\n return compiled(data);\n };\n });\n})(jQuery);\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.dashboard = {\n module: 'dashboard',\n\n init: function init() {\n var self = this;\n\n if (wphbDashboardStrings) this.strings = wphbDashboardStrings;\n\n $('#wphb-activate-minification').change(function () {\n var value = $(this).val();\n _fetcher2.default.dashboard.toggleMinification(value).then(function () {\n // If disabled, uncheck CDN checkbox and disable it.\n var CDNcheckbox = $('input[name=\"use_cdn\"]');\n if ('false' === value) {\n CDNcheckbox.prop('checked', false);\n CDNcheckbox.prop('disabled', true);\n } else {\n CDNcheckbox.prop('disabled', false);\n }\n self.showNotice();\n });\n });\n\n $('#use_cdn').change(function () {\n var value = $(this).is(':checked');\n _fetcher2.default.minification.toggleCDN(value).then(function () {\n self.showNotice();\n });\n });\n\n $('.wphb-performance-report-item').click(function () {\n var url = $(this).data('performance-url');\n if (url) {\n location.href = url;\n }\n });\n return this;\n },\n\n /**\n * Notice on settings update.\n */\n showNotice: function showNotice() {\n var notice = $('#wphb-notice-minification-settings-updated');\n notice.slideDown();\n setTimeout(function () {\n notice.slideUp();\n }, 5000);\n },\n\n /**\n * Run quick setup.\n */\n startQuickSetup: function startQuickSetup() {\n // Show quick setup modal\n window.WDP.showOverlay('#wphb-quick-setup-modal', { class: 'wphb-modal small wphb-quick-setup-modal no-close' });\n },\n\n /**\n * Skip quick setup.\n */\n skipSetup: function skipSetup() {\n _fetcher2.default.dashboard.skipSetup().then(function () {\n window.location.reload(true);\n });\n },\n\n /**\n * Run performance test after quick setup.\n */\n runPerformanceTest: function runPerformanceTest() {\n // Show quick setup modal\n window.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' });\n\n // Run performance test\n var module = WPHB_Admin.getModule('performance');\n module.performanceTest(this.strings.finishedTestURLsLink);\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n WPHB_Admin.gzip = {\n module: \"gzip\",\n selectedServer: \"\",\n $serverSelector: null,\n $serverInstructions: [],\n\n init: function init() {\n var self = this;\n\n this.$serverSelector = $(\"#wphb-server-type\");\n this.selectedServer = this.$serverSelector.val();\n var instructionsList = $(\".wphb-server-instructions\");\n instructionsList.each(function () {\n self.$serverInstructions[$(this).data(\"server\")] = $(this);\n });\n this.showServerInstructions(this.selectedServer);\n this.$serverSelector.change(function () {\n var value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions(value);\n self.setServer(value);\n self.selectedServer = value;\n });\n $(\"#toggle-apache-instructions\").click(function (e) {\n e.preventDefault();\n $(\".apache-instructions\").toggle();\n });\n $(\"#toggle-litespeed-instructions\").click(function (e) {\n e.preventDefault();\n $(\".litespeed-instructions\").toggle();\n });\n return this;\n },\n\n hideCurrentInstructions: function hideCurrentInstructions() {\n var selected = this.selectedServer;\n if (this.$serverInstructions[selected]) {\n this.$serverInstructions[selected].hide();\n }\n },\n\n showServerInstructions: function showServerInstructions(server) {\n if (typeof this.$serverInstructions[server] !== \"undefined\") {\n this.$serverInstructions[server].show();\n }\n if (\"apache\" === server || 'LiteSpeed' === server) {\n $(\"#enable-cache-wrap\").show();\n } else {\n $(\"#enable-cache-wrap\").hide();\n }\n },\n\n setServer: function setServer(value) {\n _fetcher2.default.caching.setServer(value);\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n(function ($) {\n 'use strict';\n\n var WPHB_Admin = {\n modules: [],\n // Common functionality to all screens\n init: function init() {\n\n $('body').on('change', '.mobile-nav', function () {\n var url = $(this).val();\n if (url.length > 0) {\n location.href = url;\n }\n });\n\n function updatePerformanceGraph($wrap) {\n var $item = $wrap.find('.wphb-score-result-label'),\n val = parseInt($item.text(), 10) || 100,\n $circle = $wrap.find(\".wphb-score-graph-result\"),\n r = void 0,\n c = void 0,\n pct = void 0;\n r = $circle.attr('r');\n c = Math.PI * (r * 2);\n\n if (val < 0) {\n val = 0;\n }\n if (val > 100) {\n val = 100;\n }\n\n pct = (100 - val) / 100 * c;\n\n $circle.css({ strokeDashoffset: pct });\n }\n\n function updatePerformanceResultsGraphs() {\n\n // Update Overall Score\n $(\".wphb-performance-report-overall-score\").each(function () {\n updatePerformanceGraph($(this));\n });\n\n // Update Current Score\n $(\".wphb-performance-report-current-score\").each(function () {\n updatePerformanceGraph($(this));\n });\n\n // Update All Scores\n $(\".wphb-performance-report-item-score\").each(function () {\n updatePerformanceGraph($(this));\n });\n }\n window.register_events_performance = function () {\n setTimeout(updatePerformanceResultsGraphs, 500);\n };\n $(function () {\n setTimeout(updatePerformanceResultsGraphs, 500);\n });\n },\n initModule: function initModule(module) {\n if (this.hasOwnProperty(module)) {\n this.modules[module] = this[module].init();\n return this.modules[module];\n }\n\n return {};\n },\n getModule: function getModule(module) {\n if (typeof this.modules[module] !== 'undefined') return this.modules[module];else return this.initModule(module);\n }\n };\n\n WPHB_Admin.utils = {\n\n membershipModal: {\n open: function open() {\n $('#wphb-upgrade-membership-modal-link').trigger('click');\n }\n },\n\n post: function post(data, module) {\n data.action = 'wphb_ajax';\n data.module = module;\n return $.ajax({\n url: ajaxurl,\n method: 'POST',\n data: data\n });\n }\n };\n\n WPHB_Admin.notices = {\n\n init: function init() {\n $('.wphb-notice:not(.notice) a.wphb-dismiss').click(function (e) {\n e.preventDefault();\n var id = $(this).data('id');\n var nonce = $(this).data('nonce');\n\n $(this).parent('.error').hide();\n });\n }\n };\n\n window.WPHB_Admin = WPHB_Admin;\n})(jQuery);\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nvar _helpers = __webpack_require__(32);\n\nvar _Row = __webpack_require__(30);\n\nvar _Row2 = _interopRequireDefault(_Row);\n\nvar _RowsCollection = __webpack_require__(31);\n\nvar _RowsCollection2 = _interopRequireDefault(_RowsCollection);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n 'use strict';\n\n WPHB_Admin.minification = {\n\n $checkFilesButton: null,\n $checkFilesResultsContainer: null,\n module: 'minification',\n checkURLSList: null,\n checkedURLS: 0,\n $spinner: null,\n\n init: function init() {\n var self = this;\n\n // Filter action button on Minification page\n $('#wphb-minification-filter-button').on('click', function (e) {\n e.preventDefault();\n $('#wphb-minification-filter').toggle('slow');\n });\n\n // Check files button\n this.$checkFilesButton = $('#check-files');\n this.$disableMinification = $('#wphb-disable-minification');\n this.$spinner = $('.spinner');\n\n if (this.$checkFilesButton.length) {\n this.$checkFilesButton.click(function (e) {\n e.preventDefault();\n window.WDP.showOverlay(\"#check-files-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' });\n $(this).attr('disabled', true);\n self.checkFiles((0, _helpers.getLink)('minification'));\n });\n }\n\n $('.wphb-discard').click(function (e) {\n e.preventDefault();\n\n if (confirm((0, _helpers.__)('discardAlert'))) {\n location.reload();\n }\n return false;\n });\n\n $('.wphb-enqueued-files input').on('change', function () {\n $('.wphb-discard').attr('disabled', false);\n });\n\n $('#use_cdn').change(function () {\n var cdn_value = $(this).is(':checked');\n _fetcher2.default.minification.toggleCDN(cdn_value).then(function () {\n var notice = $('#wphb-notice-minification-advanced-settings-updated');\n notice.slideDown();\n setTimeout(function () {\n notice.slideUp();\n }, 5000);\n });\n });\n\n this.$disableMinification.change(function () {\n var value = $(this).is(':checked');\n\n self.$spinner.css('visibility', 'visible');\n\n if (self.timer && value) {\n clearTimeout(self.timer);\n self.$spinner.css('visibility', 'hidden');\n }\n\n self.timer = setTimeout(function () {\n _fetcher2.default.minification.toggleMinification(value).then(function () {\n location.reload();\n });\n }, 3000);\n });\n\n this.rowsCollection = new WPHB_Admin.minification.RowsCollection();\n\n var rows = $('.wphb-border-row');\n\n rows.each(function (index, row) {\n var _row = void 0;\n if ($(row).data('filter-secondary')) {\n _row = new WPHB_Admin.minification.Row($(row), $(row).data('filter'), $(row).data('filter-secondary'));\n } else {\n _row = new WPHB_Admin.minification.Row($(row), $(row).data('filter'));\n }\n self.rowsCollection.push(_row);\n });\n\n $('#wphb-s').keyup(function () {\n self.rowsCollection.addFilter($(this).val(), 'primary');\n self.rowsCollection.applyFilters();\n });\n\n $('#wphb-secondary-filter').change(function () {\n self.rowsCollection.addFilter($(this).val(), 'secondary');\n self.rowsCollection.applyFilters();\n });\n\n $('.filter-toggles').change(function () {\n var element = $(this);\n var what = element.data('toggles');\n var value = element.prop('checked');\n var visibleItems = self.rowsCollection.getVisibleItems();\n\n for (var i in visibleItems) {\n visibleItems[i].change(what, value);\n }\n });\n\n // Files selectors\n var filesList = $('input.wphb-minification-file-selector');\n filesList.click(function () {\n var $this = $(this);\n var element = self.rowsCollection.getItemById($this.data('type'), $this.data('handle'));\n if (!element) {\n return;\n }\n\n if ($this.is(':checked')) {\n element.select();\n } else {\n element.unSelect();\n }\n });\n\n var selectAll = $('#minification-bulk-file');\n selectAll.click(function () {\n var $this = $(this);\n var items = self.rowsCollection.getItems();\n for (var i in items) {\n if (items.hasOwnProperty(i)) {\n if ($this.is(':checked')) {\n items[i].select();\n } else {\n items[i].unSelect();\n }\n }\n }\n });\n\n // Include/exclude file checkbox\n $('.toggle-cross').on('click', function () {\n var $this = $(this);\n var checkbox = $this.find('input.toggle-include');\n var row = self.rowsCollection.getItemById($this.data('type'), $this.data('handle'));\n // Mark the item as include or not in the rows list\n if (row) {\n row.change('include', !checkbox.prop('checked'));\n row.getElement().find('input:not(.toggle-include)').prop('disabled', !checkbox.prop('checked'));\n }\n });\n\n // Handle two CDN checkboxes on Minification page\n var checkboxes = $(\"input[type=checkbox][name=use_cdn]\");\n checkboxes.change(function () {\n var checkedState = $(this).prop('checked');\n\n checkboxes.each(function () {\n this.checked = checkedState;\n });\n });\n\n /* Show details of minification row on mobile devices */\n $('body').on('click', '.wphb-minification-file-details', function () {\n if (window.innerWidth < 783) {\n $(this).parent().find('.wphb-minification-row-details').toggle('slow');\n }\n });\n\n /*\n Catch window resize and revert styles for responsive divs\n 1/4 of a second should be enough to trigger during device rotations (from portrait to landscape mode)\n */\n var minification_resize_rows = _.debounce(function () {\n\n if (window.innerWidth >= 783) {\n $('.wphb-minification-row-details').css('display', 'flex');\n } else {\n $('.wphb-minification-row-details').css('display', 'none');\n }\n }, 250);\n\n window.addEventListener('resize', minification_resize_rows);\n\n return this;\n },\n\n checkFiles: function checkFiles(redirect) {\n var _this = this;\n\n var self = this;\n\n if (typeof redirect === 'undefined') redirect = false;\n\n if (!self.minificationStarted) {\n // Store the progress in session storage to persist during page reloads\n // If there is no previous value, we init one with 10%\n if (sessionStorage.getItem('progress') === null) {\n sessionStorage.setItem('progress', 10);\n }\n\n // Update progress bar\n var progress = sessionStorage.getItem('progress');\n this.updateProgressBar(progress);\n\n // Send an AJAX request that will flag the check files as started\n _fetcher2.default.minification.startCheck(progress).then(function (response) {\n // Set the number of steps to be used in percentage count. Only if not set already.\n if (typeof response.steps !== 'undefined' && sessionStorage.getItem('steps') === null) {\n sessionStorage.setItem('steps', response.steps);\n }\n\n self.minificationStarted = true;\n self.checkFiles(redirect);\n });\n } else {\n var _progress = sessionStorage.getItem('progress');\n var step = Math.round(80 / sessionStorage.getItem('steps'));\n _fetcher2.default.minification.checkStep(_progress, step).then(function (response) {\n if (typeof response.finished !== 'undefined') {\n // Finished\n if (response.finished && redirect) {\n // Clear session storage\n sessionStorage.clear();\n\n // Update progress bar\n _this.updateProgressBar(100);\n\n // Show enable cdn modal only for members\n if (true === response.show_cdn && $('#enable-cdn-modal').length) {\n WDP.showOverlay('#enable-cdn-modal', { class: 'wphb-modal small wphb-progress-modal no-close' });\n } else {\n window.location.href = redirect;\n }\n }\n // Next step\n else if (!response.finished) {\n // Store the progress in session storage to persist during page reloads\n var _progress2 = parseInt(sessionStorage.getItem('progress')) + Math.round(80 / sessionStorage.getItem('steps'));\n sessionStorage.setItem('progress', _progress2);\n\n // Update progress bar.\n _this.updateProgressBar(_progress2);\n\n // Wait 3 seconds before calling again\n window.setTimeout(function () {\n self.checkFiles(redirect);\n }, 3000);\n }\n } else {\n // Error\n window.location.href = redirect;\n }\n });\n } // End else\n }, // End checkFiles\n\n updateProgressBar: function updateProgressBar(progress) {\n var cancel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (progress > 100) {\n progress = 100;\n }\n // Update progress bar\n $('.wphb-scan-progress .wphb-scan-progress-text span').text(progress + '%');\n if (progress >= 90) {\n $('.wphb-progress-state .wphb-progress-state-text').text('Finalizing...');\n }\n if (cancel) {\n $('.wphb-progress-state .wphb-progress-state-text').text('Cancelling...');\n }\n $('.wphb-scan-progress .wphb-scan-progress-bar span').width(progress + '%');\n },\n\n cancelScan: function cancelScan() {\n var _this2 = this;\n\n _fetcher2.default.minification.cancelScan().then(function () {\n // Clear session storage\n sessionStorage.clear();\n\n _this2.updateProgressBar(0, true);\n\n // Reload page\n window.location.href = (0, _helpers.getLink)('minification');\n });\n }\n\n }; // End WPHB_Admin.minification\n\n WPHB_Admin.minification.Row = _Row2.default;\n WPHB_Admin.minification.RowsCollection = _RowsCollection2.default;\n})(jQuery);\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fetcher = __webpack_require__(0);\n\nvar _fetcher2 = _interopRequireDefault(_fetcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function ($) {\n 'use strict';\n\n WPHB_Admin.performance = {\n\n module: 'performance',\n iteration: 0,\n progress: 0,\n\n init: function init() {\n\n var self = this;\n var body = $('body');\n\n if (wphbPerformanceStrings) this.strings = wphbPerformanceStrings;\n\n this.$runTestButton = $('#run-performance-test');\n\n var performanceReportTable = $(\".performance-report-table\");\n\n performanceReportTable.off('click', 'button');\n performanceReportTable.on('click', '.wphb-performance-report-item-cta .additional-content-opener' && 'tr.wphb-performance-report-item', function (e) {\n e.preventDefault();\n\n var getParentPerformanceItem = $(this).closest(\".wphb-performance-report-item\"),\n getNextAdditionalContentRow = getParentPerformanceItem.nextUntil(\".wphb-performance-report-item\");\n\n getNextAdditionalContentRow.toggleClass(\"wphb-performance-report-item-additional-content-opened\");\n\n if (getNextAdditionalContentRow.hasClass(\"wphb-performance-report-item-additional-content-opened\")) {\n getParentPerformanceItem.addClass(\"wphb-performance-report-item-opened\");\n } else {\n getParentPerformanceItem.removeClass(\"wphb-performance-report-item-opened\");\n }\n });\n\n if (this.$runTestButton.length) {\n this.$runTestButton.click(function (e) {\n e.preventDefault();\n window.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' });\n $(this).attr('disabled', true);\n self.performanceTest(self.strings.finishedTestURLsLink);\n });\n }\n\n // If a hash is present in URL, let's open the rule extra content\n var hash = window.location.hash;\n if (hash) {\n var row = $(hash);\n if (row.length) {\n row.find('.trigger-additional-content').trigger('click');\n }\n }\n\n // Schedule show/hide day of week\n $('select[name=\"email-frequency\"]').change(function () {\n if ('1' === $(this).val()) {\n $(this).closest('.schedule-box').find('div.days-container').hide();\n } else {\n $(this).closest('.schedule-box').find('div.days-container').show();\n }\n }).change();\n\n // Remove recipient\n body.on('click', '.wphb-remove-recipient', function (e) {\n e.preventDefault();\n $(this).closest('.recipient').remove();\n $('.scan-settings').find(\"input[id='scan_recipient'][value=\" + $(this).attr('data-id') + \"]\").remove();\n });\n\n // Add recipient\n $('#add-receipt').click(function () {\n var email = $(\"#wphb-username-search\").val();\n var name = $(\"#wphb-first-name\").val();\n _fetcher2.default.performance.addRecipient(email, name).then(function (response) {\n var user_row = $('<div class=\"recipient\"/>');\n\n var img = $('<img/>').attr({\n 'src': response.avatar,\n 'width': '30'\n });\n var name = $('<span/>').html(response.name);\n\n user_row.append('<span class=\"name\"/>');\n user_row.find('.name').append(img, name);\n\n user_row.append($('<span class=\"email\"/>').html(email));\n user_row.append($('<a/>').attr({\n 'data-id': response.user_id,\n 'class': 'remove float-r wphb-remove-recipient',\n 'href': '#',\n 'alt': self.strings.removeButtonText\n }).html('<i class=\"dev-icon dev-icon-cross\"></i>'));\n\n $('<input>').attr({\n type: 'hidden',\n id: 'scan_recipient',\n name: 'email-recipients[]',\n value: JSON.stringify({ email: response.email, name: response.name })\n }).appendTo(user_row);\n\n $('.receipt .recipients').append(user_row);\n $(\"#wphb-username-search\").val('');\n $(\"#wphb-first-name\").val('');\n }).catch(function (error) {\n alert(error.message);\n });\n return false;\n });\n\n // Save report settings\n body.on('submit', '.scan-frm', function (e) {\n e.preventDefault();\n var form_data = $(this).serialize();\n var that = $(this);\n\n that.find('.button').attr('disabled', 'disabled');\n\n _fetcher2.default.performance.saveReportsSettings(form_data).then(function () {\n that.find('.button').removeAttr('disabled');\n self.showUpdateMessage();\n });\n return false;\n });\n\n return this;\n },\n\n showUpdateMessage: function showUpdateMessage() {\n var notice = $('#wphb-notice-performance-report-settings-updated');\n window.scrollTo(0, 0);\n notice.slideDown();\n setTimeout(function () {\n notice.slideUp();\n }, 5000);\n },\n\n performanceTest: function performanceTest(redirect) {\n var self = this;\n\n if (typeof redirect === 'undefined') redirect = false;\n\n // Update progress bar\n self.updateProgressBar();\n\n _fetcher2.default.performance.runTest().then(function (response) {\n if (!response.finished) {\n // Try again 5 seconds later\n window.setTimeout(function () {\n self.performanceTest(redirect);\n }, 5000);\n } else if (redirect) {\n window.location = redirect;\n }\n });\n },\n\n updateProgressBar: function updateProgressBar() {\n if (this.progress < 90) {\n this.progress += 35;\n }\n if (this.progress > 100) {\n this.progress = 90;\n }\n $('.wphb-scan-progress .wphb-scan-progress-text span').text(this.progress + '%');\n $('.wphb-scan-progress .wphb-scan-progress-bar span').attr('style', 'width:' + this.progress + '%');\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n(function ($) {\n WPHB_Admin.uptime = {\n module: 'uptime',\n $dataRangeSelector: null,\n chartData: null,\n timer: null,\n $spinner: null,\n init: function init() {\n this.$spinner = $('.spinner');\n this.strings = wphbUptimeStrings;\n this.$dataRangeSelector = $('#wphb-uptime-data-range');\n this.chartData = $('#uptime-chart-json').val();\n this.$disableUptime = $('#wphb-disable-uptime');\n\n this.$dataRangeSelector.change(function () {\n window.location.href = $(this).find(':selected').data('url');\n });\n\n var self = this;\n this.$disableUptime.change(function () {\n self.$spinner.css('visibility', 'visible');\n var value = $(this).is(':checked');\n if (value && self.timer) {\n clearTimeout(self.timer);\n self.$spinner.css('visibility', 'hidden');\n } else {\n // you have 3 seconds to change your mind\n self.timer = setTimeout(function () {\n location.href = self.strings.disableUptimeURL;\n }, 3000);\n }\n\n return;\n });\n\n this.drawChart();\n\n /* Re-check Uptime status */\n $('#uptime-re-check-status').on('click', function (e) {\n e.preventDefault();\n location.reload();\n });\n },\n\n drawChart: function drawChart() {\n var data = new google.visualization.DataTable();\n data.addColumn('datetime', 'Day');\n data.addColumn('number', 'Response Time (ms)');\n\n var chart_array = JSON.parse(this.chartData);\n for (var i = 0; i < chart_array.length; i++) {\n chart_array[i][0] = new Date(chart_array[i][0]);\n chart_array[i][1] = Math.round(chart_array[i][1]);\n\n /* brings the graph below the x axis */\n if (Math.round(chart_array[i][1]) == 0) {\n chart_array[i][1] = -100;\n }\n }\n\n data.addRows(chart_array);\n\n var options = {\n chartArea: {\n left: 80,\n top: 20,\n width: '90%',\n height: '90%'\n },\n colors: ['#24ADE5'],\n curveType: 'function',\n /*interpolateNulls: true,*/\n legend: { position: 'none' },\n vAxis: {\n format: '#,### ms',\n viewWindow: { min: 0 /* don't display negative values */\n } },\n tooltip: { isHtml: true },\n series: {\n 0: { axis: 'Resp' }\n },\n axes: {\n y: {\n Resp: { label: 'Response Time (ms)' }\n }\n }\n };\n\n var chart = new google.visualization.LineChart(document.getElementById('uptime-chart'));\n chart.draw(data, options);\n\n $(window).resize(function () {\n chart.draw(data, options);\n });\n }\n };\n})(jQuery);\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n__webpack_require__(27);\n__webpack_require__(24);\n__webpack_require__(20);\n__webpack_require__(26);\n__webpack_require__(23);\n__webpack_require__(22);\n__webpack_require__(28);\n__webpack_require__(21);\n__webpack_require__(19);\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar Row = function Row(_element, _filter, _filter_sec) {\n var $el = _element,\n filter = _filter.toLowerCase(),\n filterSecondary = false,\n selected = false,\n visible = true;\n\n var $include = $el.find('.toggle-include'),\n $combine = $el.find('.toggle-combine'),\n $minify = $el.find('.toggle-minify'),\n $posFooter = $el.find('.toggle-position-footer'),\n $disableIcon = $el.find('.toggle-cross > i');\n\n if (_filter_sec) {\n filterSecondary = _filter_sec.toLowerCase();\n }\n\n return {\n hide: function hide() {\n $el.addClass('out-of-filter');\n visible = false;\n },\n\n show: function show() {\n $el.removeClass('out-of-filter');\n visible = true;\n },\n\n getElement: function getElement() {\n return $el;\n },\n\n getId: function getId() {\n return $el.attr('id');\n },\n\n getFilter: function getFilter() {\n return filter;\n },\n\n matchFilter: function matchFilter(text) {\n if (text === '') {\n return true;\n }\n\n text = text.toLowerCase();\n return filter.search(text) > -1;\n },\n\n matchSecondaryFilter: function matchSecondaryFilter(text) {\n if (text === '') {\n return true;\n }\n\n if (!filterSecondary) {\n return false;\n }\n\n text = text.toLowerCase();\n return filterSecondary === text;\n },\n\n isVisible: function isVisible() {\n return visible;\n },\n\n isSelected: function isSelected() {\n return selected;\n },\n\n select: function select() {\n selected = true;\n },\n\n unSelect: function unSelect() {\n selected = false;\n },\n\n change: function change(what, value) {\n switch (what) {\n case 'minify':\n {\n $minify.prop('checked', value);\n break;\n }\n case 'combine':\n {\n $combine.prop('checked', value);\n break;\n }\n case 'include':\n {\n $disableIcon.removeClass();\n $include.prop('checked', value);\n if (value) {\n $el.removeClass('disabled');\n $disableIcon.addClass('dev-icon dev-icon-cross');\n $include.attr('checked', true);\n } else {\n $el.addClass('disabled');\n $disableIcon.addClass('wdv-icon wdv-icon-refresh');\n $include.removeAttr('checked');\n }\n break;\n }\n case 'footer':\n {\n $posFooter.prop('checked', value);\n break;\n }\n }\n }\n\n };\n};\n\nexports.default = Row;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar RowsCollection = function RowsCollection() {\n var items = [];\n var currentFilter = '';\n var currentSecondaryFilter = '';\n\n return {\n push: function push(row) {\n if ((typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') {\n items.push(row);\n }\n },\n\n getItems: function getItems() {\n return items;\n },\n\n getItem: function getItem(i) {\n if (items[i]) {\n return items[i];\n }\n return false;\n },\n\n /**\n * Get a collection item by type and ID\n * @param type\n * @param id\n */\n getItemById: function getItemById(type, id) {\n var value = false;\n for (var i in items) {\n if ('wphb-file-' + type + '-' + id === items[i].getId()) {\n value = items[i];\n break;\n }\n }\n return value;\n },\n\n getVisibleItems: function getVisibleItems() {\n var visible = [];\n for (var i in items) {\n if (items[i].isVisible()) {\n visible.push(items[i]);\n }\n }\n return visible;\n },\n\n getSelectedItems: function getSelectedItems() {\n var selected = [];\n\n for (var i in items) {\n if (items[i].isVisible() && items[i].isSelected()) {\n selected.push(items[i]);\n }\n }\n\n return selected;\n },\n\n addFilter: function addFilter(filter, type) {\n if (type === 'secondary') {\n currentSecondaryFilter = filter;\n } else {\n currentFilter = filter;\n }\n },\n\n applyFilters: function applyFilters() {\n for (var i in items) {\n if (items[i]) {\n if (items[i].matchFilter(currentFilter) && items[i].matchSecondaryFilter(currentSecondaryFilter)) {\n items[i].show();\n } else {\n items[i].hide();\n }\n }\n }\n }\n };\n};\n\nexports.default = RowsCollection;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Strings internationalization\n *\n * @param str\n *\n * @returns {*|string}\n */\nvar __ = exports.__ = function __(str) {\n return wphb.strings[str] || '';\n};\n\n/**\n * Get a link to a HB screen\n *\n * @param {string} screen Screen slug\n * @returns {string}\n */\nvar getLink = exports.getLink = function getLink(screen) {\n return wphb.links[screen] || '';\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global) {var require;/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\t true ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = __webpack_require__(69);\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && \"function\" === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(68), __webpack_require__(17)))\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTimes = __webpack_require__(42),\n isArguments = __webpack_require__(62),\n isArray = __webpack_require__(63),\n isBuffer = __webpack_require__(64),\n isIndex = __webpack_require__(11),\n isTypedArray = __webpack_require__(65);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(1),\n isObjectLike = __webpack_require__(5);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(15),\n isMasked = __webpack_require__(51),\n isObject = __webpack_require__(4),\n toSource = __webpack_require__(59);\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(1),\n isLength = __webpack_require__(16),\n isObjectLike = __webpack_require__(5);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototype = __webpack_require__(12),\n nativeKeys = __webpack_require__(52);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar identity = __webpack_require__(14),\n overRest = __webpack_require__(56),\n setToString = __webpack_require__(57);\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar constant = __webpack_require__(61),\n defineProperty = __webpack_require__(9),\n identity = __webpack_require__(14);\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(7),\n baseAssignValue = __webpack_require__(8);\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(2);\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseRest = __webpack_require__(40),\n isIterateeCall = __webpack_require__(50);\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsNative = __webpack_require__(37),\n getValue = __webpack_require__(49);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(6);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(13),\n isArrayLike = __webpack_require__(3),\n isIndex = __webpack_require__(11),\n isObject = __webpack_require__(4);\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar coreJsData = __webpack_require__(45);\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(55);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(10);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)(module)))\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = __webpack_require__(34);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSetToString = __webpack_require__(41),\n shortOut = __webpack_require__(58);\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(7),\n copyObject = __webpack_require__(44),\n createAssigner = __webpack_require__(46),\n isArrayLike = __webpack_require__(3),\n isPrototype = __webpack_require__(12),\n keys = __webpack_require__(66);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsArguments = __webpack_require__(36),\n isObjectLike = __webpack_require__(5);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(2),\n stubFalse = __webpack_require__(67);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)(module)))\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsTypedArray = __webpack_require__(38),\n baseUnary = __webpack_require__(43),\n nodeUtil = __webpack_require__(53);\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(35),\n baseKeys = __webpack_require__(39),\n isArrayLike = __webpack_require__(3);\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// admin.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 29);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c6aa48916b41edceda51","import assign from 'lodash/assign';\n\nfunction Fetcher() {\n let fetchUrl = ajaxurl;\n let fetchNonce = wphb.nonces.HBFetchNonce;\n const actionPrefix = 'wphb_';\n const actionPrefixPro = 'wphb_pro_';\n\n function request( action, data = {}, method = 'GET' ) {\n data.nonce = fetchNonce;\n data.action = action;\n let args = { data, method };\n args.url = fetchUrl;\n let Promise = require('es6-promise').Promise;\n return new Promise( ( resolve, reject ) => {\n jQuery.ajax( args ).done( resolve ).fail( reject );\n })\n .then( ( response ) => checkStatus( response ) );\n\n }\n\n const methods = {\n /**\n * Caching module actions.\n */\n caching: {\n /**\n * Set expiration for browser caching.\n *\n * @param type File type.\n * @param value Expiry value.\n */\n setExpiration: ( type, value ) => {\n const action = actionPrefix + 'caching_set_expiration';\n return request( action, { type, value }, 'POST' );\n },\n\n /**\n * Set server type.\n *\n * @param value Server type.\n */\n setServer: ( value ) => {\n const action = actionPrefix + 'caching_set_server_type';\n return request( action, { value }, 'POST' );\n },\n\n /**\n * Reload snippet.\n *\n * @param type Server type.\n */\n reloadSnippets: ( type ) => {\n const action = actionPrefix + 'caching_reload_snippet';\n return request( action, { type }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n }\n },\n\n /**\n * CLoudflare module actions.\n */\n cloudflare: {\n\t\t\t/**\n\t\t\t * Connect to CloudFlare.\n\t\t\t *\n\t\t\t * @param step\n\t\t\t * @param formData\n\t\t\t * @param cfData\n\t\t\t */\n\t\t\tconnect: ( step, formData, cfData ) => {\n\t\t\t\tconst action = actionPrefix + 'cloudflare_connect';\n return request( action, { step, formData, cfData }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n /**\n * Set expiry for CloudFlare cache.\n *\n * @param value Expiry value.\n */\n setExpiration: ( value ) => {\n const action = actionPrefix + 'cloudflare_set_expiry';\n return request( action, { value }, 'POST' );\n },\n\n\t\t\t/**\n * Purge CloudFlare cache.\n\t\t\t */\n\t\t\tpurgeCache: () => {\n const action = actionPrefix + 'cloudflare_purge_cache';\n return request( action, {}, 'POST' );\n }\n },\n\n /**\n * Dashboard module actions.\n */\n dashboard: {\n /**\n * Toggle global minification settings for network installs.\n *\n * @param value Accepts: 'super-admins', 'false' and 'true'. Default: 'true'.\n */\n toggleMinification: ( value ) => {\n const action = actionPrefix + 'dash_toggle_network_minification';\n return request( action, { value }, 'POST' );\n },\n\n\t\t\t/**\n * Skip quick setup.\n\t\t\t */\n\t\t\tskipSetup: () => {\n const action = actionPrefix + 'dash_skip_setup';\n return request( action, {}, 'POST' );\n }\n },\n\n /**\n * Minification module actions.\n */\n minification: {\n /**\n * Toggle CDN settings.\n *\n * @param value CDN checkbox value.\n */\n toggleCDN: ( value ) => {\n const action = actionPrefix + 'minification_toggle_cdn';\n return request( action, { value }, 'POST' );\n },\n\n /**\n * Toggle minificatiojn settings on per site basis.\n *\n * @param value\n */\n toggleMinification: ( value ) => {\n const action = actionPrefix + 'minification_toggle_minification';\n return request( action, { value }, 'POST' );\n },\n\n /**\n * Start minification check.\n *\n * @param progress\n */\n startCheck: ( progress ) => {\n const action = actionPrefix + 'minification_start_check';\n return request( action, { progress }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n /**\n * Do a step in minification process.\n *\n * @param progress\n * @param step\n */\n checkStep: ( progress, step ) => {\n const action = actionPrefix + 'minification_check_step';\n return request( action, { progress, step }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n\t\t\t/**\n * Cancel minification scan.\n\t\t\t */\n\t\t\tcancelScan: function cancelScan() {\n\t\t\t\tconst action = actionPrefix + 'minification_cancel_scan';\n\t\t\t\treturn request( action, {}, 'POST' );\n\t\t\t}\n },\n\n /**\n * Performance module actions.\n */\n performance: {\n\t\t\t/**\n * Run performance test.\n\t\t\t */\n\t\t\trunTest: () => {\n const action = actionPrefix + 'performance_run_test';\n return request( action, {}, 'POST' )\n .then( ( response ) => {\n return response;\n });\n },\n\n /**\n * Add a single email/name recipient to the reports list.\n *\n * @param email\n * @param name\n */\n addRecipient: ( email, name ) => {\n const action = actionPrefixPro + 'performance_add_recipient';\n return request( action, { email, name }, 'POST' )\n .then( ( response ) => {\n return response;\n });\n\n },\n\n /**\n * Save reporting settings on minification page.\n *\n * @param data From data.\n */\n saveReportsSettings: ( data ) => {\n const action = actionPrefixPro + 'performance_save_reports_settings';\n return request( action, { data }, 'POST' );\n }\n }\n };\n\n assign( this, methods );\n}\n\nconst HBFetcher = new Fetcher();\nexport default HBFetcher;\n\nfunction checkStatus( response ) {\n if ( typeof response !== 'object' ) {\n response = JSON.parse( response );\n }\n if ( response.success ) {\n return response.data;\n }\n\n let data = response.data || {};\n const error = new Error( data.message || 'Error trying to fetch response from server' );\n error.response = response;\n throw error;\n}\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/utils/fetcher.js","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetTag.js\n// module id = 1\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_root.js\n// module id = 2\n// module chunks = 0","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArrayLike.js\n// module id = 3\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObject.js\n// module id = 4\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObjectLike.js\n// module id = 5\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Symbol.js\n// module id = 6\n// module chunks = 0","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_assignValue.js\n// module id = 7\n// module chunks = 0","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseAssignValue.js\n// module id = 8\n// module chunks = 0","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_defineProperty.js\n// module id = 9\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_freeGlobal.js\n// module id = 10\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIndex.js\n// module id = 11\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isPrototype.js\n// module id = 12\n// module chunks = 0","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/eq.js\n// module id = 13\n// module chunks = 0","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/identity.js\n// module id = 14\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isFunction.js\n// module id = 15\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isLength.js\n// module id = 16\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 17\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 18\n// module chunks = 0","jQuery(document).ready( function() {\n WPHB_Admin.init();\n});\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-app.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n 'use strict';\n WPHB_Admin.caching = {\n\n module: 'caching',\n selectedServer: '',\n $serverSelector: null,\n $serverInstructions: [],\n $expirySelectors: [],\n $snippets: [],\n\n init: function () {\n let self = this,\n cachingMetabox = $('#wphb-box-caching-enable'),\n cachingContent = cachingMetabox.find('.box-content'),\n cachingContentSpinner = cachingContent.find('.spinner'),\n cachingFooter = cachingMetabox.find('.box-footer');\n\n if ( wphbCachingStrings )\n self.strings = wphbCachingStrings;\n\n this.$serverSelector = $( '#wphb-server-type' );\n this.selectedServer = this.$serverSelector.val();\n //this.$spinner = $('#wphb-box-caching-enable .spinner');\n\n self.$snippets.apache = $('#wphb-code-snippet-apache').find('pre').first();\n self.$snippets.nginx = $('#wphb-code-snippet-nginx').find('pre').first();\n\n let instructionsList = $( '.wphb-server-instructions' );\n instructionsList.each( function() {\n self.$serverInstructions[ $(this).data('server') ] = $(this);\n });\n\n let expirySelectors = $( '.wphb-expiry-select' );\n\n expirySelectors.each( function() {\n const type = $(this).data('type');\n if ( type ) {\n $(this).change( function() {\n //self.$spinner.css( 'visibility', 'visible' );\n cachingContent.find('.wphb-content').hide();\n cachingFooter.hide();\n cachingContentSpinner.fadeIn();\n $('.wphb-notice').hide();\n\n // Expiration selector has changed\n ( function( element ) {\n const value = $( element ).val();\n // Change the plugin settings\n Fetcher.caching.setExpiration( type, value )\n .then( () => {\n // And reload the code snippet\n self.reloadSnippets();\n });\n return false;\n })( this );\n });\n }\n\n });\n\n this.showServerInstructions( this.selectedServer );\n\n this.$serverSelector.change( function() {\n let value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions( value );\n self.setServer(value);\n self.selectedServer = value;\n });\n\n $( '#toggle-apache-instructions').click( function( e ) {\n e.preventDefault();\n $('.apache-instructions').slideToggle();\n });\n\n $( '#toggle-litespeed-instructions').click( function( e ) {\n e.preventDefault();\n $('.litespeed-instructions').slideToggle();\n });\n\n\n return this;\n },\n\n setServer: function( value ) {\n Fetcher.caching.setServer( value );\n },\n\n hideCurrentInstructions: function() {\n let selected = this.selectedServer;\n if ( this.$serverInstructions[ selected ] ) {\n this.$serverInstructions[ selected ].hide();\n }\n },\n\n showServerInstructions: function( server ) {\n if ( typeof this.$serverInstructions[ server ] !== 'undefined' ) {\n this.$serverInstructions[ server ].show();\n }\n\n if ( 'apache' === server || 'LiteSpeed' === server ) {\n $( '#enable-cache-wrap').show();\n }\n else {\n $( '#enable-cache-wrap').hide();\n }\n },\n\n reloadSnippets: function() {\n let self = this;\n let stop = false;\n for ( let i in self.$snippets ) {\n if ( self.$snippets.hasOwnProperty( i ) ) {\n Fetcher.caching.reloadSnippets( i )\n .then( ( response ) => {\n if ( stop ) {\n return;\n }\n\n self.$snippets[response.type].text( response.code );\n\n // Make sure that we only do things when server displayed is the processed one\n if ( response.type !== self.selectedServer ) {\n return;\n }\n\n if ( 'apache' === response.type && response.updatedFile ) {\n $( '#wphb-notice-code-snippet-htaccess-updated' ).show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n } else if ( 'apache' === response.type && self.strings.cacheEnabled && ! response.updatedFile ) {\n $( '#wphb-notice-code-snippet-htaccess-error' ).show();\n location.href = self.strings.htaccessErrorURL;\n } else {\n $( '#wphb-notice-code-snippet-updated' ).show();\n location.href = self.strings.recheckURL + '&caching-updated=true';\n }\n //self.$spinner.css( 'visibility', 'hidden' );\n });\n }\n }\n }\n };\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-caching.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n WPHB_Admin.cloudflare = {\n module: 'cloudflare',\n $cfSelector: false,\n $spinner: false,\n\n init: function () {\n this.$spinner = $('.wphb-spinner');\n this.$cfSelector = $('#wphb-caching-cloudflare-summary-set-expiry');\n let self = this;\n if ( wphb.cloudflare.is.connected ) {\n this.$cfSelector.change( function() {\n self.setExpiry.call( self, [this] );\n } );\n }\n\n return this;\n },\n\n setExpiry: function( selector ) {\n this.displaySpinner();\n const value = $(selector).val();\n Fetcher.cloudflare.setExpiration( value )\n .then( () => {\n window.location.reload();\n });\n },\n\n displaySpinner: function() {\n this.$spinner.css( 'visibility', 'visible' );\n }\n };\n}( jQuery ) );\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-cloudflare.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n WPHB_Admin.DashboardCloudFlare = {\n init: function( settings ) {\n this.currentStep = settings.currentStep;\n this.data = settings;\n this.email = settings.email;\n this.apiKey = settings.apiKey;\n this.$stepsContainer = $('#cloudflare-steps');\n this.$infoBox = $( '#cloudflare-info' );\n this.$spinner = $( '.cloudflare-spinner' );\n this.$deactivateButton = $('#wphb-box-dashboard-cloudflare').find('.box-title .buttons');\n\n this.renderStep( this.currentStep );\n\n $('body').on( 'click', '.cloudflare-clear-cache .button', function(e ) {\n e.preventDefault();\n this.purgeCache.apply( $(e.target), [this] );\n }.bind(this));\n\n },\n\n purgeCache: function( self ) {\n // Show spinner\n\t\t\tconst $button = this;\n\t\t\t$button.attr( 'disabled', true );\n\t\t\tself.showSpinner();\n\n Fetcher.cloudflare.purgeCache()\n .then( () => {\n // Show notice\n\t\t\t\t\tconst $notice = $('#wphb-notice-cloudflare-purge-cache');\n\t\t\t\t\twindow.scrollTo(0, 0);\n\t\t\t\t\t$notice.slideDown();\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$notice.slideUp();\n\t\t\t\t\t}, 5e3);\n // Remove spinner\n\t\t\t\t\t$button.removeAttr( 'disabled' );\n\t\t\t\t\tself.hideSpinner();\n });\n },\n\n renderStep: function( step ) {\n const template = WPHB_Admin.DashboardCloudFlare.template( '#cloudflare-step-' + step );\n const content = template( this.data );\n const self = this;\n\n if ( content ) {\n this.currentStep = step;\n this.$stepsContainer\n .hide()\n .html( template( this.data ) )\n .fadeIn()\n .find( 'form' )\n .on( 'submit', function( e ) {\n e.preventDefault();\n self.submitStep.call( self, $(this) );\n });\n\n this.$spinner = this.$stepsContainer.find( '.cloudflare-spinner' );\n }\n\n this.bindEvents();\n },\n\n bindEvents: function() {\n const $howToInstructions = $('#cloudflare-how-to');\n\n $howToInstructions.hide();\n\n $('#cloudflare-how-to-title > a').click( function( e ) {\n e.preventDefault();\n $howToInstructions.toggle();\n });\n\n this.$stepsContainer.find( 'select' ).each( function() {\n\t\t\t\twindow.WDP.wpmuSelect( this );\n });\n\n if ( 'final' === this.currentStep ) {\n this.$deactivateButton.removeClass( 'hidden' );\n } else {\n this.$deactivateButton.addClass( 'hidden' );\n }\n },\n\n emptyInfoBox: function() {\n this.$infoBox.html('');\n this.$infoBox.removeClass();\n },\n\n showInfoBox: function( message ) {\n this.$infoBox.addClass( 'wphb-notice' );\n this.$infoBox.addClass( 'wphb-notice-error' );\n this.$infoBox.html( message + '' );\n },\n\n showSpinner: function() {\n this.$spinner.css( 'visibility', 'visible' );\n },\n\n hideSpinner: function() {\n this.$spinner.css( 'visibility', 'hidden' );\n },\n\n submitStep: function( $form ) {\n\t\t\tconst self = this;\n\n\t\t\t$form.find( 'input[type=submit]' ).attr( 'disabled', 'true' );\n\t\t\tthis.emptyInfoBox();\n\t\t\tthis.showSpinner();\n\n\t\t\tFetcher.cloudflare.connect( this.currentStep, $form.serialize(), this.data )\n .then( ( response ) => {\n\t\t\t\t\tself.data = response.newData;\n\t\t\t\t\tself.renderStep( response.nextStep );\n\n\t\t\t\t\tif ( response.nextStep === 'final' ) {\n\t\t\t\t\t\twindow.location.href = response.redirect;\n\t\t\t\t\t}\n })\n\t\t\t\t.catch( ( error ) => {\n\t\t\t\t\tself.showInfoBox( error );\n\t\t\t\t});\n\n\t\t\t$form.find( 'input[type=submit]' ).removeAttr( 'disabled' );\n\t\t\tself.hideSpinner();\n }\n };\n\n WPHB_Admin.DashboardCloudFlare.template = _.memoize(function ( id ) {\n let compiled,\n options = {\n evaluate: /<#([\\s\\S]+?)#>/g,\n interpolate: /\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/g,\n escape: /\\{\\{([^\\}]+?)\\}\\}(?!\\})/g,\n variable: 'data'\n };\n\n return function ( data ) {\n _.templateSettings = options;\n compiled = compiled || _.template( $( id ).html() );\n return compiled( data );\n };\n });\n}(jQuery));\n\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-dashboard-cloudflare.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n WPHB_Admin.dashboard = {\n module: 'dashboard',\n\n init: function() {\n const self = this;\n\n\t\t\tif (wphbDashboardStrings)\n\t\t\t\tthis.strings = wphbDashboardStrings;\n\n $('#wphb-activate-minification').change( function() {\n const value = $(this).val();\n Fetcher.dashboard.toggleMinification( value )\n .then( () => {\n // If disabled, uncheck CDN checkbox and disable it.\n const CDNcheckbox = $('input[name=\"use_cdn\"]');\n if ( 'false' === value ) {\n CDNcheckbox.prop( 'checked', false );\n CDNcheckbox.prop( 'disabled', true );\n } else {\n CDNcheckbox.prop( 'disabled', false );\n }\n self.showNotice();\n });\n });\n\n $('#use_cdn').change( function() {\n const value = $(this).is(':checked');\n Fetcher.minification.toggleCDN( value )\n .then( () => {\n self.showNotice();\n });\n });\n\n $('.wphb-performance-report-item').click( function() {\n const url = $(this).data( 'performance-url' );\n if ( url ) {\n location.href = url;\n }\n });\n return this;\n },\n\n /**\n * Notice on settings update.\n */\n showNotice: function () {\n const notice = $('#wphb-notice-minification-settings-updated');\n notice.slideDown();\n setTimeout( function() {\n notice.slideUp();\n }, 5000 );\n },\n\n\t\t/**\n * Run quick setup.\n\t\t */\n\t\tstartQuickSetup: function () {\n // Show quick setup modal\n\t\t\twindow.WDP.showOverlay( '#wphb-quick-setup-modal', { class: 'wphb-modal small wphb-quick-setup-modal no-close' } );\n },\n\n\t\t/**\n * Skip quick setup.\n\t\t */\n\t\tskipSetup: function () {\n Fetcher.dashboard.skipSetup()\n .then( () => {\n window.location.reload(true);\n });\n },\n\n\t\t/**\n * Run performance test after quick setup.\n\t\t */\n\t\trunPerformanceTest: function() {\n\t\t\t// Show quick setup modal\n\t\t\twindow.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' } );\n\n\t\t\t// Run performance test\n\t\t\tconst module = WPHB_Admin.getModule('performance');\n\t\t\tmodule.performanceTest( this.strings.finishedTestURLsLink );\n }\n };\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-dashboard.js","import Fetcher from './utils/fetcher';\n\n(function($) {\n WPHB_Admin.gzip = {\n module: \"gzip\",\n selectedServer: \"\",\n $serverSelector: null,\n $serverInstructions: [],\n\n init: function() {\n const self = this;\n\n this.$serverSelector = $(\"#wphb-server-type\");\n this.selectedServer = this.$serverSelector.val();\n let instructionsList = $(\".wphb-server-instructions\");\n instructionsList.each(function() {\n self.$serverInstructions[$(this).data(\"server\")] = $(this);\n });\n this.showServerInstructions(this.selectedServer);\n this.$serverSelector.change(function() {\n const value = $(this).val();\n self.hideCurrentInstructions();\n self.showServerInstructions(value);\n self.setServer(value);\n self.selectedServer = value;\n });\n $(\"#toggle-apache-instructions\").click(function(e) {\n e.preventDefault();\n $(\".apache-instructions\").toggle();\n });\n $(\"#toggle-litespeed-instructions\").click(function(e) {\n e.preventDefault();\n $(\".litespeed-instructions\").toggle();\n });\n return this;\n },\n\n hideCurrentInstructions: function() {\n const selected = this.selectedServer;\n if (this.$serverInstructions[selected]) {\n this.$serverInstructions[selected].hide();\n }\n },\n\n showServerInstructions: function(server) {\n if (typeof this.$serverInstructions[server] !== \"undefined\") {\n this.$serverInstructions[server].show();\n }\n if (\"apache\" === server || 'LiteSpeed' === server) {\n $(\"#enable-cache-wrap\").show();\n } else {\n $(\"#enable-cache-wrap\").hide();\n }\n },\n\n setServer: function( value ) {\n Fetcher.caching.setServer( value );\n },\n };\n})(jQuery);\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-gzip.js","( function( $ ) {\n 'use strict';\n\n let WPHB_Admin = {\n modules: [],\n // Common functionality to all screens\n init: function() {\n\n\t\t\t$('body').on('change', '.mobile-nav', function () {\n\t\t\t\tlet url = $(this).val();\n\t\t\t\tif (url.length > 0) {\n\t\t\t\t\tlocation.href = url;\n\t\t\t\t}\n\t\t\t});\n\n function updatePerformanceGraph($wrap){\n let $item = $wrap.find('.wphb-score-result-label'),\n val = parseInt($item.text(), 10) || 100,\n $circle = $wrap.find(\".wphb-score-graph-result\"),\n r, c, pct\n ;\n r = $circle.attr('r');\n c = Math.PI*(r*2);\n\n if (val < 0) { val = 0;}\n if (val > 100) { val = 100;}\n\n pct = ((100-val)/100)*c;\n\n $circle.css({ strokeDashoffset: pct});\n }\n\n function updatePerformanceResultsGraphs(){\n\n // Update Overall Score\n $(\".wphb-performance-report-overall-score\").each(function(){\n updatePerformanceGraph($(this));\n });\n\n // Update Current Score\n $(\".wphb-performance-report-current-score\").each(function(){\n updatePerformanceGraph($(this));\n });\n\n // Update All Scores\n $(\".wphb-performance-report-item-score\").each(function(){\n updatePerformanceGraph($(this));\n });\n\n }\n window.register_events_performance = function(){\n setTimeout(updatePerformanceResultsGraphs, 500);\n };\n $(function(){ setTimeout(updatePerformanceResultsGraphs, 500); });\n\n },\n initModule: function( module ) {\n if ( this.hasOwnProperty( module ) ) {\n this.modules[ module ] = this[ module ].init();\n return this.modules[ module ];\n }\n\n return {};\n },\n getModule: function( module ) {\n if ( typeof this.modules[ module ] !== 'undefined' )\n return this.modules[ module ];\n else\n return this.initModule( module );\n }\n };\n \n\n WPHB_Admin.utils = {\n\n membershipModal: {\n open: function() {\n $( '#wphb-upgrade-membership-modal-link').trigger( 'click' );\n }\n },\n\n post: function( data, module ) {\n data.action = 'wphb_ajax';\n data.module = module;\n return $.ajax({\n url: ajaxurl,\n method: 'POST',\n data: data\n });\n }\n };\n\n WPHB_Admin.notices = {\n\n init: function() {\n $( '.wphb-notice:not(.notice) a.wphb-dismiss').click( function( e ) {\n e.preventDefault();\n let id = $(this).data( 'id' );\n let nonce = $(this).data( 'nonce' );\n\n $(this).parent( '.error' ).hide();\n });\n }\n };\n\n window.WPHB_Admin = WPHB_Admin;\n\n}( jQuery ) );\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-main.js","import Fetcher from './utils/fetcher';\nimport { __, getLink } from './utils/helpers';\nimport Row from './minification/Row';\nimport RowsCollection from './minification/RowsCollection';\n\n( function( $ ) {\n 'use strict';\n\n WPHB_Admin.minification = {\n\n $checkFilesButton: null,\n $checkFilesResultsContainer : null,\n module: 'minification',\n checkURLSList: null,\n checkedURLS: 0,\n $spinner: null,\n\n init: function() {\n const self = this;\n\n // Filter action button on Minification page\n $('#wphb-minification-filter-button').on('click', function(e) {\n e.preventDefault();\n $('#wphb-minification-filter').toggle('slow');\n });\n\n // Check files button\n this.$checkFilesButton = $( '#check-files' );\n this.$disableMinification = $('#wphb-disable-minification');\n this.$spinner = $('.spinner');\n\n if ( this.$checkFilesButton.length ) {\n this.$checkFilesButton.click( function( e ) {\n e.preventDefault();\n\t\t\t\t\twindow.WDP.showOverlay(\"#check-files-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' } );\n $(this).attr('disabled', true);\n self.checkFiles( getLink( 'minification' ) );\n });\n }\n\n $('.wphb-discard').click( function(e) {\n e.preventDefault();\n\n if ( confirm( __( 'discardAlert' ) ) ) {\n location.reload();\n }\n return false;\n\n });\n\n $( '.wphb-enqueued-files input' ).on( 'change', function() {\n $('.wphb-discard').attr( 'disabled', false );\n });\n\n $('#use_cdn').change( function() {\n const cdn_value = $(this).is(':checked');\n Fetcher.minification.toggleCDN( cdn_value )\n .then( () => {\n const notice = $('#wphb-notice-minification-advanced-settings-updated');\n notice.slideDown();\n setTimeout( function() {\n notice.slideUp();\n }, 5000 );\n });\n });\n\n this.$disableMinification.change( function() {\n const value = $(this).is(':checked');\n\n self.$spinner.css( 'visibility', 'visible' );\n\n if ( self.timer && value ) {\n clearTimeout( self.timer );\n self.$spinner.css( 'visibility', 'hidden' );\n }\n\n self.timer = setTimeout( function() {\n Fetcher.minification.toggleMinification( value )\n .then( () => {\n location.reload();\n });\n }, 3000 );\n\n\n });\n\n this.rowsCollection = new WPHB_Admin.minification.RowsCollection();\n\n const rows = $('.wphb-border-row');\n\n rows.each( function( index, row ) {\n let _row;\n if ( $(row).data('filter-secondary') ) {\n _row = new WPHB_Admin.minification.Row( $(row), $(row).data('filter'), $(row).data('filter-secondary') );\n }\n else {\n _row = new WPHB_Admin.minification.Row( $(row), $(row).data('filter') );\n }\n self.rowsCollection.push( _row );\n });\n\n $('#wphb-s').keyup( function() {\n self.rowsCollection.addFilter( $(this).val(), 'primary' );\n self.rowsCollection.applyFilters();\n });\n\n $('#wphb-secondary-filter').change( function() {\n self.rowsCollection.addFilter( $(this).val(), 'secondary' );\n self.rowsCollection.applyFilters();\n });\n\n $('.filter-toggles').change( function() {\n const element = $(this);\n const what = element.data('toggles');\n const value = element.prop( 'checked' );\n const visibleItems = self.rowsCollection.getVisibleItems();\n\n for ( let i in visibleItems ) {\n visibleItems[i].change( what, value );\n }\n });\n\n // Files selectors\n const filesList = $('input.wphb-minification-file-selector');\n filesList.click( function() {\n const $this = $( this );\n const element = self.rowsCollection.getItemById( $this.data( 'type' ), $this.data( 'handle' ) );\n if ( ! element ) {\n return;\n }\n\n if ( $this.is( ':checked' ) ) {\n element.select();\n }\n else {\n element.unSelect();\n }\n });\n\n const selectAll = $('#minification-bulk-file');\n selectAll.click( function() {\n const $this = $( this );\n let items = self.rowsCollection.getItems();\n for ( let i in items ) {\n if ( items.hasOwnProperty( i ) ) {\n if ( $this.is( ':checked' ) ) {\n items[i].select();\n }\n else {\n items[i].unSelect();\n }\n }\n }\n });\n\n // Include/exclude file checkbox\n $('.toggle-cross').on('click', function() {\n const $this = $(this);\n const checkbox = $this.find( 'input.toggle-include' );\n const row = self.rowsCollection.getItemById( $this.data( 'type' ), $this.data( 'handle' ) );\n // Mark the item as include or not in the rows list\n if ( row ) {\n row.change( 'include', ! checkbox.prop( 'checked' ) );\n row.getElement().find( 'input:not(.toggle-include)' ).prop('disabled', ! checkbox.prop( 'checked' ) );\n }\n });\n\n // Handle two CDN checkboxes on Minification page\n const checkboxes = $(\"input[type=checkbox][name=use_cdn]\");\n checkboxes.change( function() {\n const checkedState = $(this).prop('checked');\n\n checkboxes.each( function() {\n this.checked = checkedState;\n });\n });\n\n /* Show details of minification row on mobile devices */\n $('body').on('click', '.wphb-minification-file-details', function() {\n if ( window.innerWidth < 783 ) {\n $(this).parent().find('.wphb-minification-row-details').toggle('slow');\n }\n });\n\n /*\n Catch window resize and revert styles for responsive divs\n 1/4 of a second should be enough to trigger during device rotations (from portrait to landscape mode)\n */\n let minification_resize_rows = _.debounce(function() {\n\n if ( window.innerWidth >= 783 ) {\n $('.wphb-minification-row-details').css('display', 'flex');\n } else {\n $('.wphb-minification-row-details').css('display', 'none');\n }\n\n }, 250);\n\n window.addEventListener('resize', minification_resize_rows);\n\n return this;\n },\n\n checkFiles: function( redirect ) {\n const self = this;\n\n if ( typeof redirect === 'undefined' )\n redirect = false;\n\n if ( ! self.minificationStarted ) {\n // Store the progress in session storage to persist during page reloads\n // If there is no previous value, we init one with 10%\n if ( sessionStorage.getItem('progress') === null ) {\n sessionStorage.setItem('progress', 10);\n }\n\n // Update progress bar\n const progress = sessionStorage.getItem('progress');\n this.updateProgressBar( progress );\n\n // Send an AJAX request that will flag the check files as started\n Fetcher.minification.startCheck( progress )\n .then( ( response ) => {\n // Set the number of steps to be used in percentage count. Only if not set already.\n if ( ( typeof response.steps !== 'undefined' ) && ( sessionStorage.getItem('steps') === null ) ) {\n sessionStorage.setItem('steps', response.steps);\n }\n\n self.minificationStarted = true;\n self.checkFiles( redirect );\n });\n }\n else {\n const progress = sessionStorage.getItem('progress');\n const step = Math.round( 80 / sessionStorage.getItem('steps') );\n Fetcher.minification.checkStep( progress, step )\n .then( ( response ) => {\n if ( typeof response.finished !== 'undefined' ) {\n // Finished\n if ( response.finished && redirect ) {\n // Clear session storage\n sessionStorage.clear();\n\n // Update progress bar\n this.updateProgressBar( 100 );\n\n // Show enable cdn modal only for members\n if ( true === response.show_cdn && $('#enable-cdn-modal').length ) {\n WDP.showOverlay( '#enable-cdn-modal', { class: 'wphb-modal small wphb-progress-modal no-close' } );\n } else {\n window.location.href = redirect;\n }\n }\n // Next step\n else if ( ! response.finished ) {\n // Store the progress in session storage to persist during page reloads\n let progress = parseInt( sessionStorage.getItem('progress') ) + Math.round( 80 / sessionStorage.getItem('steps') );\n sessionStorage.setItem( 'progress', progress );\n\n // Update progress bar.\n this.updateProgressBar( progress );\n\n // Wait 3 seconds before calling again\n window.setTimeout( function() {\n self.checkFiles( redirect );\n }, 3000);\n }\n } else {\n // Error\n window.location.href = redirect;\n }\n });\n } // End else\n\n }, // End checkFiles\n\n updateProgressBar: function( progress, cancel = false ) {\n if ( progress > 100 ) {\n progress = 100;\n }\n // Update progress bar\n $('.wphb-scan-progress .wphb-scan-progress-text span').text( progress + '%' );\n if ( progress >= 90 ) {\n $('.wphb-progress-state .wphb-progress-state-text').text('Finalizing...');\n }\n if ( cancel ) {\n\t\t\t\t$('.wphb-progress-state .wphb-progress-state-text').text('Cancelling...');\n }\n $('.wphb-scan-progress .wphb-scan-progress-bar span').width( progress + '%' );\n },\n\n cancelScan: function() {\n Fetcher.minification.cancelScan()\n .then( () => {\n\t\t\t\t\t// Clear session storage\n\t\t\t\t\tsessionStorage.clear();\n\n\t\t\t\t\tthis.updateProgressBar( 0, true );\n\n\t\t\t\t\t// Reload page\n window.location.href = getLink( 'minification' );\n });\n }\n\n }; // End WPHB_Admin.minification\n\n WPHB_Admin.minification.Row = Row;\n WPHB_Admin.minification.RowsCollection = RowsCollection;\n\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-minification.js","import Fetcher from './utils/fetcher';\n\n( function( $ ) {\n 'use strict';\n WPHB_Admin.performance = {\n\n module: 'performance',\n iteration: 0,\n progress: 0,\n\n init: function () {\n\n let self = this;\n let body = $('body');\n\n if (wphbPerformanceStrings)\n this.strings = wphbPerformanceStrings;\n\n this.$runTestButton = $('#run-performance-test');\n\n let performanceReportTable = $(\".performance-report-table\");\n\n performanceReportTable.off('click', 'button');\n performanceReportTable.on('click', '.wphb-performance-report-item-cta .additional-content-opener' && 'tr.wphb-performance-report-item', function (e) {\n e.preventDefault();\n\n let getParentPerformanceItem = $(this).closest(\".wphb-performance-report-item\"),\n getNextAdditionalContentRow = getParentPerformanceItem.nextUntil(\".wphb-performance-report-item\");\n\n getNextAdditionalContentRow.toggleClass(\"wphb-performance-report-item-additional-content-opened\");\n\n if (getNextAdditionalContentRow.hasClass(\"wphb-performance-report-item-additional-content-opened\")) {\n getParentPerformanceItem.addClass(\"wphb-performance-report-item-opened\");\n } else {\n getParentPerformanceItem.removeClass(\"wphb-performance-report-item-opened\");\n }\n\n });\n\n if (this.$runTestButton.length) {\n this.$runTestButton.click(function (e) {\n e.preventDefault();\n\t\t\t\t\twindow.WDP.showOverlay(\"#run-performance-test-modal\", { class: 'wphb-modal small wphb-progress-modal no-close' } );\n $(this).attr('disabled', true);\n self.performanceTest(self.strings.finishedTestURLsLink);\n });\n }\n\n // If a hash is present in URL, let's open the rule extra content\n const hash = window.location.hash;\n if (hash) {\n const row = $(hash);\n if (row.length) {\n row.find('.trigger-additional-content').trigger('click');\n }\n\n }\n\n // Schedule show/hide day of week\n $('select[name=\"email-frequency\"]').change(function () {\n if ( '1' === $(this).val() ) {\n $(this).closest('.schedule-box').find('div.days-container').hide();\n } else {\n $(this).closest('.schedule-box').find('div.days-container').show();\n }\n }).change();\n\n // Remove recipient\n body.on('click', '.wphb-remove-recipient', function (e) {\n e.preventDefault();\n $(this).closest('.recipient').remove();\n $('.scan-settings').find(\"input[id='scan_recipient'][value=\" + $(this).attr('data-id') + \"]\").remove();\n });\n\n // Add recipient\n $('#add-receipt').click(function () {\n const email = $(\"#wphb-username-search\").val();\n const name = $(\"#wphb-first-name\").val();\n Fetcher.performance.addRecipient( email, name )\n .then( ( response ) => {\n const user_row = $('<div class=\"recipient\"/>');\n\n const img = $('<img/>').attr({\n 'src': response.avatar,\n 'width': '30'\n });\n const name = $('<span/>').html(response.name);\n\n user_row.append('<span class=\"name\"/>');\n user_row.find('.name').append( img, name);\n\n\n user_row.append($('<span class=\"email\"/>').html(email));\n user_row.append($('<a/>').attr({\n 'data-id': response.user_id,\n 'class': 'remove float-r wphb-remove-recipient',\n 'href': '#',\n 'alt': self.strings.removeButtonText\n }).html('<i class=\"dev-icon dev-icon-cross\"></i>'));\n\n $('<input>').attr({\n type: 'hidden',\n id: 'scan_recipient',\n name: 'email-recipients[]',\n value: JSON.stringify( { email: response.email, name: response.name } )\n }).appendTo(user_row);\n\n $('.receipt .recipients').append(user_row);\n $(\"#wphb-username-search\").val('');\n $(\"#wphb-first-name\").val('');\n })\n .catch( ( error ) => {\n alert( error.message );\n } );\n return false;\n });\n\n // Save report settings\n body.on('submit', '.scan-frm', function (e) {\n e.preventDefault();\n const form_data = $(this).serialize();\n let that = $(this);\n\n that.find('.button').attr('disabled', 'disabled');\n\n Fetcher.performance.saveReportsSettings( form_data )\n .then( () => {\n that.find('.button').removeAttr('disabled');\n self.showUpdateMessage();\n });\n return false;\n });\n\n return this;\n\n },\n\n showUpdateMessage: function () {\n const notice = $('#wphb-notice-performance-report-settings-updated');\n window.scrollTo(0,0);\n notice.slideDown();\n setTimeout( function() {\n notice.slideUp();\n }, 5000 );\n },\n\n\t\tperformanceTest: function ( redirect ) {\n\t\t\tconst self = this;\n\n if ( typeof redirect === 'undefined' )\n redirect = false;\n\n // Update progress bar\n self.updateProgressBar();\n\n Fetcher.performance.runTest()\n .then( ( response ) => {\n\t\t\t\t\tif ( ! response.finished ) {\n\t\t\t\t\t\t// Try again 5 seconds later\n\t\t\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t\t\tself.performanceTest( redirect );\n\t\t\t\t\t\t}, 5000);\n\t\t\t\t\t} else if ( redirect ) {\n window.location = redirect;\n\t\t\t\t\t}\n });\n },\n\n updateProgressBar: function() {\n\t\t\tif ( this.progress < 90 ) {\n\t\t\t\tthis.progress += 35;\n\t\t\t}\n\t\t\tif ( this.progress > 100 ) {\n\t\t\t\tthis.progress = 90;\n\t\t\t}\n\t\t\t$('.wphb-scan-progress .wphb-scan-progress-text span').text( this.progress + '%' );\n\t\t\t$('.wphb-scan-progress .wphb-scan-progress-bar span').attr( 'style', 'width:' + this.progress + '%' );\n }\n };\n}( jQuery ));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-performance.js","( function( $ ) {\n WPHB_Admin.uptime = {\n module: 'uptime',\n $dataRangeSelector: null,\n chartData: null,\n timer:null,\n $spinner: null,\n init: function() {\n this.$spinner = $('.spinner');\n this.strings = wphbUptimeStrings;\n this.$dataRangeSelector = $( '#wphb-uptime-data-range' );\n this.chartData = $('#uptime-chart-json').val();\n this.$disableUptime = $('#wphb-disable-uptime');\n\n this.$dataRangeSelector.change( function() {\n window.location.href = $(this).find( ':selected' ).data( 'url' );\n });\n\n var self = this;\n this.$disableUptime.change( function() {\n self.$spinner.css( 'visibility', 'visible' );\n var value = $(this).is(':checked');\n if ( value && self.timer ) {\n clearTimeout( self.timer );\n self.$spinner.css( 'visibility', 'hidden' );\n }\n else {\n // you have 3 seconds to change your mind\n self.timer = setTimeout( function() {\n location.href = self.strings.disableUptimeURL;\n }, 3000 );\n }\n\n return;\n });\n\n this.drawChart();\n\n /* Re-check Uptime status */\n $('#uptime-re-check-status').on( 'click', function(e){\n e.preventDefault();\n location.reload();\n });\n },\n\n drawChart: function() {\n var data = new google.visualization.DataTable();\n data.addColumn('datetime', 'Day');\n data.addColumn('number', 'Response Time (ms)');\n\n var chart_array = JSON.parse( this.chartData );\n for (var i = 0; i < chart_array.length; i++) {\n chart_array[i][0] = new Date( chart_array[i][0] );\n chart_array[i][1] = Math.round( chart_array[i][1] );\n\n /* brings the graph below the x axis */\n if ( Math.round( chart_array[i][1] ) == 0 ) {\n chart_array[i][1] = -100;\n }\n\n }\n\n data.addRows(chart_array);\n\n var options = {\n chartArea: {\n left: 80,\n top: 20,\n width: '90%',\n height: '90%'\n },\n colors: ['#24ADE5'],\n curveType: 'function',\n /*interpolateNulls: true,*/\n legend: { position: 'none' },\n vAxis: {\n format: '#,### ms',\n viewWindow: { min: 0 } /* don't display negative values */\n },\n tooltip: { isHtml: true },\n series: {\n 0: { axis: 'Resp' }\n },\n axes: {\n y: {\n Resp: { label: 'Response Time (ms)' }\n }\n }\n };\n\n var chart = new google.visualization.LineChart(document.getElementById('uptime-chart'));\n chart.draw(data, options);\n\n $(window).resize(function(){\n chart.draw(data, options);\n });\n }\n };\n}(jQuery));\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/admin-uptime.js","require('./admin-main.js');\nrequire('./admin-performance.js');\nrequire('./admin-gzip.js');\nrequire('./admin-caching.js');\nrequire('./admin-minification.js');\nrequire('./admin-dashboard.js');\nrequire('./admin-dashboard-cloudflare.js');\nrequire('./admin-uptime.js');\nrequire('./admin-cloudflare.js');\nrequire('./admin-app.js');\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/index.js","const Row = ( _element, _filter, _filter_sec ) => {\n let $el = _element,\n filter = _filter.toLowerCase(),\n filterSecondary = false,\n selected = false,\n visible = true;\n\n const $include = $el.find( '.toggle-include' ),\n $combine = $el.find( '.toggle-combine' ),\n $minify = $el.find( '.toggle-minify' ),\n $posFooter = $el.find( '.toggle-position-footer' ),\n $disableIcon = $el.find( '.toggle-cross > i' );\n\n if ( _filter_sec ) {\n filterSecondary = _filter_sec.toLowerCase();\n }\n\n return {\n hide: function() {\n $el.addClass( 'out-of-filter' );\n visible = false;\n },\n\n show: function() {\n $el.removeClass( 'out-of-filter' );\n visible = true;\n },\n\n getElement: function() {\n return $el;\n },\n\n getId: function() {\n return $el.attr( 'id' );\n },\n\n getFilter: function() {\n return filter;\n },\n\n matchFilter: function( text ) {\n if ( text === '' ) {\n return true;\n }\n\n text = text.toLowerCase();\n return filter.search( text ) > - 1;\n },\n\n matchSecondaryFilter: function( text ) {\n if ( text === '' ) {\n return true;\n }\n\n if ( ! filterSecondary ) {\n return false;\n }\n\n text = text.toLowerCase();\n return filterSecondary === text;\n },\n\n isVisible: function() {\n return visible;\n },\n\n isSelected: function() {\n return selected;\n },\n\n select: function() {\n selected = true;\n },\n\n unSelect: function() {\n selected = false;\n },\n\n change: function( what, value ) {\n switch ( what ) {\n case 'minify': {\n $minify.prop( 'checked', value );\n break;\n }\n case 'combine': {\n $combine.prop( 'checked', value );\n break;\n }\n case 'include': {\n $disableIcon.removeClass();\n $include.prop( 'checked', value );\n if ( value ) {\n $el.removeClass( 'disabled' );\n $disableIcon.addClass( 'dev-icon dev-icon-cross' );\n $include.attr( 'checked', true );\n } else {\n $el.addClass( 'disabled' );\n $disableIcon.addClass( 'wdv-icon wdv-icon-refresh' );\n $include.removeAttr( 'checked' );\n }\n break;\n }\n case 'footer': {\n $posFooter.prop( 'checked', value );\n break;\n }\n }\n }\n\n };\n};\n\nexport default Row;\n\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/minification/Row.js","const RowsCollection = () => {\n let items = [];\n let currentFilter = '';\n let currentSecondaryFilter = '';\n\n return {\n push: function( row ) {\n if ( typeof row === 'object' ) {\n items.push( row );\n }\n },\n\n getItems: function() {\n return items;\n },\n\n getItem: function( i ) {\n if ( items[i] ) {\n return items[i];\n }\n return false;\n },\n\n /**\n * Get a collection item by type and ID\n * @param type\n * @param id\n */\n getItemById: function( type, id ) {\n let value = false;\n for ( let i in items ) {\n if ( 'wphb-file-' + type + '-' + id === items[i].getId() ) {\n value = items[i];\n break;\n }\n }\n return value;\n },\n\n getVisibleItems: function() {\n let visible = [];\n for ( let i in items ) {\n if ( items[i].isVisible() ) {\n visible.push( items[i] );\n }\n }\n return visible;\n },\n\n getSelectedItems: function() {\n let selected = [];\n\n for ( let i in items ) {\n if ( items[i].isVisible() && items[i].isSelected() ) {\n selected.push( items[i] );\n }\n }\n\n return selected;\n },\n\n addFilter: function( filter, type ) {\n if ( type === 'secondary' ) {\n currentSecondaryFilter = filter;\n }\n else {\n currentFilter = filter;\n }\n },\n\n applyFilters: function() {\n for ( let i in items ) {\n if ( items[i] ) {\n if ( items[i].matchFilter( currentFilter ) && items[i].matchSecondaryFilter( currentSecondaryFilter ) ) {\n items[i].show();\n }\n else {\n items[i].hide();\n }\n }\n\n }\n }\n };\n};\n\nexport default RowsCollection;\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/minification/RowsCollection.js","/**\n * Strings internationalization\n *\n * @param str\n *\n * @returns {*|string}\n */\nexport const __ = ( str ) => {\n return wphb.strings[ str ] || '';\n};\n\n/**\n * Get a link to a HB screen\n *\n * @param {string} screen Screen slug\n * @returns {string}\n */\nexport const getLink = ( screen ) => {\n return wphb.links[ screen ] || '';\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./_src/admin/js/utils/helpers.js","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es6-promise/dist/es6-promise.js\n// module id = 33\n// module chunks = 0","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_apply.js\n// module id = 34\n// module chunks = 0","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayLikeKeys.js\n// module id = 35\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsArguments.js\n// module id = 36\n// module chunks = 0","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsNative.js\n// module id = 37\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsTypedArray.js\n// module id = 38\n// module chunks = 0","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseKeys.js\n// module id = 39\n// module chunks = 0","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseRest.js\n// module id = 40\n// module chunks = 0","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseSetToString.js\n// module id = 41\n// module chunks = 0","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseTimes.js\n// module id = 42\n// module chunks = 0","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseUnary.js\n// module id = 43\n// module chunks = 0","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_copyObject.js\n// module id = 44\n// module chunks = 0","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_coreJsData.js\n// module id = 45\n// module chunks = 0","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createAssigner.js\n// module id = 46\n// module chunks = 0","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getNative.js\n// module id = 47\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getRawTag.js\n// module id = 48\n// module chunks = 0","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getValue.js\n// module id = 49\n// module chunks = 0","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIterateeCall.js\n// module id = 50\n// module chunks = 0","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isMasked.js\n// module id = 51\n// module chunks = 0","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nativeKeys.js\n// module id = 52\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nodeUtil.js\n// module id = 53\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_objectToString.js\n// module id = 54\n// module chunks = 0","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_overArg.js\n// module id = 55\n// module chunks = 0","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_overRest.js\n// module id = 56\n// module chunks = 0","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setToString.js\n// module id = 57\n// module chunks = 0","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_shortOut.js\n// module id = 58\n// module chunks = 0","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_toSource.js\n// module id = 59\n// module chunks = 0","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/assign.js\n// module id = 60\n// module chunks = 0","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/constant.js\n// module id = 61\n// module chunks = 0","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArguments.js\n// module id = 62\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArray.js\n// module id = 63\n// module chunks = 0","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isBuffer.js\n// module id = 64\n// module chunks = 0","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isTypedArray.js\n// module id = 65\n// module chunks = 0","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/keys.js\n// module id = 66\n// module chunks = 0","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/stubFalse.js\n// module id = 67\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 68\n// module chunks = 0"],"sourceRoot":""}
admin/views/caching/cloudflare-meta-box.php CHANGED
@@ -23,7 +23,7 @@ $cloudflare_js_settings = array(
23
  'zone' => wphb_get_setting( 'cloudflare-zone' ),
24
  'zoneName' => wphb_get_setting( 'cloudflare-zone-name' ),
25
  'plan' => $cf_module->get_plan(),
26
- 'zones' => $zones
27
  );
28
 
29
  $cloudflare_js_settings = wp_json_encode( $cloudflare_js_settings );
23
  'zone' => wphb_get_setting( 'cloudflare-zone' ),
24
  'zoneName' => wphb_get_setting( 'cloudflare-zone-name' ),
25
  'plan' => $cf_module->get_plan(),
26
+ 'zones' => $zones,
27
  );
28
 
29
  $cloudflare_js_settings = wp_json_encode( $cloudflare_js_settings );
admin/views/modals/check-performance-modal.php CHANGED
@@ -1,13 +1,6 @@
1
- <<<<<<< HEAD
2
- <dialog class="wphb-modal small wphb-progress-modal no-close" id="run-performance-test-modal" title="<?php _e( 'Test in progress', 'wphb' ); ?>">
3
- <div class="wphb-dialog-content">
4
- <p><?php _e( 'Hummingbird is running a test to measure your website performance, please wait.', 'wphb' ); ?></p>
5
- <?php $progress = get_option( 'wphb-minification-check-files-progress' ); ?>
6
- =======
7
  <dialog class="wphb-modal small wphb-progress-modal no-close" id="run-performance-test-modal" title="<?php esc_attr_e( 'Test in progress', 'wphb' ); ?>">
8
  <div class="wphb-dialog-content">
9
  <p><?php esc_html_e( 'Hummingbird is running a test to measure your website performance, please wait.', 'wphb' ); ?></p>
10
- >>>>>>> b8f82a5... Update code to support IE browsers
11
 
12
  <div class="wphb-block-test" id="run-performance-test-modal-modal-content">
13
  <div class="wphb-scan-progress">
 
 
 
 
 
 
1
  <dialog class="wphb-modal small wphb-progress-modal no-close" id="run-performance-test-modal" title="<?php esc_attr_e( 'Test in progress', 'wphb' ); ?>">
2
  <div class="wphb-dialog-content">
3
  <p><?php esc_html_e( 'Hummingbird is running a test to measure your website performance, please wait.', 'wphb' ); ?></p>
 
4
 
5
  <div class="wphb-block-test" id="run-performance-test-modal-modal-content">
6
  <div class="wphb-scan-progress">
composer.lock ADDED
@@ -0,0 +1,2562 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_readme": [
3
+ "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
+ "This file is @generated automatically"
6
+ ],
7
+ "content-hash": "7dc0eb9733ae5f06e765e58ab3e37c64",
8
+ "packages": [
9
+ {
10
+ "name": "behat/gherkin",
11
+ "version": "v4.4.5",
12
+ "source": {
13
+ "type": "git",
14
+ "url": "https://github.com/Behat/Gherkin.git",
15
+ "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74"
16
+ },
17
+ "dist": {
18
+ "type": "zip",
19
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74",
20
+ "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74",
21
+ "shasum": ""
22
+ },
23
+ "require": {
24
+ "php": ">=5.3.1"
25
+ },
26
+ "require-dev": {
27
+ "phpunit/phpunit": "~4.5|~5",
28
+ "symfony/phpunit-bridge": "~2.7|~3",
29
+ "symfony/yaml": "~2.3|~3"
30
+ },
31
+ "suggest": {
32
+ "symfony/yaml": "If you want to parse features, represented in YAML files"
33
+ },
34
+ "type": "library",
35
+ "extra": {
36
+ "branch-alias": {
37
+ "dev-master": "4.4-dev"
38
+ }
39
+ },
40
+ "autoload": {
41
+ "psr-0": {
42
+ "Behat\\Gherkin": "src/"
43
+ }
44
+ },
45
+ "notification-url": "https://packagist.org/downloads/",
46
+ "license": [
47
+ "MIT"
48
+ ],
49
+ "authors": [
50
+ {
51
+ "name": "Konstantin Kudryashov",
52
+ "email": "ever.zet@gmail.com",
53
+ "homepage": "http://everzet.com"
54
+ }
55
+ ],
56
+ "description": "Gherkin DSL parser for PHP 5.3",
57
+ "homepage": "http://behat.org/",
58
+ "keywords": [
59
+ "BDD",
60
+ "Behat",
61
+ "Cucumber",
62
+ "DSL",
63
+ "gherkin",
64
+ "parser"
65
+ ],
66
+ "time": "2016-10-30T11:50:56+00:00"
67
+ },
68
+ {
69
+ "name": "codeception/codeception",
70
+ "version": "2.3.4",
71
+ "source": {
72
+ "type": "git",
73
+ "url": "https://github.com/Codeception/Codeception.git",
74
+ "reference": "b5391497f9a3c9d0a9c02ae39b53441e413e35a8"
75
+ },
76
+ "dist": {
77
+ "type": "zip",
78
+ "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b5391497f9a3c9d0a9c02ae39b53441e413e35a8",
79
+ "reference": "b5391497f9a3c9d0a9c02ae39b53441e413e35a8",
80
+ "shasum": ""
81
+ },
82
+ "require": {
83
+ "behat/gherkin": "~4.4.0",
84
+ "ext-json": "*",
85
+ "ext-mbstring": "*",
86
+ "facebook/webdriver": ">=1.0.1 <2.0",
87
+ "guzzlehttp/guzzle": ">=4.1.4 <7.0",
88
+ "guzzlehttp/psr7": "~1.0",
89
+ "php": ">=5.4.0 <8.0",
90
+ "phpunit/php-code-coverage": ">=2.2.4 <6.0",
91
+ "phpunit/phpunit": ">4.8.20 <7.0",
92
+ "phpunit/phpunit-mock-objects": ">2.3 <5.0",
93
+ "sebastian/comparator": ">1.1 <3.0",
94
+ "sebastian/diff": "^1.4",
95
+ "stecman/symfony-console-completion": "^0.7.0",
96
+ "symfony/browser-kit": ">=2.7 <4.0",
97
+ "symfony/console": ">=2.7 <4.0",
98
+ "symfony/css-selector": ">=2.7 <4.0",
99
+ "symfony/dom-crawler": ">=2.7.5 <4.0",
100
+ "symfony/event-dispatcher": ">=2.7 <4.0",
101
+ "symfony/finder": ">=2.7 <4.0",
102
+ "symfony/yaml": ">=2.7 <4.0"
103
+ },
104
+ "require-dev": {
105
+ "codeception/specify": "~0.3",
106
+ "facebook/graph-sdk": "~5.3",
107
+ "flow/jsonpath": "~0.2",
108
+ "league/factory-muffin": "^3.0",
109
+ "league/factory-muffin-faker": "^1.0",
110
+ "mongodb/mongodb": "^1.0",
111
+ "monolog/monolog": "~1.8",
112
+ "pda/pheanstalk": "~3.0",
113
+ "php-amqplib/php-amqplib": "~2.4",
114
+ "predis/predis": "^1.0",
115
+ "squizlabs/php_codesniffer": "~2.0",
116
+ "symfony/process": ">=2.7 <4.0",
117
+ "vlucas/phpdotenv": "^2.4.0"
118
+ },
119
+ "suggest": {
120
+ "codeception/specify": "BDD-style code blocks",
121
+ "codeception/verify": "BDD-style assertions",
122
+ "flow/jsonpath": "For using JSONPath in REST module",
123
+ "league/factory-muffin": "For DataFactory module",
124
+ "league/factory-muffin-faker": "For Faker support in DataFactory module",
125
+ "phpseclib/phpseclib": "for SFTP option in FTP Module",
126
+ "symfony/phpunit-bridge": "For phpunit-bridge support"
127
+ },
128
+ "bin": [
129
+ "codecept"
130
+ ],
131
+ "type": "library",
132
+ "extra": {
133
+ "branch-alias": []
134
+ },
135
+ "autoload": {
136
+ "psr-4": {
137
+ "Codeception\\": "src\\Codeception",
138
+ "Codeception\\Extension\\": "ext"
139
+ }
140
+ },
141
+ "notification-url": "https://packagist.org/downloads/",
142
+ "license": [
143
+ "MIT"
144
+ ],
145
+ "authors": [
146
+ {
147
+ "name": "Michael Bodnarchuk",
148
+ "email": "davert@mail.ua",
149
+ "homepage": "http://codegyre.com"
150
+ }
151
+ ],
152
+ "description": "BDD-style testing framework",
153
+ "homepage": "http://codeception.com/",
154
+ "keywords": [
155
+ "BDD",
156
+ "TDD",
157
+ "acceptance testing",
158
+ "functional testing",
159
+ "unit testing"
160
+ ],
161
+ "time": "2017-07-10T19:45:09+00:00"
162
+ },
163
+ {
164
+ "name": "doctrine/instantiator",
165
+ "version": "1.0.5",
166
+ "source": {
167
+ "type": "git",
168
+ "url": "https://github.com/doctrine/instantiator.git",
169
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
170
+ },
171
+ "dist": {
172
+ "type": "zip",
173
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
174
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
175
+ "shasum": ""
176
+ },
177
+ "require": {
178
+ "php": ">=5.3,<8.0-DEV"
179
+ },
180
+ "require-dev": {
181
+ "athletic/athletic": "~0.1.8",
182
+ "ext-pdo": "*",
183
+ "ext-phar": "*",
184
+ "phpunit/phpunit": "~4.0",
185
+ "squizlabs/php_codesniffer": "~2.0"
186
+ },
187
+ "type": "library",
188
+ "extra": {
189
+ "branch-alias": {
190
+ "dev-master": "1.0.x-dev"
191
+ }
192
+ },
193
+ "autoload": {
194
+ "psr-4": {
195
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
196
+ }
197
+ },
198
+ "notification-url": "https://packagist.org/downloads/",
199
+ "license": [
200
+ "MIT"
201
+ ],
202
+ "authors": [
203
+ {
204
+ "name": "Marco Pivetta",
205
+ "email": "ocramius@gmail.com",
206
+ "homepage": "http://ocramius.github.com/"
207
+ }
208
+ ],
209
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
210
+ "homepage": "https://github.com/doctrine/instantiator",
211
+ "keywords": [
212
+ "constructor",
213
+ "instantiate"
214
+ ],
215
+ "time": "2015-06-14T21:17:01+00:00"
216
+ },
217
+ {
218
+ "name": "facebook/webdriver",
219
+ "version": "1.4.1",
220
+ "source": {
221
+ "type": "git",
222
+ "url": "https://github.com/facebook/php-webdriver.git",
223
+ "reference": "eadb0b7a7c3e6578185197fd40158b08c3164c83"
224
+ },
225
+ "dist": {
226
+ "type": "zip",
227
+ "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/eadb0b7a7c3e6578185197fd40158b08c3164c83",
228
+ "reference": "eadb0b7a7c3e6578185197fd40158b08c3164c83",
229
+ "shasum": ""
230
+ },
231
+ "require": {
232
+ "ext-curl": "*",
233
+ "ext-zip": "*",
234
+ "php": "^5.5 || ~7.0",
235
+ "symfony/process": "^2.8 || ^3.1"
236
+ },
237
+ "require-dev": {
238
+ "friendsofphp/php-cs-fixer": "^2.0",
239
+ "php-mock/php-mock-phpunit": "^1.1",
240
+ "phpunit/phpunit": "4.6.* || ~5.0",
241
+ "satooshi/php-coveralls": "^1.0",
242
+ "squizlabs/php_codesniffer": "^2.6"
243
+ },
244
+ "type": "library",
245
+ "extra": {
246
+ "branch-alias": {
247
+ "dev-community": "1.5-dev"
248
+ }
249
+ },
250
+ "autoload": {
251
+ "psr-4": {
252
+ "Facebook\\WebDriver\\": "lib/"
253
+ }
254
+ },
255
+ "notification-url": "https://packagist.org/downloads/",
256
+ "license": [
257
+ "Apache-2.0"
258
+ ],
259
+ "description": "A PHP client for Selenium WebDriver",
260
+ "homepage": "https://github.com/facebook/php-webdriver",
261
+ "keywords": [
262
+ "facebook",
263
+ "php",
264
+ "selenium",
265
+ "webdriver"
266
+ ],
267
+ "time": "2017-04-28T14:54:49+00:00"
268
+ },
269
+ {
270
+ "name": "guzzlehttp/guzzle",
271
+ "version": "6.3.0",
272
+ "source": {
273
+ "type": "git",
274
+ "url": "https://github.com/guzzle/guzzle.git",
275
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699"
276
+ },
277
+ "dist": {
278
+ "type": "zip",
279
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699",
280
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699",
281
+ "shasum": ""
282
+ },
283
+ "require": {
284
+ "guzzlehttp/promises": "^1.0",
285
+ "guzzlehttp/psr7": "^1.4",
286
+ "php": ">=5.5"
287
+ },
288
+ "require-dev": {
289
+ "ext-curl": "*",
290
+ "phpunit/phpunit": "^4.0 || ^5.0",
291
+ "psr/log": "^1.0"
292
+ },
293
+ "suggest": {
294
+ "psr/log": "Required for using the Log middleware"
295
+ },
296
+ "type": "library",
297
+ "extra": {
298
+ "branch-alias": {
299
+ "dev-master": "6.2-dev"
300
+ }
301
+ },
302
+ "autoload": {
303
+ "files": [
304
+ "src/functions_include.php"
305
+ ],
306
+ "psr-4": {
307
+ "GuzzleHttp\\": "src/"
308
+ }
309
+ },
310
+ "notification-url": "https://packagist.org/downloads/",
311
+ "license": [
312
+ "MIT"
313
+ ],
314
+ "authors": [
315
+ {
316
+ "name": "Michael Dowling",
317
+ "email": "mtdowling@gmail.com",
318
+ "homepage": "https://github.com/mtdowling"
319
+ }
320
+ ],
321
+ "description": "Guzzle is a PHP HTTP client library",
322
+ "homepage": "http://guzzlephp.org/",
323
+ "keywords": [
324
+ "client",
325
+ "curl",
326
+ "framework",
327
+ "http",
328
+ "http client",
329
+ "rest",
330
+ "web service"
331
+ ],
332
+ "time": "2017-06-22T18:50:49+00:00"
333
+ },
334
+ {
335
+ "name": "guzzlehttp/promises",
336
+ "version": "v1.3.1",
337
+ "source": {
338
+ "type": "git",
339
+ "url": "https://github.com/guzzle/promises.git",
340
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
341
+ },
342
+ "dist": {
343
+ "type": "zip",
344
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
345
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
346
+ "shasum": ""
347
+ },
348
+ "require": {
349
+ "php": ">=5.5.0"
350
+ },
351
+ "require-dev": {
352
+ "phpunit/phpunit": "^4.0"
353
+ },
354
+ "type": "library",
355
+ "extra": {
356
+ "branch-alias": {
357
+ "dev-master": "1.4-dev"
358
+ }
359
+ },
360
+ "autoload": {
361
+ "psr-4": {
362
+ "GuzzleHttp\\Promise\\": "src/"
363
+ },
364
+ "files": [
365
+ "src/functions_include.php"
366
+ ]
367
+ },
368
+ "notification-url": "https://packagist.org/downloads/",
369
+ "license": [
370
+ "MIT"
371
+ ],
372
+ "authors": [
373
+ {
374
+ "name": "Michael Dowling",
375
+ "email": "mtdowling@gmail.com",
376
+ "homepage": "https://github.com/mtdowling"
377
+ }
378
+ ],
379
+ "description": "Guzzle promises library",
380
+ "keywords": [
381
+ "promise"
382
+ ],
383
+ "time": "2016-12-20T10:07:11+00:00"
384
+ },
385
+ {
386
+ "name": "guzzlehttp/psr7",
387
+ "version": "1.4.2",
388
+ "source": {
389
+ "type": "git",
390
+ "url": "https://github.com/guzzle/psr7.git",
391
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
392
+ },
393
+ "dist": {
394
+ "type": "zip",
395
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
396
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
397
+ "shasum": ""
398
+ },
399
+ "require": {
400
+ "php": ">=5.4.0",
401
+ "psr/http-message": "~1.0"
402
+ },
403
+ "provide": {
404
+ "psr/http-message-implementation": "1.0"
405
+ },
406
+ "require-dev": {
407
+ "phpunit/phpunit": "~4.0"
408
+ },
409
+ "type": "library",
410
+ "extra": {
411
+ "branch-alias": {
412
+ "dev-master": "1.4-dev"
413
+ }
414
+ },
415
+ "autoload": {
416
+ "psr-4": {
417
+ "GuzzleHttp\\Psr7\\": "src/"
418
+ },
419
+ "files": [
420
+ "src/functions_include.php"
421
+ ]
422
+ },
423
+ "notification-url": "https://packagist.org/downloads/",
424
+ "license": [
425
+ "MIT"
426
+ ],
427
+ "authors": [
428
+ {
429
+ "name": "Michael Dowling",
430
+ "email": "mtdowling@gmail.com",
431
+ "homepage": "https://github.com/mtdowling"
432
+ },
433
+ {
434
+ "name": "Tobias Schultze",
435
+ "homepage": "https://github.com/Tobion"
436
+ }
437
+ ],
438
+ "description": "PSR-7 message implementation that also provides common utility methods",
439
+ "keywords": [
440
+ "http",
441
+ "message",
442
+ "request",
443
+ "response",
444
+ "stream",
445
+ "uri",
446
+ "url"
447
+ ],
448
+ "time": "2017-03-20T17:10:46+00:00"
449
+ },
450
+ {
451
+ "name": "myclabs/deep-copy",
452
+ "version": "1.6.1",
453
+ "source": {
454
+ "type": "git",
455
+ "url": "https://github.com/myclabs/DeepCopy.git",
456
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102"
457
+ },
458
+ "dist": {
459
+ "type": "zip",
460
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102",
461
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102",
462
+ "shasum": ""
463
+ },
464
+ "require": {
465
+ "php": ">=5.4.0"
466
+ },
467
+ "require-dev": {
468
+ "doctrine/collections": "1.*",
469
+ "phpunit/phpunit": "~4.1"
470
+ },
471
+ "type": "library",
472
+ "autoload": {
473
+ "psr-4": {
474
+ "DeepCopy\\": "src/DeepCopy/"
475
+ }
476
+ },
477
+ "notification-url": "https://packagist.org/downloads/",
478
+ "license": [
479
+ "MIT"
480
+ ],
481
+ "description": "Create deep copies (clones) of your objects",
482
+ "homepage": "https://github.com/myclabs/DeepCopy",
483
+ "keywords": [
484
+ "clone",
485
+ "copy",
486
+ "duplicate",
487
+ "object",
488
+ "object graph"
489
+ ],
490
+ "time": "2017-04-12T18:52:22+00:00"
491
+ },
492
+ {
493
+ "name": "phar-io/manifest",
494
+ "version": "1.0.1",
495
+ "source": {
496
+ "type": "git",
497
+ "url": "https://github.com/phar-io/manifest.git",
498
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
499
+ },
500
+ "dist": {
501
+ "type": "zip",
502
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
503
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
504
+ "shasum": ""
505
+ },
506
+ "require": {
507
+ "ext-dom": "*",
508
+ "ext-phar": "*",
509
+ "phar-io/version": "^1.0.1",
510
+ "php": "^5.6 || ^7.0"
511
+ },
512
+ "type": "library",
513
+ "extra": {
514
+ "branch-alias": {
515
+ "dev-master": "1.0.x-dev"
516
+ }
517
+ },
518
+ "autoload": {
519
+ "classmap": [
520
+ "src/"
521
+ ]
522
+ },
523
+ "notification-url": "https://packagist.org/downloads/",
524
+ "license": [
525
+ "BSD-3-Clause"
526
+ ],
527
+ "authors": [
528
+ {
529
+ "name": "Arne Blankerts",
530
+ "email": "arne@blankerts.de",
531
+ "role": "Developer"
532
+ },
533
+ {
534
+ "name": "Sebastian Heuer",
535
+ "email": "sebastian@phpeople.de",
536
+ "role": "Developer"
537
+ },
538
+ {
539
+ "name": "Sebastian Bergmann",
540
+ "email": "sebastian@phpunit.de",
541
+ "role": "Developer"
542
+ }
543
+ ],
544
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
545
+ "time": "2017-03-05T18:14:27+00:00"
546
+ },
547
+ {
548
+ "name": "phar-io/version",
549
+ "version": "1.0.1",
550
+ "source": {
551
+ "type": "git",
552
+ "url": "https://github.com/phar-io/version.git",
553
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
554
+ },
555
+ "dist": {
556
+ "type": "zip",
557
+ "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
558
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
559
+ "shasum": ""
560
+ },
561
+ "require": {
562
+ "php": "^5.6 || ^7.0"
563
+ },
564
+ "type": "library",
565
+ "autoload": {
566
+ "classmap": [
567
+ "src/"
568
+ ]
569
+ },
570
+ "notification-url": "https://packagist.org/downloads/",
571
+ "license": [
572
+ "BSD-3-Clause"
573
+ ],
574
+ "authors": [
575
+ {
576
+ "name": "Arne Blankerts",
577
+ "email": "arne@blankerts.de",
578
+ "role": "Developer"
579
+ },
580
+ {
581
+ "name": "Sebastian Heuer",
582
+ "email": "sebastian@phpeople.de",
583
+ "role": "Developer"
584
+ },
585
+ {
586
+ "name": "Sebastian Bergmann",
587
+ "email": "sebastian@phpunit.de",
588
+ "role": "Developer"
589
+ }
590
+ ],
591
+ "description": "Library for handling version information and constraints",
592
+ "time": "2017-03-05T17:38:23+00:00"
593
+ },
594
+ {
595
+ "name": "phpdocumentor/reflection-common",
596
+ "version": "1.0",
597
+ "source": {
598
+ "type": "git",
599
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
600
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
601
+ },
602
+ "dist": {
603
+ "type": "zip",
604
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
605
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
606
+ "shasum": ""
607
+ },
608
+ "require": {
609
+ "php": ">=5.5"
610
+ },
611
+ "require-dev": {
612
+ "phpunit/phpunit": "^4.6"
613
+ },
614
+ "type": "library",
615
+ "extra": {
616
+ "branch-alias": {
617
+ "dev-master": "1.0.x-dev"
618
+ }
619
+ },
620
+ "autoload": {
621
+ "psr-4": {
622
+ "phpDocumentor\\Reflection\\": [
623
+ "src"
624
+ ]
625
+ }
626
+ },
627
+ "notification-url": "https://packagist.org/downloads/",
628
+ "license": [
629
+ "MIT"
630
+ ],
631
+ "authors": [
632
+ {
633
+ "name": "Jaap van Otterdijk",
634
+ "email": "opensource@ijaap.nl"
635
+ }
636
+ ],
637
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
638
+ "homepage": "http://www.phpdoc.org",
639
+ "keywords": [
640
+ "FQSEN",
641
+ "phpDocumentor",
642
+ "phpdoc",
643
+ "reflection",
644
+ "static analysis"
645
+ ],
646
+ "time": "2015-12-27T11:43:31+00:00"
647
+ },
648
+ {
649
+ "name": "phpdocumentor/reflection-docblock",
650
+ "version": "3.1.1",
651
+ "source": {
652
+ "type": "git",
653
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
654
+ "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
655
+ },
656
+ "dist": {
657
+ "type": "zip",
658
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
659
+ "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
660
+ "shasum": ""
661
+ },
662
+ "require": {
663
+ "php": ">=5.5",
664
+ "phpdocumentor/reflection-common": "^1.0@dev",
665
+ "phpdocumentor/type-resolver": "^0.2.0",
666
+ "webmozart/assert": "^1.0"
667
+ },
668
+ "require-dev": {
669
+ "mockery/mockery": "^0.9.4",
670
+ "phpunit/phpunit": "^4.4"
671
+ },
672
+ "type": "library",
673
+ "autoload": {
674
+ "psr-4": {
675
+ "phpDocumentor\\Reflection\\": [
676
+ "src/"
677
+ ]
678
+ }
679
+ },
680
+ "notification-url": "https://packagist.org/downloads/",
681
+ "license": [
682
+ "MIT"
683
+ ],
684
+ "authors": [
685
+ {
686
+ "name": "Mike van Riel",
687
+ "email": "me@mikevanriel.com"
688
+ }
689
+ ],
690
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
691
+ "time": "2016-09-30T07:12:33+00:00"
692
+ },
693
+ {
694
+ "name": "phpdocumentor/type-resolver",
695
+ "version": "0.2.1",
696
+ "source": {
697
+ "type": "git",
698
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
699
+ "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
700
+ },
701
+ "dist": {
702
+ "type": "zip",
703
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
704
+ "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
705
+ "shasum": ""
706
+ },
707
+ "require": {
708
+ "php": ">=5.5",
709
+ "phpdocumentor/reflection-common": "^1.0"
710
+ },
711
+ "require-dev": {
712
+ "mockery/mockery": "^0.9.4",
713
+ "phpunit/phpunit": "^5.2||^4.8.24"
714
+ },
715
+ "type": "library",
716
+ "extra": {
717
+ "branch-alias": {
718
+ "dev-master": "1.0.x-dev"
719
+ }
720
+ },
721
+ "autoload": {
722
+ "psr-4": {
723
+ "phpDocumentor\\Reflection\\": [
724
+ "src/"
725
+ ]
726
+ }
727
+ },
728
+ "notification-url": "https://packagist.org/downloads/",
729
+ "license": [
730
+ "MIT"
731
+ ],
732
+ "authors": [
733
+ {
734
+ "name": "Mike van Riel",
735
+ "email": "me@mikevanriel.com"
736
+ }
737
+ ],
738
+ "time": "2016-11-25T06:54:22+00:00"
739
+ },
740
+ {
741
+ "name": "phpspec/prophecy",
742
+ "version": "v1.7.0",
743
+ "source": {
744
+ "type": "git",
745
+ "url": "https://github.com/phpspec/prophecy.git",
746
+ "reference": "93d39f1f7f9326d746203c7c056f300f7f126073"
747
+ },
748
+ "dist": {
749
+ "type": "zip",
750
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073",
751
+ "reference": "93d39f1f7f9326d746203c7c056f300f7f126073",
752
+ "shasum": ""
753
+ },
754
+ "require": {
755
+ "doctrine/instantiator": "^1.0.2",
756
+ "php": "^5.3|^7.0",
757
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
758
+ "sebastian/comparator": "^1.1|^2.0",
759
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
760
+ },
761
+ "require-dev": {
762
+ "phpspec/phpspec": "^2.5|^3.2",
763
+ "phpunit/phpunit": "^4.8 || ^5.6.5"
764
+ },
765
+ "type": "library",
766
+ "extra": {
767
+ "branch-alias": {
768
+ "dev-master": "1.6.x-dev"
769
+ }
770
+ },
771
+ "autoload": {
772
+ "psr-0": {
773
+ "Prophecy\\": "src/"
774
+ }
775
+ },
776
+ "notification-url": "https://packagist.org/downloads/",
777
+ "license": [
778
+ "MIT"
779
+ ],
780
+ "authors": [
781
+ {
782
+ "name": "Konstantin Kudryashov",
783
+ "email": "ever.zet@gmail.com",
784
+ "homepage": "http://everzet.com"
785
+ },
786
+ {
787
+ "name": "Marcello Duarte",
788
+ "email": "marcello.duarte@gmail.com"
789
+ }
790
+ ],
791
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
792
+ "homepage": "https://github.com/phpspec/prophecy",
793
+ "keywords": [
794
+ "Double",
795
+ "Dummy",
796
+ "fake",
797
+ "mock",
798
+ "spy",
799
+ "stub"
800
+ ],
801
+ "time": "2017-03-02T20:05:34+00:00"
802
+ },
803
+ {
804
+ "name": "phpunit/php-code-coverage",
805
+ "version": "5.2.1",
806
+ "source": {
807
+ "type": "git",
808
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
809
+ "reference": "dc421f9ca5082a0c0cb04afb171c765f79add85b"
810
+ },
811
+ "dist": {
812
+ "type": "zip",
813
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/dc421f9ca5082a0c0cb04afb171c765f79add85b",
814
+ "reference": "dc421f9ca5082a0c0cb04afb171c765f79add85b",
815
+ "shasum": ""
816
+ },
817
+ "require": {
818
+ "ext-dom": "*",
819
+ "ext-xmlwriter": "*",
820
+ "php": "^7.0",
821
+ "phpunit/php-file-iterator": "^1.3",
822
+ "phpunit/php-text-template": "^1.2",
823
+ "phpunit/php-token-stream": "^1.4.11 || ^2.0",
824
+ "sebastian/code-unit-reverse-lookup": "^1.0",
825
+ "sebastian/environment": "^3.0",
826
+ "sebastian/version": "^2.0",
827
+ "theseer/tokenizer": "^1.1"
828
+ },
829
+ "require-dev": {
830
+ "ext-xdebug": "^2.5",
831
+ "phpunit/phpunit": "^6.0"
832
+ },
833
+ "suggest": {
834
+ "ext-xdebug": "^2.5.3"
835
+ },
836
+ "type": "library",
837
+ "extra": {
838
+ "branch-alias": {
839
+ "dev-master": "5.2.x-dev"
840
+ }
841
+ },
842
+ "autoload": {
843
+ "classmap": [
844
+ "src/"
845
+ ]
846
+ },
847
+ "notification-url": "https://packagist.org/downloads/",
848
+ "license": [
849
+ "BSD-3-Clause"
850
+ ],
851
+ "authors": [
852
+ {
853
+ "name": "Sebastian Bergmann",
854
+ "email": "sb@sebastian-bergmann.de",
855
+ "role": "lead"
856
+ }
857
+ ],
858
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
859
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
860
+ "keywords": [
861
+ "coverage",
862
+ "testing",
863
+ "xunit"
864
+ ],
865
+ "time": "2017-04-21T08:03:57+00:00"
866
+ },
867
+ {
868
+ "name": "phpunit/php-file-iterator",
869
+ "version": "1.4.2",
870
+ "source": {
871
+ "type": "git",
872
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
873
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
874
+ },
875
+ "dist": {
876
+ "type": "zip",
877
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
878
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
879
+ "shasum": ""
880
+ },
881
+ "require": {
882
+ "php": ">=5.3.3"
883
+ },
884
+ "type": "library",
885
+ "extra": {
886
+ "branch-alias": {
887
+ "dev-master": "1.4.x-dev"
888
+ }
889
+ },
890
+ "autoload": {
891
+ "classmap": [
892
+ "src/"
893
+ ]
894
+ },
895
+ "notification-url": "https://packagist.org/downloads/",
896
+ "license": [
897
+ "BSD-3-Clause"
898
+ ],
899
+ "authors": [
900
+ {
901
+ "name": "Sebastian Bergmann",
902
+ "email": "sb@sebastian-bergmann.de",
903
+ "role": "lead"
904
+ }
905
+ ],
906
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
907
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
908
+ "keywords": [
909
+ "filesystem",
910
+ "iterator"
911
+ ],
912
+ "time": "2016-10-03T07:40:28+00:00"
913
+ },
914
+ {
915
+ "name": "phpunit/php-text-template",
916
+ "version": "1.2.1",
917
+ "source": {
918
+ "type": "git",
919
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
920
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
921
+ },
922
+ "dist": {
923
+ "type": "zip",
924
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
925
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
926
+ "shasum": ""
927
+ },
928
+ "require": {
929
+ "php": ">=5.3.3"
930
+ },
931
+ "type": "library",
932
+ "autoload": {
933
+ "classmap": [
934
+ "src/"
935
+ ]
936
+ },
937
+ "notification-url": "https://packagist.org/downloads/",
938
+ "license": [
939
+ "BSD-3-Clause"
940
+ ],
941
+ "authors": [
942
+ {
943
+ "name": "Sebastian Bergmann",
944
+ "email": "sebastian@phpunit.de",
945
+ "role": "lead"
946
+ }
947
+ ],
948
+ "description": "Simple template engine.",
949
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
950
+ "keywords": [
951
+ "template"
952
+ ],
953
+ "time": "2015-06-21T13:50:34+00:00"
954
+ },
955
+ {
956
+ "name": "phpunit/php-timer",
957
+ "version": "1.0.9",
958
+ "source": {
959
+ "type": "git",
960
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
961
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
962
+ },
963
+ "dist": {
964
+ "type": "zip",
965
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
966
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
967
+ "shasum": ""
968
+ },
969
+ "require": {
970
+ "php": "^5.3.3 || ^7.0"
971
+ },
972
+ "require-dev": {
973
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
974
+ },
975
+ "type": "library",
976
+ "extra": {
977
+ "branch-alias": {
978
+ "dev-master": "1.0-dev"
979
+ }
980
+ },
981
+ "autoload": {
982
+ "classmap": [
983
+ "src/"
984
+ ]
985
+ },
986
+ "notification-url": "https://packagist.org/downloads/",
987
+ "license": [
988
+ "BSD-3-Clause"
989
+ ],
990
+ "authors": [
991
+ {
992
+ "name": "Sebastian Bergmann",
993
+ "email": "sb@sebastian-bergmann.de",
994
+ "role": "lead"
995
+ }
996
+ ],
997
+ "description": "Utility class for timing",
998
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
999
+ "keywords": [
1000
+ "timer"
1001
+ ],
1002
+ "time": "2017-02-26T11:10:40+00:00"
1003
+ },
1004
+ {
1005
+ "name": "phpunit/php-token-stream",
1006
+ "version": "1.4.11",
1007
+ "source": {
1008
+ "type": "git",
1009
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1010
+ "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7"
1011
+ },
1012
+ "dist": {
1013
+ "type": "zip",
1014
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7",
1015
+ "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7",
1016
+ "shasum": ""
1017
+ },
1018
+ "require": {
1019
+ "ext-tokenizer": "*",
1020
+ "php": ">=5.3.3"
1021
+ },
1022
+ "require-dev": {
1023
+ "phpunit/phpunit": "~4.2"
1024
+ },
1025
+ "type": "library",
1026
+ "extra": {
1027
+ "branch-alias": {
1028
+ "dev-master": "1.4-dev"
1029
+ }
1030
+ },
1031
+ "autoload": {
1032
+ "classmap": [
1033
+ "src/"
1034
+ ]
1035
+ },
1036
+ "notification-url": "https://packagist.org/downloads/",
1037
+ "license": [
1038
+ "BSD-3-Clause"
1039
+ ],
1040
+ "authors": [
1041
+ {
1042
+ "name": "Sebastian Bergmann",
1043
+ "email": "sebastian@phpunit.de"
1044
+ }
1045
+ ],
1046
+ "description": "Wrapper around PHP's tokenizer extension.",
1047
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1048
+ "keywords": [
1049
+ "tokenizer"
1050
+ ],
1051
+ "time": "2017-02-27T10:12:30+00:00"
1052
+ },
1053
+ {
1054
+ "name": "phpunit/phpunit",
1055
+ "version": "6.2.3",
1056
+ "source": {
1057
+ "type": "git",
1058
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
1059
+ "reference": "fa5711d0559fc4b64deba0702be52d41434cbcb7"
1060
+ },
1061
+ "dist": {
1062
+ "type": "zip",
1063
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fa5711d0559fc4b64deba0702be52d41434cbcb7",
1064
+ "reference": "fa5711d0559fc4b64deba0702be52d41434cbcb7",
1065
+ "shasum": ""
1066
+ },
1067
+ "require": {
1068
+ "ext-dom": "*",
1069
+ "ext-json": "*",
1070
+ "ext-libxml": "*",
1071
+ "ext-mbstring": "*",
1072
+ "ext-xml": "*",
1073
+ "myclabs/deep-copy": "^1.3",
1074
+ "phar-io/manifest": "^1.0.1",
1075
+ "phar-io/version": "^1.0",
1076
+ "php": "^7.0",
1077
+ "phpspec/prophecy": "^1.7",
1078
+ "phpunit/php-code-coverage": "^5.2",
1079
+ "phpunit/php-file-iterator": "^1.4",
1080
+ "phpunit/php-text-template": "^1.2",
1081
+ "phpunit/php-timer": "^1.0.6",
1082
+ "phpunit/phpunit-mock-objects": "^4.0",
1083
+ "sebastian/comparator": "^2.0",
1084
+ "sebastian/diff": "^1.4.3 || ^2.0",
1085
+ "sebastian/environment": "^3.0.2",
1086
+ "sebastian/exporter": "^3.1",
1087
+ "sebastian/global-state": "^1.1 || ^2.0",
1088
+ "sebastian/object-enumerator": "^3.0.2",
1089
+ "sebastian/resource-operations": "^1.0",
1090
+ "sebastian/version": "^2.0"
1091
+ },
1092
+ "conflict": {
1093
+ "phpdocumentor/reflection-docblock": "3.0.2",
1094
+ "phpunit/dbunit": "<3.0"
1095
+ },
1096
+ "require-dev": {
1097
+ "ext-pdo": "*"
1098
+ },
1099
+ "suggest": {
1100
+ "ext-xdebug": "*",
1101
+ "phpunit/php-invoker": "^1.1"
1102
+ },
1103
+ "bin": [
1104
+ "phpunit"
1105
+ ],
1106
+ "type": "library",
1107
+ "extra": {
1108
+ "branch-alias": {
1109
+ "dev-master": "6.2.x-dev"
1110
+ }
1111
+ },
1112
+ "autoload": {
1113
+ "classmap": [
1114
+ "src/"
1115
+ ]
1116
+ },
1117
+ "notification-url": "https://packagist.org/downloads/",
1118
+ "license": [
1119
+ "BSD-3-Clause"
1120
+ ],
1121
+ "authors": [
1122
+ {
1123
+ "name": "Sebastian Bergmann",
1124
+ "email": "sebastian@phpunit.de",
1125
+ "role": "lead"
1126
+ }
1127
+ ],
1128
+ "description": "The PHP Unit Testing framework.",
1129
+ "homepage": "https://phpunit.de/",
1130
+ "keywords": [
1131
+ "phpunit",
1132
+ "testing",
1133
+ "xunit"
1134
+ ],
1135
+ "time": "2017-07-03T15:54:24+00:00"
1136
+ },
1137
+ {
1138
+ "name": "phpunit/phpunit-mock-objects",
1139
+ "version": "4.0.2",
1140
+ "source": {
1141
+ "type": "git",
1142
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1143
+ "reference": "d8833b396dce9162bb2eb5d59aee5a3ab3cfa5b4"
1144
+ },
1145
+ "dist": {
1146
+ "type": "zip",
1147
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/d8833b396dce9162bb2eb5d59aee5a3ab3cfa5b4",
1148
+ "reference": "d8833b396dce9162bb2eb5d59aee5a3ab3cfa5b4",
1149
+ "shasum": ""
1150
+ },
1151
+ "require": {
1152
+ "doctrine/instantiator": "^1.0.2",
1153
+ "php": "^7.0",
1154
+ "phpunit/php-text-template": "^1.2",
1155
+ "sebastian/exporter": "^3.0"
1156
+ },
1157
+ "conflict": {
1158
+ "phpunit/phpunit": "<6.0"
1159
+ },
1160
+ "require-dev": {
1161
+ "phpunit/phpunit": "^6.0"
1162
+ },
1163
+ "suggest": {
1164
+ "ext-soap": "*"
1165
+ },
1166
+ "type": "library",
1167
+ "extra": {
1168
+ "branch-alias": {
1169
+ "dev-master": "4.0.x-dev"
1170
+ }
1171
+ },
1172
+ "autoload": {
1173
+ "classmap": [
1174
+ "src/"
1175
+ ]
1176
+ },
1177
+ "notification-url": "https://packagist.org/downloads/",
1178
+ "license": [
1179
+ "BSD-3-Clause"
1180
+ ],
1181
+ "authors": [
1182
+ {
1183
+ "name": "Sebastian Bergmann",
1184
+ "email": "sb@sebastian-bergmann.de",
1185
+ "role": "lead"
1186
+ }
1187
+ ],
1188
+ "description": "Mock Object library for PHPUnit",
1189
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1190
+ "keywords": [
1191
+ "mock",
1192
+ "xunit"
1193
+ ],
1194
+ "time": "2017-06-30T08:15:21+00:00"
1195
+ },
1196
+ {
1197
+ "name": "psr/http-message",
1198
+ "version": "1.0.1",
1199
+ "source": {
1200
+ "type": "git",
1201
+ "url": "https://github.com/php-fig/http-message.git",
1202
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1203
+ },
1204
+ "dist": {
1205
+ "type": "zip",
1206
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1207
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1208
+ "shasum": ""
1209
+ },
1210
+ "require": {
1211
+ "php": ">=5.3.0"
1212
+ },
1213
+ "type": "library",
1214
+ "extra": {
1215
+ "branch-alias": {
1216
+ "dev-master": "1.0.x-dev"
1217
+ }
1218
+ },
1219
+ "autoload": {
1220
+ "psr-4": {
1221
+ "Psr\\Http\\Message\\": "src/"
1222
+ }
1223
+ },
1224
+ "notification-url": "https://packagist.org/downloads/",
1225
+ "license": [
1226
+ "MIT"
1227
+ ],
1228
+ "authors": [
1229
+ {
1230
+ "name": "PHP-FIG",
1231
+ "homepage": "http://www.php-fig.org/"
1232
+ }
1233
+ ],
1234
+ "description": "Common interface for HTTP messages",
1235
+ "homepage": "https://github.com/php-fig/http-message",
1236
+ "keywords": [
1237
+ "http",
1238
+ "http-message",
1239
+ "psr",
1240
+ "psr-7",
1241
+ "request",
1242
+ "response"
1243
+ ],
1244
+ "time": "2016-08-06T14:39:51+00:00"
1245
+ },
1246
+ {
1247
+ "name": "psr/log",
1248
+ "version": "1.0.2",
1249
+ "source": {
1250
+ "type": "git",
1251
+ "url": "https://github.com/php-fig/log.git",
1252
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
1253
+ },
1254
+ "dist": {
1255
+ "type": "zip",
1256
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
1257
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
1258
+ "shasum": ""
1259
+ },
1260
+ "require": {
1261
+ "php": ">=5.3.0"
1262
+ },
1263
+ "type": "library",
1264
+ "extra": {
1265
+ "branch-alias": {
1266
+ "dev-master": "1.0.x-dev"
1267
+ }
1268
+ },
1269
+ "autoload": {
1270
+ "psr-4": {
1271
+ "Psr\\Log\\": "Psr/Log/"
1272
+ }
1273
+ },
1274
+ "notification-url": "https://packagist.org/downloads/",
1275
+ "license": [
1276
+ "MIT"
1277
+ ],
1278
+ "authors": [
1279
+ {
1280
+ "name": "PHP-FIG",
1281
+ "homepage": "http://www.php-fig.org/"
1282
+ }
1283
+ ],
1284
+ "description": "Common interface for logging libraries",
1285
+ "homepage": "https://github.com/php-fig/log",
1286
+ "keywords": [
1287
+ "log",
1288
+ "psr",
1289
+ "psr-3"
1290
+ ],
1291
+ "time": "2016-10-10T12:19:37+00:00"
1292
+ },
1293
+ {
1294
+ "name": "sebastian/code-unit-reverse-lookup",
1295
+ "version": "1.0.1",
1296
+ "source": {
1297
+ "type": "git",
1298
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1299
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1300
+ },
1301
+ "dist": {
1302
+ "type": "zip",
1303
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1304
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1305
+ "shasum": ""
1306
+ },
1307
+ "require": {
1308
+ "php": "^5.6 || ^7.0"
1309
+ },
1310
+ "require-dev": {
1311
+ "phpunit/phpunit": "^5.7 || ^6.0"
1312
+ },
1313
+ "type": "library",
1314
+ "extra": {
1315
+ "branch-alias": {
1316
+ "dev-master": "1.0.x-dev"
1317
+ }
1318
+ },
1319
+ "autoload": {
1320
+ "classmap": [
1321
+ "src/"
1322
+ ]
1323
+ },
1324
+ "notification-url": "https://packagist.org/downloads/",
1325
+ "license": [
1326
+ "BSD-3-Clause"
1327
+ ],
1328
+ "authors": [
1329
+ {
1330
+ "name": "Sebastian Bergmann",
1331
+ "email": "sebastian@phpunit.de"
1332
+ }
1333
+ ],
1334
+ "description": "Looks up which function or method a line of code belongs to",
1335
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1336
+ "time": "2017-03-04T06:30:41+00:00"
1337
+ },
1338
+ {
1339
+ "name": "sebastian/comparator",
1340
+ "version": "2.0.0",
1341
+ "source": {
1342
+ "type": "git",
1343
+ "url": "https://github.com/sebastianbergmann/comparator.git",
1344
+ "reference": "20f84f468cb67efee293246e6a09619b891f55f0"
1345
+ },
1346
+ "dist": {
1347
+ "type": "zip",
1348
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/20f84f468cb67efee293246e6a09619b891f55f0",
1349
+ "reference": "20f84f468cb67efee293246e6a09619b891f55f0",
1350
+ "shasum": ""
1351
+ },
1352
+ "require": {
1353
+ "php": "^7.0",
1354
+ "sebastian/diff": "^1.2",
1355
+ "sebastian/exporter": "^3.0"
1356
+ },
1357
+ "require-dev": {
1358
+ "phpunit/phpunit": "^6.0"
1359
+ },
1360
+ "type": "library",
1361
+ "extra": {
1362
+ "branch-alias": {
1363
+ "dev-master": "2.0.x-dev"
1364
+ }
1365
+ },
1366
+ "autoload": {
1367
+ "classmap": [
1368
+ "src/"
1369
+ ]
1370
+ },
1371
+ "notification-url": "https://packagist.org/downloads/",
1372
+ "license": [
1373
+ "BSD-3-Clause"
1374
+ ],
1375
+ "authors": [
1376
+ {
1377
+ "name": "Jeff Welch",
1378
+ "email": "whatthejeff@gmail.com"
1379
+ },
1380
+ {
1381
+ "name": "Volker Dusch",
1382
+ "email": "github@wallbash.com"
1383
+ },
1384
+ {
1385
+ "name": "Bernhard Schussek",
1386
+ "email": "bschussek@2bepublished.at"
1387
+ },
1388
+ {
1389
+ "name": "Sebastian Bergmann",
1390
+ "email": "sebastian@phpunit.de"
1391
+ }
1392
+ ],
1393
+ "description": "Provides the functionality to compare PHP values for equality",
1394
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
1395
+ "keywords": [
1396
+ "comparator",
1397
+ "compare",
1398
+ "equality"
1399
+ ],
1400
+ "time": "2017-03-03T06:26:08+00:00"
1401
+ },
1402
+ {
1403
+ "name": "sebastian/diff",
1404
+ "version": "1.4.3",
1405
+ "source": {
1406
+ "type": "git",
1407
+ "url": "https://github.com/sebastianbergmann/diff.git",
1408
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
1409
+ },
1410
+ "dist": {
1411
+ "type": "zip",
1412
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1413
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1414
+ "shasum": ""
1415
+ },
1416
+ "require": {
1417
+ "php": "^5.3.3 || ^7.0"
1418
+ },
1419
+ "require-dev": {
1420
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1421
+ },
1422
+ "type": "library",
1423
+ "extra": {
1424
+ "branch-alias": {
1425
+ "dev-master": "1.4-dev"
1426
+ }
1427
+ },
1428
+ "autoload": {
1429
+ "classmap": [
1430
+ "src/"
1431
+ ]
1432
+ },
1433
+ "notification-url": "https://packagist.org/downloads/",
1434
+ "license": [
1435
+ "BSD-3-Clause"
1436
+ ],
1437
+ "authors": [
1438
+ {
1439
+ "name": "Kore Nordmann",
1440
+ "email": "mail@kore-nordmann.de"
1441
+ },
1442
+ {
1443
+ "name": "Sebastian Bergmann",
1444
+ "email": "sebastian@phpunit.de"
1445
+ }
1446
+ ],
1447
+ "description": "Diff implementation",
1448
+ "homepage": "https://github.com/sebastianbergmann/diff",
1449
+ "keywords": [
1450
+ "diff"
1451
+ ],
1452
+ "time": "2017-05-22T07:24:03+00:00"
1453
+ },
1454
+ {
1455
+ "name": "sebastian/environment",
1456
+ "version": "3.1.0",
1457
+ "source": {
1458
+ "type": "git",
1459
+ "url": "https://github.com/sebastianbergmann/environment.git",
1460
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
1461
+ },
1462
+ "dist": {
1463
+ "type": "zip",
1464
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1465
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1466
+ "shasum": ""
1467
+ },
1468
+ "require": {
1469
+ "php": "^7.0"
1470
+ },
1471
+ "require-dev": {
1472
+ "phpunit/phpunit": "^6.1"
1473
+ },
1474
+ "type": "library",
1475
+ "extra": {
1476
+ "branch-alias": {
1477
+ "dev-master": "3.1.x-dev"
1478
+ }
1479
+ },
1480
+ "autoload": {
1481
+ "classmap": [
1482
+ "src/"
1483
+ ]
1484
+ },
1485
+ "notification-url": "https://packagist.org/downloads/",
1486
+ "license": [
1487
+ "BSD-3-Clause"
1488
+ ],
1489
+ "authors": [
1490
+ {
1491
+ "name": "Sebastian Bergmann",
1492
+ "email": "sebastian@phpunit.de"
1493
+ }
1494
+ ],
1495
+ "description": "Provides functionality to handle HHVM/PHP environments",
1496
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
1497
+ "keywords": [
1498
+ "Xdebug",
1499
+ "environment",
1500
+ "hhvm"
1501
+ ],
1502
+ "time": "2017-07-01T08:51:00+00:00"
1503
+ },
1504
+ {
1505
+ "name": "sebastian/exporter",
1506
+ "version": "3.1.0",
1507
+ "source": {
1508
+ "type": "git",
1509
+ "url": "https://github.com/sebastianbergmann/exporter.git",
1510
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
1511
+ },
1512
+ "dist": {
1513
+ "type": "zip",
1514
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
1515
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
1516
+ "shasum": ""
1517
+ },
1518
+ "require": {
1519
+ "php": "^7.0",
1520
+ "sebastian/recursion-context": "^3.0"
1521
+ },
1522
+ "require-dev": {
1523
+ "ext-mbstring": "*",
1524
+ "phpunit/phpunit": "^6.0"
1525
+ },
1526
+ "type": "library",
1527
+ "extra": {
1528
+ "branch-alias": {
1529
+ "dev-master": "3.1.x-dev"
1530
+ }
1531
+ },
1532
+ "autoload": {
1533
+ "classmap": [
1534
+ "src/"
1535
+ ]
1536
+ },
1537
+ "notification-url": "https://packagist.org/downloads/",
1538
+ "license": [
1539
+ "BSD-3-Clause"
1540
+ ],
1541
+ "authors": [
1542
+ {
1543
+ "name": "Jeff Welch",
1544
+ "email": "whatthejeff@gmail.com"
1545
+ },
1546
+ {
1547
+ "name": "Volker Dusch",
1548
+ "email": "github@wallbash.com"
1549
+ },
1550
+ {
1551
+ "name": "Bernhard Schussek",
1552
+ "email": "bschussek@2bepublished.at"
1553
+ },
1554
+ {
1555
+ "name": "Sebastian Bergmann",
1556
+ "email": "sebastian@phpunit.de"
1557
+ },
1558
+ {
1559
+ "name": "Adam Harvey",
1560
+ "email": "aharvey@php.net"
1561
+ }
1562
+ ],
1563
+ "description": "Provides the functionality to export PHP variables for visualization",
1564
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
1565
+ "keywords": [
1566
+ "export",
1567
+ "exporter"
1568
+ ],
1569
+ "time": "2017-04-03T13:19:02+00:00"
1570
+ },
1571
+ {
1572
+ "name": "sebastian/global-state",
1573
+ "version": "2.0.0",
1574
+ "source": {
1575
+ "type": "git",
1576
+ "url": "https://github.com/sebastianbergmann/global-state.git",
1577
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
1578
+ },
1579
+ "dist": {
1580
+ "type": "zip",
1581
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1582
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1583
+ "shasum": ""
1584
+ },
1585
+ "require": {
1586
+ "php": "^7.0"
1587
+ },
1588
+ "require-dev": {
1589
+ "phpunit/phpunit": "^6.0"
1590
+ },
1591
+ "suggest": {
1592
+ "ext-uopz": "*"
1593
+ },
1594
+ "type": "library",
1595
+ "extra": {
1596
+ "branch-alias": {
1597
+ "dev-master": "2.0-dev"
1598
+ }
1599
+ },
1600
+ "autoload": {
1601
+ "classmap": [
1602
+ "src/"
1603
+ ]
1604
+ },
1605
+ "notification-url": "https://packagist.org/downloads/",
1606
+ "license": [
1607
+ "BSD-3-Clause"
1608
+ ],
1609
+ "authors": [
1610
+ {
1611
+ "name": "Sebastian Bergmann",
1612
+ "email": "sebastian@phpunit.de"
1613
+ }
1614
+ ],
1615
+ "description": "Snapshotting of global state",
1616
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
1617
+ "keywords": [
1618
+ "global state"
1619
+ ],
1620
+ "time": "2017-04-27T15:39:26+00:00"
1621
+ },
1622
+ {
1623
+ "name": "sebastian/object-enumerator",
1624
+ "version": "3.0.2",
1625
+ "source": {
1626
+ "type": "git",
1627
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1628
+ "reference": "31dd3379d16446c5d86dec32ab1ad1f378581ad8"
1629
+ },
1630
+ "dist": {
1631
+ "type": "zip",
1632
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/31dd3379d16446c5d86dec32ab1ad1f378581ad8",
1633
+ "reference": "31dd3379d16446c5d86dec32ab1ad1f378581ad8",
1634
+ "shasum": ""
1635
+ },
1636
+ "require": {
1637
+ "php": "^7.0",
1638
+ "sebastian/object-reflector": "^1.0",
1639
+ "sebastian/recursion-context": "^3.0"
1640
+ },
1641
+ "require-dev": {
1642
+ "phpunit/phpunit": "^6.0"
1643
+ },
1644
+ "type": "library",
1645
+ "extra": {
1646
+ "branch-alias": {
1647
+ "dev-master": "3.0.x-dev"
1648
+ }
1649
+ },
1650
+ "autoload": {
1651
+ "classmap": [
1652
+ "src/"
1653
+ ]
1654
+ },
1655
+ "notification-url": "https://packagist.org/downloads/",
1656
+ "license": [
1657
+ "BSD-3-Clause"
1658
+ ],
1659
+ "authors": [
1660
+ {
1661
+ "name": "Sebastian Bergmann",
1662
+ "email": "sebastian@phpunit.de"
1663
+ }
1664
+ ],
1665
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1666
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1667
+ "time": "2017-03-12T15:17:29+00:00"
1668
+ },
1669
+ {
1670
+ "name": "sebastian/object-reflector",
1671
+ "version": "1.1.1",
1672
+ "source": {
1673
+ "type": "git",
1674
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
1675
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
1676
+ },
1677
+ "dist": {
1678
+ "type": "zip",
1679
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
1680
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
1681
+ "shasum": ""
1682
+ },
1683
+ "require": {
1684
+ "php": "^7.0"
1685
+ },
1686
+ "require-dev": {
1687
+ "phpunit/phpunit": "^6.0"
1688
+ },
1689
+ "type": "library",
1690
+ "extra": {
1691
+ "branch-alias": {
1692
+ "dev-master": "1.1-dev"
1693
+ }
1694
+ },
1695
+ "autoload": {
1696
+ "classmap": [
1697
+ "src/"
1698
+ ]
1699
+ },
1700
+ "notification-url": "https://packagist.org/downloads/",
1701
+ "license": [
1702
+ "BSD-3-Clause"
1703
+ ],
1704
+ "authors": [
1705
+ {
1706
+ "name": "Sebastian Bergmann",
1707
+ "email": "sebastian@phpunit.de"
1708
+ }
1709
+ ],
1710
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
1711
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
1712
+ "time": "2017-03-29T09:07:27+00:00"
1713
+ },
1714
+ {
1715
+ "name": "sebastian/recursion-context",
1716
+ "version": "3.0.0",
1717
+ "source": {
1718
+ "type": "git",
1719
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
1720
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
1721
+ },
1722
+ "dist": {
1723
+ "type": "zip",
1724
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1725
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1726
+ "shasum": ""
1727
+ },
1728
+ "require": {
1729
+ "php": "^7.0"
1730
+ },
1731
+ "require-dev": {
1732
+ "phpunit/phpunit": "^6.0"
1733
+ },
1734
+ "type": "library",
1735
+ "extra": {
1736
+ "branch-alias": {
1737
+ "dev-master": "3.0.x-dev"
1738
+ }
1739
+ },
1740
+ "autoload": {
1741
+ "classmap": [
1742
+ "src/"
1743
+ ]
1744
+ },
1745
+ "notification-url": "https://packagist.org/downloads/",
1746
+ "license": [
1747
+ "BSD-3-Clause"
1748
+ ],
1749
+ "authors": [
1750
+ {
1751
+ "name": "Jeff Welch",
1752
+ "email": "whatthejeff@gmail.com"
1753
+ },
1754
+ {
1755
+ "name": "Sebastian Bergmann",
1756
+ "email": "sebastian@phpunit.de"
1757
+ },
1758
+ {
1759
+ "name": "Adam Harvey",
1760
+ "email": "aharvey@php.net"
1761
+ }
1762
+ ],
1763
+ "description": "Provides functionality to recursively process PHP variables",
1764
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1765
+ "time": "2017-03-03T06:23:57+00:00"
1766
+ },
1767
+ {
1768
+ "name": "sebastian/resource-operations",
1769
+ "version": "1.0.0",
1770
+ "source": {
1771
+ "type": "git",
1772
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
1773
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
1774
+ },
1775
+ "dist": {
1776
+ "type": "zip",
1777
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1778
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1779
+ "shasum": ""
1780
+ },
1781
+ "require": {
1782
+ "php": ">=5.6.0"
1783
+ },
1784
+ "type": "library",
1785
+ "extra": {
1786
+ "branch-alias": {
1787
+ "dev-master": "1.0.x-dev"
1788
+ }
1789
+ },
1790
+ "autoload": {
1791
+ "classmap": [
1792
+ "src/"
1793
+ ]
1794
+ },
1795
+ "notification-url": "https://packagist.org/downloads/",
1796
+ "license": [
1797
+ "BSD-3-Clause"
1798
+ ],
1799
+ "authors": [
1800
+ {
1801
+ "name": "Sebastian Bergmann",
1802
+ "email": "sebastian@phpunit.de"
1803
+ }
1804
+ ],
1805
+ "description": "Provides a list of PHP built-in functions that operate on resources",
1806
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1807
+ "time": "2015-07-28T20:34:47+00:00"
1808
+ },
1809
+ {
1810
+ "name": "sebastian/version",
1811
+ "version": "2.0.1",
1812
+ "source": {
1813
+ "type": "git",
1814
+ "url": "https://github.com/sebastianbergmann/version.git",
1815
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1816
+ },
1817
+ "dist": {
1818
+ "type": "zip",
1819
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1820
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1821
+ "shasum": ""
1822
+ },
1823
+ "require": {
1824
+ "php": ">=5.6"
1825
+ },
1826
+ "type": "library",
1827
+ "extra": {
1828
+ "branch-alias": {
1829
+ "dev-master": "2.0.x-dev"
1830
+ }
1831
+ },
1832
+ "autoload": {
1833
+ "classmap": [
1834
+ "src/"
1835
+ ]
1836
+ },
1837
+ "notification-url": "https://packagist.org/downloads/",
1838
+ "license": [
1839
+ "BSD-3-Clause"
1840
+ ],
1841
+ "authors": [
1842
+ {
1843
+ "name": "Sebastian Bergmann",
1844
+ "email": "sebastian@phpunit.de",
1845
+ "role": "lead"
1846
+ }
1847
+ ],
1848
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1849
+ "homepage": "https://github.com/sebastianbergmann/version",
1850
+ "time": "2016-10-03T07:35:21+00:00"
1851
+ },
1852
+ {
1853
+ "name": "stecman/symfony-console-completion",
1854
+ "version": "0.7.0",
1855
+ "source": {
1856
+ "type": "git",
1857
+ "url": "https://github.com/stecman/symfony-console-completion.git",
1858
+ "reference": "5461d43e53092b3d3b9dbd9d999f2054730f4bbb"
1859
+ },
1860
+ "dist": {
1861
+ "type": "zip",
1862
+ "url": "https://api.github.com/repos/stecman/symfony-console-completion/zipball/5461d43e53092b3d3b9dbd9d999f2054730f4bbb",
1863
+ "reference": "5461d43e53092b3d3b9dbd9d999f2054730f4bbb",
1864
+ "shasum": ""
1865
+ },
1866
+ "require": {
1867
+ "php": ">=5.3.2",
1868
+ "symfony/console": "~2.3 || ~3.0"
1869
+ },
1870
+ "require-dev": {
1871
+ "phpunit/phpunit": "~4.4"
1872
+ },
1873
+ "type": "library",
1874
+ "extra": {
1875
+ "branch-alias": {
1876
+ "dev-master": "0.6.x-dev"
1877
+ }
1878
+ },
1879
+ "autoload": {
1880
+ "psr-4": {
1881
+ "Stecman\\Component\\Symfony\\Console\\BashCompletion\\": "src/"
1882
+ }
1883
+ },
1884
+ "notification-url": "https://packagist.org/downloads/",
1885
+ "license": [
1886
+ "MIT"
1887
+ ],
1888
+ "authors": [
1889
+ {
1890
+ "name": "Stephen Holdaway",
1891
+ "email": "stephen@stecman.co.nz"
1892
+ }
1893
+ ],
1894
+ "description": "Automatic BASH completion for Symfony Console Component based applications.",
1895
+ "time": "2016-02-24T05:08:54+00:00"
1896
+ },
1897
+ {
1898
+ "name": "symfony/browser-kit",
1899
+ "version": "v3.3.4",
1900
+ "source": {
1901
+ "type": "git",
1902
+ "url": "https://github.com/symfony/browser-kit.git",
1903
+ "reference": "3a4435e79a8401746e8525e98039199d0924b4e5"
1904
+ },
1905
+ "dist": {
1906
+ "type": "zip",
1907
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3a4435e79a8401746e8525e98039199d0924b4e5",
1908
+ "reference": "3a4435e79a8401746e8525e98039199d0924b4e5",
1909
+ "shasum": ""
1910
+ },
1911
+ "require": {
1912
+ "php": ">=5.5.9",
1913
+ "symfony/dom-crawler": "~2.8|~3.0"
1914
+ },
1915
+ "require-dev": {
1916
+ "symfony/css-selector": "~2.8|~3.0",
1917
+ "symfony/process": "~2.8|~3.0"
1918
+ },
1919
+ "suggest": {
1920
+ "symfony/process": ""
1921
+ },
1922
+ "type": "library",
1923
+ "extra": {
1924
+ "branch-alias": {
1925
+ "dev-master": "3.3-dev"
1926
+ }
1927
+ },
1928
+ "autoload": {
1929
+ "psr-4": {
1930
+ "Symfony\\Component\\BrowserKit\\": ""
1931
+ },
1932
+ "exclude-from-classmap": [
1933
+ "/Tests/"
1934
+ ]
1935
+ },
1936
+ "notification-url": "https://packagist.org/downloads/",
1937
+ "license": [
1938
+ "MIT"
1939
+ ],
1940
+ "authors": [
1941
+ {
1942
+ "name": "Fabien Potencier",
1943
+ "email": "fabien@symfony.com"
1944
+ },
1945
+ {
1946
+ "name": "Symfony Community",
1947
+ "homepage": "https://symfony.com/contributors"
1948
+ }
1949
+ ],
1950
+ "description": "Symfony BrowserKit Component",
1951
+ "homepage": "https://symfony.com",
1952
+ "time": "2017-06-24T09:29:48+00:00"
1953
+ },
1954
+ {
1955
+ "name": "symfony/console",
1956
+ "version": "v3.3.4",
1957
+ "source": {
1958
+ "type": "git",
1959
+ "url": "https://github.com/symfony/console.git",
1960
+ "reference": "a97e45d98c59510f085fa05225a1acb74dfe0546"
1961
+ },
1962
+ "dist": {
1963
+ "type": "zip",
1964
+ "url": "https://api.github.com/repos/symfony/console/zipball/a97e45d98c59510f085fa05225a1acb74dfe0546",
1965
+ "reference": "a97e45d98c59510f085fa05225a1acb74dfe0546",
1966
+ "shasum": ""
1967
+ },
1968
+ "require": {
1969
+ "php": ">=5.5.9",
1970
+ "symfony/debug": "~2.8|~3.0",
1971
+ "symfony/polyfill-mbstring": "~1.0"
1972
+ },
1973
+ "conflict": {
1974
+ "symfony/dependency-injection": "<3.3"
1975
+ },
1976
+ "require-dev": {
1977
+ "psr/log": "~1.0",
1978
+ "symfony/config": "~3.3",
1979
+ "symfony/dependency-injection": "~3.3",
1980
+ "symfony/event-dispatcher": "~2.8|~3.0",
1981
+ "symfony/filesystem": "~2.8|~3.0",
1982
+ "symfony/http-kernel": "~2.8|~3.0",
1983
+ "symfony/process": "~2.8|~3.0"
1984
+ },
1985
+ "suggest": {
1986
+ "psr/log": "For using the console logger",
1987
+ "symfony/event-dispatcher": "",
1988
+ "symfony/filesystem": "",
1989
+ "symfony/process": ""
1990
+ },
1991
+ "type": "library",
1992
+ "extra": {
1993
+ "branch-alias": {
1994
+ "dev-master": "3.3-dev"
1995
+ }
1996
+ },
1997
+ "autoload": {
1998
+ "psr-4": {
1999
+ "Symfony\\Component\\Console\\": ""
2000
+ },
2001
+ "exclude-from-classmap": [
2002
+ "/Tests/"
2003
+ ]
2004
+ },
2005
+ "notification-url": "https://packagist.org/downloads/",
2006
+ "license": [
2007
+ "MIT"
2008
+ ],
2009
+ "authors": [
2010
+ {
2011
+ "name": "Fabien Potencier",
2012
+ "email": "fabien@symfony.com"
2013
+ },
2014
+ {
2015
+ "name": "Symfony Community",
2016
+ "homepage": "https://symfony.com/contributors"
2017
+ }
2018
+ ],
2019
+ "description": "Symfony Console Component",
2020
+ "homepage": "https://symfony.com",
2021
+ "time": "2017-07-03T13:19:36+00:00"
2022
+ },
2023
+ {
2024
+ "name": "symfony/css-selector",
2025
+ "version": "v3.3.4",
2026
+ "source": {
2027
+ "type": "git",
2028
+ "url": "https://github.com/symfony/css-selector.git",
2029
+ "reference": "4d882dced7b995d5274293039370148e291808f2"
2030
+ },
2031
+ "dist": {
2032
+ "type": "zip",
2033
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/4d882dced7b995d5274293039370148e291808f2",
2034
+ "reference": "4d882dced7b995d5274293039370148e291808f2",
2035
+ "shasum": ""
2036
+ },
2037
+ "require": {
2038
+ "php": ">=5.5.9"
2039
+ },
2040
+ "type": "library",
2041
+ "extra": {
2042
+ "branch-alias": {
2043
+ "dev-master": "3.3-dev"
2044
+ }
2045
+ },
2046
+ "autoload": {
2047
+ "psr-4": {
2048
+ "Symfony\\Component\\CssSelector\\": ""
2049
+ },
2050
+ "exclude-from-classmap": [
2051
+ "/Tests/"
2052
+ ]
2053
+ },
2054
+ "notification-url": "https://packagist.org/downloads/",
2055
+ "license": [
2056
+ "MIT"
2057
+ ],
2058
+ "authors": [
2059
+ {
2060
+ "name": "Jean-François Simon",
2061
+ "email": "jeanfrancois.simon@sensiolabs.com"
2062
+ },
2063
+ {
2064
+ "name": "Fabien Potencier",
2065
+ "email": "fabien@symfony.com"
2066
+ },
2067
+ {
2068
+ "name": "Symfony Community",
2069
+ "homepage": "https://symfony.com/contributors"
2070
+ }
2071
+ ],
2072
+ "description": "Symfony CssSelector Component",
2073
+ "homepage": "https://symfony.com",
2074
+ "time": "2017-05-01T15:01:29+00:00"
2075
+ },
2076
+ {
2077
+ "name": "symfony/debug",
2078
+ "version": "v3.3.4",
2079
+ "source": {
2080
+ "type": "git",
2081
+ "url": "https://github.com/symfony/debug.git",
2082
+ "reference": "63b85a968486d95ff9542228dc2e4247f16f9743"
2083
+ },
2084
+ "dist": {
2085
+ "type": "zip",
2086
+ "url": "https://api.github.com/repos/symfony/debug/zipball/63b85a968486d95ff9542228dc2e4247f16f9743",
2087
+ "reference": "63b85a968486d95ff9542228dc2e4247f16f9743",
2088
+ "shasum": ""
2089
+ },
2090
+ "require": {
2091
+ "php": ">=5.5.9",
2092
+ "psr/log": "~1.0"
2093
+ },
2094
+ "conflict": {
2095
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
2096
+ },
2097
+ "require-dev": {
2098
+ "symfony/http-kernel": "~2.8|~3.0"
2099
+ },
2100
+ "type": "library",
2101
+ "extra": {
2102
+ "branch-alias": {
2103
+ "dev-master": "3.3-dev"
2104
+ }
2105
+ },
2106
+ "autoload": {
2107
+ "psr-4": {
2108
+ "Symfony\\Component\\Debug\\": ""
2109
+ },
2110
+ "exclude-from-classmap": [
2111
+ "/Tests/"
2112
+ ]
2113
+ },
2114
+ "notification-url": "https://packagist.org/downloads/",
2115
+ "license": [
2116
+ "MIT"
2117
+ ],
2118
+ "authors": [
2119
+ {
2120
+ "name": "Fabien Potencier",
2121
+ "email": "fabien@symfony.com"
2122
+ },
2123
+ {
2124
+ "name": "Symfony Community",
2125
+ "homepage": "https://symfony.com/contributors"
2126
+ }
2127
+ ],
2128
+ "description": "Symfony Debug Component",
2129
+ "homepage": "https://symfony.com",
2130
+ "time": "2017-07-05T13:02:37+00:00"
2131
+ },
2132
+ {
2133
+ "name": "symfony/dom-crawler",
2134
+ "version": "v3.3.4",
2135
+ "source": {
2136
+ "type": "git",
2137
+ "url": "https://github.com/symfony/dom-crawler.git",
2138
+ "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1"
2139
+ },
2140
+ "dist": {
2141
+ "type": "zip",
2142
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1",
2143
+ "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1",
2144
+ "shasum": ""
2145
+ },
2146
+ "require": {
2147
+ "php": ">=5.5.9",
2148
+ "symfony/polyfill-mbstring": "~1.0"
2149
+ },
2150
+ "require-dev": {
2151
+ "symfony/css-selector": "~2.8|~3.0"
2152
+ },
2153
+ "suggest": {
2154
+ "symfony/css-selector": ""
2155
+ },
2156
+ "type": "library",
2157
+ "extra": {
2158
+ "branch-alias": {
2159
+ "dev-master": "3.3-dev"
2160
+ }
2161
+ },
2162
+ "autoload": {
2163
+ "psr-4": {
2164
+ "Symfony\\Component\\DomCrawler\\": ""
2165
+ },
2166
+ "exclude-from-classmap": [
2167
+ "/Tests/"
2168
+ ]
2169
+ },
2170
+ "notification-url": "https://packagist.org/downloads/",
2171
+ "license": [
2172
+ "MIT"
2173
+ ],
2174
+ "authors": [
2175
+ {
2176
+ "name": "Fabien Potencier",
2177
+ "email": "fabien@symfony.com"
2178
+ },
2179
+ {
2180
+ "name": "Symfony Community",
2181
+ "homepage": "https://symfony.com/contributors"
2182
+ }
2183
+ ],
2184
+ "description": "Symfony DomCrawler Component",
2185
+ "homepage": "https://symfony.com",
2186
+ "time": "2017-05-25T23:10:31+00:00"
2187
+ },
2188
+ {
2189
+ "name": "symfony/event-dispatcher",
2190
+ "version": "v3.3.4",
2191
+ "source": {
2192
+ "type": "git",
2193
+ "url": "https://github.com/symfony/event-dispatcher.git",
2194
+ "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e"
2195
+ },
2196
+ "dist": {
2197
+ "type": "zip",
2198
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e",
2199
+ "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e",
2200
+ "shasum": ""
2201
+ },
2202
+ "require": {
2203
+ "php": ">=5.5.9"
2204
+ },
2205
+ "conflict": {
2206
+ "symfony/dependency-injection": "<3.3"
2207
+ },
2208
+ "require-dev": {
2209
+ "psr/log": "~1.0",
2210
+ "symfony/config": "~2.8|~3.0",
2211
+ "symfony/dependency-injection": "~3.3",
2212
+ "symfony/expression-language": "~2.8|~3.0",
2213
+ "symfony/stopwatch": "~2.8|~3.0"
2214
+ },
2215
+ "suggest": {
2216
+ "symfony/dependency-injection": "",
2217
+ "symfony/http-kernel": ""
2218
+ },
2219
+ "type": "library",
2220
+ "extra": {
2221
+ "branch-alias": {
2222
+ "dev-master": "3.3-dev"
2223
+ }
2224
+ },
2225
+ "autoload": {
2226
+ "psr-4": {
2227
+ "Symfony\\Component\\EventDispatcher\\": ""
2228
+ },
2229
+ "exclude-from-classmap": [
2230
+ "/Tests/"
2231
+ ]
2232
+ },
2233
+ "notification-url": "https://packagist.org/downloads/",
2234
+ "license": [
2235
+ "MIT"
2236
+ ],
2237
+ "authors": [
2238
+ {
2239
+ "name": "Fabien Potencier",
2240
+ "email": "fabien@symfony.com"
2241
+ },
2242
+ {
2243
+ "name": "Symfony Community",
2244
+ "homepage": "https://symfony.com/contributors"
2245
+ }
2246
+ ],
2247
+ "description": "Symfony EventDispatcher Component",
2248
+ "homepage": "https://symfony.com",
2249
+ "time": "2017-06-09T14:53:08+00:00"
2250
+ },
2251
+ {
2252
+ "name": "symfony/finder",
2253
+ "version": "v3.3.4",
2254
+ "source": {
2255
+ "type": "git",
2256
+ "url": "https://github.com/symfony/finder.git",
2257
+ "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4"
2258
+ },
2259
+ "dist": {
2260
+ "type": "zip",
2261
+ "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4",
2262
+ "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4",
2263
+ "shasum": ""
2264
+ },
2265
+ "require": {
2266
+ "php": ">=5.5.9"
2267
+ },
2268
+ "type": "library",
2269
+ "extra": {
2270
+ "branch-alias": {
2271
+ "dev-master": "3.3-dev"
2272
+ }
2273
+ },
2274
+ "autoload": {
2275
+ "psr-4": {
2276
+ "Symfony\\Component\\Finder\\": ""
2277
+ },
2278
+ "exclude-from-classmap": [
2279
+ "/Tests/"
2280
+ ]
2281
+ },
2282
+ "notification-url": "https://packagist.org/downloads/",
2283
+ "license": [
2284
+ "MIT"
2285
+ ],
2286
+ "authors": [
2287
+ {
2288
+ "name": "Fabien Potencier",
2289
+ "email": "fabien@symfony.com"
2290
+ },
2291
+ {
2292
+ "name": "Symfony Community",
2293
+ "homepage": "https://symfony.com/contributors"
2294
+ }
2295
+ ],
2296
+ "description": "Symfony Finder Component",
2297
+ "homepage": "https://symfony.com",
2298
+ "time": "2017-06-01T21:01:25+00:00"
2299
+ },
2300
+ {
2301
+ "name": "symfony/polyfill-mbstring",
2302
+ "version": "v1.4.0",
2303
+ "source": {
2304
+ "type": "git",
2305
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
2306
+ "reference": "f29dca382a6485c3cbe6379f0c61230167681937"
2307
+ },
2308
+ "dist": {
2309
+ "type": "zip",
2310
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f29dca382a6485c3cbe6379f0c61230167681937",
2311
+ "reference": "f29dca382a6485c3cbe6379f0c61230167681937",
2312
+ "shasum": ""
2313
+ },
2314
+ "require": {
2315
+ "php": ">=5.3.3"
2316
+ },
2317
+ "suggest": {
2318
+ "ext-mbstring": "For best performance"
2319
+ },
2320
+ "type": "library",
2321
+ "extra": {
2322
+ "branch-alias": {
2323
+ "dev-master": "1.4-dev"
2324
+ }
2325
+ },
2326
+ "autoload": {
2327
+ "psr-4": {
2328
+ "Symfony\\Polyfill\\Mbstring\\": ""
2329
+ },
2330
+ "files": [
2331
+ "bootstrap.php"
2332
+ ]
2333
+ },
2334
+ "notification-url": "https://packagist.org/downloads/",
2335
+ "license": [
2336
+ "MIT"
2337
+ ],
2338
+ "authors": [
2339
+ {
2340
+ "name": "Nicolas Grekas",
2341
+ "email": "p@tchwork.com"
2342
+ },
2343
+ {
2344
+ "name": "Symfony Community",
2345
+ "homepage": "https://symfony.com/contributors"
2346
+ }
2347
+ ],
2348
+ "description": "Symfony polyfill for the Mbstring extension",
2349
+ "homepage": "https://symfony.com",
2350
+ "keywords": [
2351
+ "compatibility",
2352
+ "mbstring",
2353
+ "polyfill",
2354
+ "portable",
2355
+ "shim"
2356
+ ],
2357
+ "time": "2017-06-09T14:24:12+00:00"
2358
+ },
2359
+ {
2360
+ "name": "symfony/process",
2361
+ "version": "v3.3.4",
2362
+ "source": {
2363
+ "type": "git",
2364
+ "url": "https://github.com/symfony/process.git",
2365
+ "reference": "5ab8949b682b1bf9d4511a228b5e045c96758c30"
2366
+ },
2367
+ "dist": {
2368
+ "type": "zip",
2369
+ "url": "https://api.github.com/repos/symfony/process/zipball/5ab8949b682b1bf9d4511a228b5e045c96758c30",
2370
+ "reference": "5ab8949b682b1bf9d4511a228b5e045c96758c30",
2371
+ "shasum": ""
2372
+ },
2373
+ "require": {
2374
+ "php": ">=5.5.9"
2375
+ },
2376
+ "type": "library",
2377
+ "extra": {
2378
+ "branch-alias": {
2379
+ "dev-master": "3.3-dev"
2380
+ }
2381
+ },
2382
+ "autoload": {
2383
+ "psr-4": {
2384
+ "Symfony\\Component\\Process\\": ""
2385
+ },
2386
+ "exclude-from-classmap": [
2387
+ "/Tests/"
2388
+ ]
2389
+ },
2390
+ "notification-url": "https://packagist.org/downloads/",
2391
+ "license": [
2392
+ "MIT"
2393
+ ],
2394
+ "authors": [
2395
+ {
2396
+ "name": "Fabien Potencier",
2397
+ "email": "fabien@symfony.com"
2398
+ },
2399
+ {
2400
+ "name": "Symfony Community",
2401
+ "homepage": "https://symfony.com/contributors"
2402
+ }
2403
+ ],
2404
+ "description": "Symfony Process Component",
2405
+ "homepage": "https://symfony.com",
2406
+ "time": "2017-07-03T08:12:02+00:00"
2407
+ },
2408
+ {
2409
+ "name": "symfony/yaml",
2410
+ "version": "v3.3.4",
2411
+ "source": {
2412
+ "type": "git",
2413
+ "url": "https://github.com/symfony/yaml.git",
2414
+ "reference": "1f93a8d19b8241617f5074a123e282575b821df8"
2415
+ },
2416
+ "dist": {
2417
+ "type": "zip",
2418
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/1f93a8d19b8241617f5074a123e282575b821df8",
2419
+ "reference": "1f93a8d19b8241617f5074a123e282575b821df8",
2420
+ "shasum": ""
2421
+ },
2422
+ "require": {
2423
+ "php": ">=5.5.9"
2424
+ },
2425
+ "require-dev": {
2426
+ "symfony/console": "~2.8|~3.0"
2427
+ },
2428
+ "suggest": {
2429
+ "symfony/console": "For validating YAML files using the lint command"
2430
+ },
2431
+ "type": "library",
2432
+ "extra": {
2433
+ "branch-alias": {
2434
+ "dev-master": "3.3-dev"
2435
+ }
2436
+ },
2437
+ "autoload": {
2438
+ "psr-4": {
2439
+ "Symfony\\Component\\Yaml\\": ""
2440
+ },
2441
+ "exclude-from-classmap": [
2442
+ "/Tests/"
2443
+ ]
2444
+ },
2445
+ "notification-url": "https://packagist.org/downloads/",
2446
+ "license": [
2447
+ "MIT"
2448
+ ],
2449
+ "authors": [
2450
+ {
2451
+ "name": "Fabien Potencier",
2452
+ "email": "fabien@symfony.com"
2453
+ },
2454
+ {
2455
+ "name": "Symfony Community",
2456
+ "homepage": "https://symfony.com/contributors"
2457
+ }
2458
+ ],
2459
+ "description": "Symfony Yaml Component",
2460
+ "homepage": "https://symfony.com",
2461
+ "time": "2017-06-15T12:58:50+00:00"
2462
+ },
2463
+ {
2464
+ "name": "theseer/tokenizer",
2465
+ "version": "1.1.0",
2466
+ "source": {
2467
+ "type": "git",
2468
+ "url": "https://github.com/theseer/tokenizer.git",
2469
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
2470
+ },
2471
+ "dist": {
2472
+ "type": "zip",
2473
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
2474
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
2475
+ "shasum": ""
2476
+ },
2477
+ "require": {
2478
+ "ext-dom": "*",
2479
+ "ext-tokenizer": "*",
2480
+ "ext-xmlwriter": "*",
2481
+ "php": "^7.0"
2482
+ },
2483
+ "type": "library",
2484
+ "autoload": {
2485
+ "classmap": [
2486
+ "src/"
2487
+ ]
2488
+ },
2489
+ "notification-url": "https://packagist.org/downloads/",
2490
+ "license": [
2491
+ "BSD-3-Clause"
2492
+ ],
2493
+ "authors": [
2494
+ {
2495
+ "name": "Arne Blankerts",
2496
+ "email": "arne@blankerts.de",
2497
+ "role": "Developer"
2498
+ }
2499
+ ],
2500
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
2501
+ "time": "2017-04-07T12:08:54+00:00"
2502
+ },
2503
+ {
2504
+ "name": "webmozart/assert",
2505
+ "version": "1.2.0",
2506
+ "source": {
2507
+ "type": "git",
2508
+ "url": "https://github.com/webmozart/assert.git",
2509
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
2510
+ },
2511
+ "dist": {
2512
+ "type": "zip",
2513
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
2514
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
2515
+ "shasum": ""
2516
+ },
2517
+ "require": {
2518
+ "php": "^5.3.3 || ^7.0"
2519
+ },
2520
+ "require-dev": {
2521
+ "phpunit/phpunit": "^4.6",
2522
+ "sebastian/version": "^1.0.1"
2523
+ },
2524
+ "type": "library",
2525
+ "extra": {
2526
+ "branch-alias": {
2527
+ "dev-master": "1.3-dev"
2528
+ }
2529
+ },
2530
+ "autoload": {
2531
+ "psr-4": {
2532
+ "Webmozart\\Assert\\": "src/"
2533
+ }
2534
+ },
2535
+ "notification-url": "https://packagist.org/downloads/",
2536
+ "license": [
2537
+ "MIT"
2538
+ ],
2539
+ "authors": [
2540
+ {
2541
+ "name": "Bernhard Schussek",
2542
+ "email": "bschussek@gmail.com"
2543
+ }
2544
+ ],
2545
+ "description": "Assertions to validate method input/output with nice error messages.",
2546
+ "keywords": [
2547
+ "assert",
2548
+ "check",
2549
+ "validate"
2550
+ ],
2551
+ "time": "2016-11-23T20:04:58+00:00"
2552
+ }
2553
+ ],
2554
+ "packages-dev": [],
2555
+ "aliases": [],
2556
+ "minimum-stability": "stable",
2557
+ "stability-flags": [],
2558
+ "prefer-stable": false,
2559
+ "prefer-lowest": false,
2560
+ "platform": [],
2561
+ "platform-dev": []
2562
+ }
helpers/wp-hummingbird-helpers-core.php CHANGED
@@ -292,7 +292,7 @@ function wphb_update_membership_link() {
292
  }
293
 
294
  function wphb_support_link() {
295
- if ( is_wpmudev_member() ) {
296
  return 'https://premium.wpmudev.org/forums/forum/support#question';
297
  } else {
298
  return 'https://wordpress.org/support/plugin/hummingbird-performance';
292
  }
293
 
294
  function wphb_support_link() {
295
+ if ( wphb_is_member() ) {
296
  return 'https://premium.wpmudev.org/forums/forum/support#question';
297
  } else {
298
  return 'https://wordpress.org/support/plugin/hummingbird-performance';
languages/wphb-default.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the Hummingbird Pro package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Hummingbird Pro 1.5.4\n"
6
  "Report-Msgid-Bugs-To: https://wpmudev.org\n"
7
- "POT-Creation-Date: 2017-07-13 07:00:26+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -1179,11 +1179,9 @@ msgid "Automated performance tests are enabled"
1179
  msgstr ""
1180
 
1181
  #: admin/views/dashboard/performance/running-test-meta-box.php:5
1182
- #: admin/views/modals/check-performance-modal.php:4
1183
- #: admin/views/modals/check-performance-modal.php:9
1184
  #: build/wp-hummingbird/admin/views/dashboard/performance/running-test-meta-box.php:5
1185
- #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:4
1186
- #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:9
1187
  msgid ""
1188
  "Hummingbird is running a test to measure your website performance, please "
1189
  "wait."
@@ -1525,12 +1523,12 @@ msgstr ""
1525
 
1526
  #: admin/views/minification/enqueued-files-empty-meta-box.php:7
1527
  #: admin/views/modals/check-files-modal.php:31
1528
- #: admin/views/modals/check-performance-modal.php:30
1529
  #: admin/views/modals/enable-cdn-modal.php:33
1530
  #: admin/views/modals/quick-setup-modal.php:14
1531
  #: build/wp-hummingbird/admin/views/minification/enqueued-files-empty-meta-box.php:7
1532
  #: build/wp-hummingbird/admin/views/modals/check-files-modal.php:31
1533
- #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:30
1534
  #: build/wp-hummingbird/admin/views/modals/enable-cdn-modal.php:33
1535
  #: build/wp-hummingbird/admin/views/modals/quick-setup-modal.php:14
1536
  msgid "Reduce your page load time!"
@@ -1834,15 +1832,13 @@ msgid ""
1834
  "a setting causes errors then revert the setting here."
1835
  msgstr ""
1836
 
1837
- #: admin/views/modals/check-performance-modal.php:2
1838
- #: admin/views/modals/check-performance-modal.php:7
1839
- #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:2
1840
- #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:7
1841
  msgid "Test in progress"
1842
  msgstr ""
1843
 
1844
- #: admin/views/modals/check-performance-modal.php:24
1845
- #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:24
1846
  msgid "Performance test in progress..."
1847
  msgstr ""
1848
 
2
  # This file is distributed under the same license as the Hummingbird Pro package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Hummingbird Pro 1.5.5\n"
6
  "Report-Msgid-Bugs-To: https://wpmudev.org\n"
7
+ "POT-Creation-Date: 2017-07-17 15:13:34+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
1179
  msgstr ""
1180
 
1181
  #: admin/views/dashboard/performance/running-test-meta-box.php:5
1182
+ #: admin/views/modals/check-performance-modal.php:3
 
1183
  #: build/wp-hummingbird/admin/views/dashboard/performance/running-test-meta-box.php:5
1184
+ #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:3
 
1185
  msgid ""
1186
  "Hummingbird is running a test to measure your website performance, please "
1187
  "wait."
1523
 
1524
  #: admin/views/minification/enqueued-files-empty-meta-box.php:7
1525
  #: admin/views/modals/check-files-modal.php:31
1526
+ #: admin/views/modals/check-performance-modal.php:23
1527
  #: admin/views/modals/enable-cdn-modal.php:33
1528
  #: admin/views/modals/quick-setup-modal.php:14
1529
  #: build/wp-hummingbird/admin/views/minification/enqueued-files-empty-meta-box.php:7
1530
  #: build/wp-hummingbird/admin/views/modals/check-files-modal.php:31
1531
+ #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:23
1532
  #: build/wp-hummingbird/admin/views/modals/enable-cdn-modal.php:33
1533
  #: build/wp-hummingbird/admin/views/modals/quick-setup-modal.php:14
1534
  msgid "Reduce your page load time!"
1832
  "a setting causes errors then revert the setting here."
1833
  msgstr ""
1834
 
1835
+ #: admin/views/modals/check-performance-modal.php:1
1836
+ #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:1
 
 
1837
  msgid "Test in progress"
1838
  msgstr ""
1839
 
1840
+ #: admin/views/modals/check-performance-modal.php:17
1841
+ #: build/wp-hummingbird/admin/views/modals/check-performance-modal.php:17
1842
  msgid "Performance test in progress..."
1843
  msgstr ""
1844
 
readme.txt CHANGED
@@ -6,8 +6,8 @@ Author URI: http://premium.wpmudev.org/
6
  Contributors: WPMUDEV
7
  Tags: Optimization, Caching, Speed, Performance, Faster, PageSpeed, Gzip, Compression, Minify, Minification, CloudFlare
8
  Requires at least: 3.5
9
- Tested up to: 4.7.3
10
- Stable tag: 1.5.4
11
  License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
12
 
13
  Make your site load faster with file compression, minification and browser caching – because when it comes to pagespeed, every millisecond counts!
@@ -106,6 +106,11 @@ Minification is a great way to speed up your site but moving combining and rearr
106
 
107
  == Changelog ==
108
 
 
 
 
 
 
109
  = 1.5.4 ( 2017-07-13 ) =
110
  - Fix: Cron reports were stuck on a loop on some WordPress installations
111
  - Fix: Issue with reports and calculating UTC time
6
  Contributors: WPMUDEV
7
  Tags: Optimization, Caching, Speed, Performance, Faster, PageSpeed, Gzip, Compression, Minify, Minification, CloudFlare
8
  Requires at least: 3.5
9
+ Tested up to: 4.8.1
10
+ Stable tag: 1.5.5
11
  License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
12
 
13
  Make your site load faster with file compression, minification and browser caching – because when it comes to pagespeed, every millisecond counts!
106
 
107
  == Changelog ==
108
 
109
+ = 1.5.4.1 ( 2017-07-17 ) =
110
+ - Fix: Bug in Performance Report
111
+ - Fix: Fatal error on activation on the free versioon
112
+ - Fix: HTML tags in Cloudflare module
113
+
114
  = 1.5.4 ( 2017-07-13 ) =
115
  - Fix: Cron reports were stuck on a loop on some WordPress installations
116
  - Fix: Issue with reports and calculating UTC time
uninstall.php CHANGED
@@ -41,6 +41,7 @@ delete_option( 'wphb_settings' );
41
  delete_site_option( 'wphb_settings' );
42
 
43
  delete_site_option( 'wphb_version' );
 
44
 
45
  delete_site_option( 'wphb-is-cloudflare' );
46
  delete_site_option( 'wphb-quick-setup' );
41
  delete_site_option( 'wphb_settings' );
42
 
43
  delete_site_option( 'wphb_version' );
44
+ delete_site_option( 'wphb-pro' );
45
 
46
  delete_site_option( 'wphb-is-cloudflare' );
47
  delete_site_option( 'wphb-quick-setup' );
wp-hummingbird.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  Plugin Name: Hummingbird
4
- Version: 1.5.4
5
  Plugin URI: https://premium.wpmudev.org/project/wp-hummingbird/
6
  Description: Hummingbird zips through your site finding new ways to make it load faster, from file compression and minification to browser caching – because when it comes to pagespeed, every millisecond counts.
7
  Author: WPMU DEV
@@ -32,7 +32,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
32
  */
33
 
34
  if ( ! defined( 'WPHB_VERSION' ) ) {
35
- define( 'WPHB_VERSION', '1.5.4' );
36
  }
37
 
38
  if ( file_exists( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'free-mods.php' ) ) {
1
  <?php
2
  /**
3
  Plugin Name: Hummingbird
4
+ Version: 1.5.5
5
  Plugin URI: https://premium.wpmudev.org/project/wp-hummingbird/
6
  Description: Hummingbird zips through your site finding new ways to make it load faster, from file compression and minification to browser caching – because when it comes to pagespeed, every millisecond counts.
7
  Author: WPMU DEV
32
  */
33
 
34
  if ( ! defined( 'WPHB_VERSION' ) ) {
35
+ define( 'WPHB_VERSION', '1.5.5' );
36
  }
37
 
38
  if ( file_exists( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'free-mods.php' ) ) {