axe 13.0.1 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -648,7 +648,7 @@ Pre hooks allow you to manipulate the arguments `err`, `message`, and `meta` tha
648
648
 
649
649
  Post hooks are useful if you want to send logging information to a third-party, store them into a database, or do any sort of custom processing.
650
650
 
651
- As of v12, logger invocation (e.g. `logger.info('hello')`) will return their post hooks as a Promise – which means you can `await logger.error(err);` if needed – which is useful if you have jobs that need to store logs to a database using post hooks before the job shuts down with `process.exit(0)`. Note that the resolved Promise returns an Array of the returned values from post hooks, executed serially via `p-map-series`. If no post hooks exist, then logger invocations will return an Object consisting of `{ method, err, message, meta }`, whereas `method` is the logger method invoked with (e.g. `logger.error()` will have a `method: 'error'` value).
651
+ As of v12, logger invocation (e.g. `logger.info('hello')`) will return their post hooks as a Promise – which means you can `await logger.error(err);` if needed – which is useful if you have jobs that need to store logs to a database using post hooks before the job shuts down with `process.exit(0)`. Note that the resolved Promise returns an Array of the returned values from post hooks, executed serially. If no post hooks exist, then logger invocations will return an Object consisting of `{ method, err, message, meta }`, whereas `method` is the logger method invoked with (e.g. `logger.error()` will have a `method: 'error'` value).
652
652
 
653
653
  You should properly handle any errors in your pre hooks, otherwise they will be thrown and logger methods will not be invoked.
654
654
 
package/dist/axe.js CHANGED
@@ -1249,7 +1249,7 @@ if (hasSymbols) {
1249
1249
  };
1250
1250
  }
1251
1251
 
1252
- },{"call-bound":13,"has-symbols":36,"safe-regex-test":63}],46:[function(require,module,exports){
1252
+ },{"call-bound":13,"has-symbols":36,"safe-regex-test":62}],46:[function(require,module,exports){
1253
1253
  /**
1254
1254
  * Expose `isError`.
1255
1255
  */
@@ -1684,22 +1684,6 @@ exports.homedir = function () {
1684
1684
  };
1685
1685
 
1686
1686
  },{}],59:[function(require,module,exports){
1687
- 'use strict';
1688
-
1689
- const pMapSeries = async (iterable, mapper) => {
1690
- const result = [];
1691
- let index = 0;
1692
- for (const value of iterable) {
1693
- // eslint-disable-next-line no-await-in-loop
1694
- result.push(await mapper(await value, index++));
1695
- }
1696
- return result;
1697
- };
1698
- module.exports = pMapSeries;
1699
- // TODO: Remove this for the next major release
1700
- module.exports.default = pMapSeries;
1701
-
1702
- },{}],60:[function(require,module,exports){
1703
1687
  "use strict";
1704
1688
 
1705
1689
  function _createForOfIteratorHelper(o, allowArrayLike) {
@@ -1817,7 +1801,7 @@ const parseErr = function parseErr(err) {
1817
1801
  };
1818
1802
  module.exports = parseErr;
1819
1803
 
1820
- },{"iserror":46}],61:[function(require,module,exports){
1804
+ },{"iserror":46}],60:[function(require,module,exports){
1821
1805
  'use strict';
1822
1806
 
1823
1807
  const get = require('@strikeentco/get');
@@ -1850,7 +1834,7 @@ module.exports = (obj, paths, sep = '.') => {
1850
1834
  return pick(obj, paths, length, sep);
1851
1835
  };
1852
1836
 
1853
- },{"@strikeentco/get":2,"@strikeentco/set":3}],62:[function(require,module,exports){
1837
+ },{"@strikeentco/get":2,"@strikeentco/set":3}],61:[function(require,module,exports){
1854
1838
  // shim for using process in browser
1855
1839
  var process = module.exports = {};
1856
1840
 
@@ -2027,7 +2011,7 @@ process.umask = function () {
2027
2011
  return 0;
2028
2012
  };
2029
2013
 
2030
- },{}],63:[function(require,module,exports){
2014
+ },{}],62:[function(require,module,exports){
2031
2015
  'use strict';
2032
2016
 
2033
2017
  var callBound = require('call-bound');
@@ -2045,7 +2029,7 @@ module.exports = function regexTester(regex) {
2045
2029
  };
2046
2030
  };
2047
2031
 
2048
- },{"call-bound":13,"es-errors/type":22,"is-regex":44}],64:[function(require,module,exports){
2032
+ },{"call-bound":13,"es-errors/type":22,"is-regex":44}],63:[function(require,module,exports){
2049
2033
  /*!
2050
2034
  * unset-value <https://github.com/jonschlinkert/unset-value>
2051
2035
  *
@@ -2090,11 +2074,11 @@ module.exports = function unset(obj, prop) {
2090
2074
  return true;
2091
2075
  };
2092
2076
 
2093
- },{"has-value":39,"isobject":47}],65:[function(require,module,exports){
2077
+ },{"has-value":39,"isobject":47}],64:[function(require,module,exports){
2094
2078
  module.exports={
2095
2079
  "name": "axe",
2096
2080
  "description": "Axe is a logger-agnostic wrapper that normalizes logs regardless of argument style. Great for large development teams, old and new projects, and works with Pino, Bunyan, Winston, console, and more. It is lightweight, performant, highly-configurable, and automatically adds OS, CPU, and Git information to your logs. It supports hooks (useful for masking sensitive data) and dot-notation remapping, omitting, and picking of log metadata properties. Made for Forward Email, Lad, and Cabin.",
2097
- "version": "13.0.1",
2081
+ "version": "14.0.0",
2098
2082
  "author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",
2099
2083
  "browser": {
2100
2084
  "parse-app-info": false
@@ -2116,51 +2100,50 @@ module.exports={
2116
2100
  "console-polyfill": "0.3.0",
2117
2101
  "format-specifiers": "^1.0.0",
2118
2102
  "is-buffer": "^2.0.5",
2119
- "is-symbol": "^1.0.4",
2103
+ "is-symbol": "^1.1.1",
2120
2104
  "iserror": "0.0.2",
2121
2105
  "merge-options": "3.0.4",
2122
- "p-map-series": "2",
2123
2106
  "parse-app-info": "^6.0.0",
2124
2107
  "parse-err": "^1.0.0",
2125
2108
  "pick-deep": "1.0.0",
2126
2109
  "unset-value": "2.0.1"
2127
2110
  },
2128
2111
  "devDependencies": {
2129
- "@babel/cli": "^7.25.9",
2130
- "@babel/core": "^7.26.0",
2131
- "@babel/preset-env": "^7.26.0",
2132
- "@commitlint/cli": "^19.6.0",
2133
- "@commitlint/config-conventional": "^19.6.0",
2112
+ "@babel/cli": "^7.29.7",
2113
+ "@babel/core": "^7.29.7",
2114
+ "@babel/preset-env": "^7.29.7",
2115
+ "@commitlint/cli": "^19.8.1",
2116
+ "@commitlint/config-conventional": "^19.8.1",
2134
2117
  "ava": "5.3.1",
2135
2118
  "babelify": "^10.0.0",
2136
- "browserify": "^17.0.0",
2137
- "consola": "^3.2.3",
2119
+ "browserify": "^17.0.1",
2120
+ "consola": "^3.4.2",
2138
2121
  "cross-env": "^7.0.3",
2139
- "eslint": "8.49.0",
2122
+ "eslint": "8.57.1",
2140
2123
  "eslint-config-xo-lass": "^2.0.1",
2141
- "eslint-plugin-compat": "^4.2.0",
2124
+ "eslint-plugin-compat": "6.0.0",
2142
2125
  "eslint-plugin-node": "^11.1.0",
2143
- "express": "^4.21.1",
2126
+ "express": "^5.2.1",
2144
2127
  "fixpack": "^4.0.0",
2145
- "husky": "^9.0.11",
2146
- "jsdom": "15",
2147
- "koa": "^2.15.3",
2148
- "lint-staged": "^15.2.10",
2149
- "lodash": "^4.17.21",
2128
+ "husky": "^9.1.7",
2129
+ "jsdom": "26",
2130
+ "koa": "^3.2.1",
2131
+ "lint-staged": "^15.5.2",
2132
+ "lodash": "^4.18.1",
2150
2133
  "nyc": "^17.1.0",
2151
- "pino": "^9.5.0",
2134
+ "pino": "10.1.0",
2152
2135
  "remark-cli": "11.0.0",
2153
2136
  "remark-preset-github": "^4.0.4",
2154
- "rimraf": "^5.0.5",
2137
+ "rimraf": "^5.0.10",
2155
2138
  "signale": "^1.4.0",
2156
- "sinon": "^18.0.0",
2139
+ "sinon": "^22.1.0",
2157
2140
  "tinyify": "3.0.0",
2158
- "tsd": "^0.31.2",
2159
- "typescript": "5.5.4",
2160
- "xo": "0.56.0"
2141
+ "tsd": "^0.33.0",
2142
+ "typescript": "5.9.3",
2143
+ "xo": "0.60.0"
2161
2144
  },
2162
2145
  "engines": {
2163
- "node": ">=14"
2146
+ "node": ">=18.18"
2164
2147
  },
2165
2148
  "files": [
2166
2149
  "lib",
@@ -2222,7 +2205,7 @@ module.exports={
2222
2205
  "lint-build": "npm run lint-lib && npm run lint-dist",
2223
2206
  "lint-dist": "eslint --no-inline-config -c .dist.eslintrc.json dist",
2224
2207
  "lint-lib": "eslint --no-inline-config -c .lib.eslintrc.json lib",
2225
- "minify": "cross-env NODE_ENV=production browserify src/index.js -o dist/axe.min.js -s Axe -g [ babelify --configFile ./.dist.babelrc.json ] -p tinyify",
2208
+ "minify": "cross-env NODE_ENV=production browserify src/index.js -o dist/axe.min.js -s Axe -g [ babelify --configFile ./.dist.babelrc.json ] -p [ tinyify --no-flat ]",
2226
2209
  "nyc": "cross-env NODE_ENV=test nyc ava",
2227
2210
  "prepare": "husky install",
2228
2211
  "pretest": "npm run lint",
@@ -2232,7 +2215,7 @@ module.exports={
2232
2215
  "unpkg": "dist/axe.min.js"
2233
2216
  }
2234
2217
 
2235
- },{}],66:[function(require,module,exports){
2218
+ },{}],65:[function(require,module,exports){
2236
2219
  (function (process){(function (){
2237
2220
  // eslint-disable-next-line import/no-unassigned-import
2238
2221
  require('console-polyfill');
@@ -2246,7 +2229,6 @@ const isError = require('iserror');
2246
2229
  const isSymbol = require('is-symbol');
2247
2230
  const isBuffer = require('is-buffer');
2248
2231
  const mergeOptions = require('merge-options');
2249
- const pMapSeries = require('p-map-series');
2250
2232
  const parseAppInfo = require('parse-app-info');
2251
2233
  const parseErr = require('parse-err');
2252
2234
  const pickDeep = require('pick-deep');
@@ -2265,6 +2247,30 @@ const aliases = {
2265
2247
  };
2266
2248
  const levelError = `\`level\` invalid, must be: ${levels.join(', ')}`;
2267
2249
  const name = process.env.NODE_ENV === 'development' ? false : process.env.HOSTNAME || os.hostname();
2250
+ async function mapSeries(iterable, mapper) {
2251
+ const values = [...iterable];
2252
+ const results = [];
2253
+ async function map(index) {
2254
+ if (index === values.length) return results;
2255
+ results.push(await mapper(values[index]));
2256
+ return map(index + 1);
2257
+ }
2258
+ return map(0);
2259
+ }
2260
+ async function runPostHooks({
2261
+ hooks,
2262
+ method,
2263
+ err,
2264
+ message,
2265
+ meta,
2266
+ logger
2267
+ }) {
2268
+ try {
2269
+ return await mapSeries(hooks, hook => hook(method, err, message, meta));
2270
+ } catch (err_) {
2271
+ logger.error(err_);
2272
+ }
2273
+ }
2268
2274
 
2269
2275
  // <https://github.com/sindresorhus/is-plain-obj/blob/main/index.js>
2270
2276
  function isPlainObject(value) {
@@ -2748,13 +2754,18 @@ class Axe {
2748
2754
  message,
2749
2755
  meta
2750
2756
  };
2751
- return pMapSeries(this.config.hooks.post, hook => hook(method, err, message, meta)).then().catch(err => {
2752
- this.config.logger.error(err);
2757
+ return runPostHooks({
2758
+ hooks: this.config.hooks.post,
2759
+ method,
2760
+ err,
2761
+ message,
2762
+ meta,
2763
+ logger: this.config.logger
2753
2764
  });
2754
2765
  }
2755
2766
  }
2756
2767
  module.exports = Axe;
2757
2768
 
2758
2769
  }).call(this)}).call(this,require('_process'))
2759
- },{"../package.json":65,"@ladjs/format-util":1,"@strikeentco/get":2,"@strikeentco/set":3,"_process":62,"boolean":5,"console-polyfill":14,"format-specifiers":25,"is-buffer":42,"is-symbol":45,"iserror":46,"merge-options":57,"os":58,"p-map-series":59,"parse-app-info":7,"parse-err":60,"pick-deep":61,"unset-value":64}]},{},[66])(66)
2770
+ },{"../package.json":64,"@ladjs/format-util":1,"@strikeentco/get":2,"@strikeentco/set":3,"_process":61,"boolean":5,"console-polyfill":14,"format-specifiers":25,"is-buffer":42,"is-symbol":45,"iserror":46,"merge-options":57,"os":58,"parse-app-info":7,"parse-err":59,"pick-deep":60,"unset-value":63}]},{},[65])(65)
2760
2771
  });
package/dist/axe.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Axe=t()}}((function(){!function(t){"use strict";t.console||(t.console={});for(var e,r,o=t.console,n=function(){},i=["memory"],a="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");e=i.pop();)o[e]||(o[e]={});for(;r=a.pop();)o[r]||(o[r]=n)}("undefined"==typeof window?this:window);var t={hostname:function(){return"undefined"!=typeof location?location.hostname:""}},e=function(t){var e=Array.prototype.slice.call(arguments,1);return e.length&&(t=t.toString().replace(/(%?)(%([jds]))/g,(function(t,r,o,n){var i=e.shift();switch(n){case"s":i=""+i;break;case"d":i=Number(i);break;case"j":i=JSON.stringify(i)}return r?(e.unshift(i),t):i}))),e.length&&(t=t.toString()+" "+e.join(" ")),""+t.toString().replace(/%{2,2}/g,"%")},r=["%s","%d","%i","%f","%j","%o","%O","%%"],o=(t,e,r=".")=>{if(o=t,"[object Object]"!==Object.prototype.toString.call(o)||!e)return t;var o;const n=Array.isArray(e)?e:String(e).split(r),{length:i}=n;return i<2?t[n[0]]:((t,e,r)=>{for(let o=0;o<r;o++){if(null===t)return;const r=t[e[o]];if(void 0===r)return;t=r}return t})(t,n,i)},n=function(t){switch(Object.prototype.toString.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return t instanceof Error}},i=Object,a=Error,c=EvalError,f=RangeError,s=ReferenceError,u=SyntaxError,l=TypeError,p=URIError,y=Math.abs,g=Math.floor,d=Math.max,h=Math.min,m=Math.pow,b=Math.round,A=Number.isNaN||function(t){return t!=t},v=Object.getOwnPropertyDescriptor;if(v)try{v([],"length")}catch(ve){v=null}var O=v,w=Object.defineProperty||!1;if(w)try{w({},"a",{value:1})}catch(ve){w=!1}var S,j=w,P=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var o in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0},E="undefined"!=typeof Symbol&&Symbol,_=function(){return"function"==typeof E&&"function"==typeof Symbol&&"symbol"==typeof E("foo")&&"symbol"==typeof Symbol("bar")&&P()},I="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null,F=i.getPrototypeOf||null,x=Object.prototype.toString,R=Math.max,M=function(t,e){for(var r=[],o=0;o<t.length;o+=1)r[o]=t[o];for(var n=0;n<e.length;n+=1)r[n+t.length]=e[n];return r},T=Function.prototype.bind||function(t){var e=this;if("function"!=typeof e||"[object Function]"!==x.apply(e))throw new TypeError("Function.prototype.bind called on incompatible "+e);for(var r,o=function(t,e){for(var r=[],o=1,n=0;o<t.length;o+=1,n+=1)r[n]=t[o];return r}(arguments),n=R(0,e.length-o.length),i=[],a=0;a<n;a++)i[a]="$"+a;if(r=Function("binder","return function ("+function(t,e){for(var r="",o=0;o<t.length;o+=1)r+=t[o],o+1<t.length&&(r+=",");return r}(i)+"){ return binder.apply(this,arguments); }")((function(){if(this instanceof r){var n=e.apply(this,M(o,arguments));return Object(n)===n?n:this}return e.apply(t,M(o,arguments))})),e.prototype){var c=function(){};c.prototype=e.prototype,r.prototype=new c,c.prototype=null}return r},k=Function.prototype.call,U=Function.prototype.apply,N="undefined"!=typeof Reflect&&Reflect&&Reflect.apply||T.call(k,U),B=function(t){if(t.length<1||"function"!=typeof t[0])throw new l("a function is required");return N(T,k,t)};try{S=[].__proto__===Array.prototype}catch(ve){if(!ve||"object"!=typeof ve||!("code"in ve)||"ERR_PROTO_ACCESS"!==ve.code)throw ve}var D=!!S&&O&&O(Object.prototype,"__proto__"),C=Object,L=C.getPrototypeOf,W=D&&"function"==typeof D.get?B([D.get]):"function"==typeof L&&function(t){return L(null==t?t:C(t))},G=I?function(t){return I(t)}:F?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return F(t)}:W?function(t){return W(t)}:null,X=Function.prototype.call,z=Object.prototype.hasOwnProperty,H=T.call(X,z),J=Function,V=function(t){try{return J('"use strict"; return ('+t+").constructor;")()}catch(ve){}},$=function(){throw new l},K=O?function(){try{return $}catch(t){try{return O(arguments,"callee").get}catch(e){return $}}}():$,q=_(),Q={},Y="undefined"!=typeof Uint8Array&&G?G(Uint8Array):void 0,Z={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?void 0:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayIteratorPrototype%":q&&G?G([][Symbol.iterator]()):void 0,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":Q,"%AsyncGenerator%":Q,"%AsyncGeneratorFunction%":Q,"%AsyncIteratorPrototype%":Q,"%Atomics%":"undefined"==typeof Atomics?void 0:Atomics,"%BigInt%":"undefined"==typeof BigInt?void 0:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?void 0:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?void 0:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?void 0:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":a,"%eval%":eval,"%EvalError%":c,"%Float16Array%":"undefined"==typeof Float16Array?void 0:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?void 0:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?void 0:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?void 0:FinalizationRegistry,"%Function%":J,"%GeneratorFunction%":Q,"%Int8Array%":"undefined"==typeof Int8Array?void 0:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?void 0:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?void 0:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":q&&G?G(G([][Symbol.iterator]())):void 0,"%JSON%":"object"==typeof JSON?JSON:void 0,"%Map%":"undefined"==typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&q&&G?G((new Map)[Symbol.iterator]()):void 0,"%Math%":Math,"%Number%":Number,"%Object%":i,"%Object.getOwnPropertyDescriptor%":O,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?void 0:Promise,"%Proxy%":"undefined"==typeof Proxy?void 0:Proxy,"%RangeError%":f,"%ReferenceError%":s,"%Reflect%":"undefined"==typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&q&&G?G((new Set)[Symbol.iterator]()):void 0,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":q&&G?G(""[Symbol.iterator]()):void 0,"%Symbol%":q?Symbol:void 0,"%SyntaxError%":u,"%ThrowTypeError%":K,"%TypedArray%":Y,"%TypeError%":l,"%Uint8Array%":"undefined"==typeof Uint8Array?void 0:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?void 0:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?void 0:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?void 0:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?void 0:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?void 0:WeakSet,"%Function.prototype.call%":k,"%Function.prototype.apply%":U,"%Object.defineProperty%":j,"%Object.getPrototypeOf%":F,"%Math.abs%":y,"%Math.floor%":g,"%Math.max%":d,"%Math.min%":h,"%Math.pow%":m,"%Math.round%":b,"%Math.sign%":function(t){return A(t)||0===t?t:t<0?-1:1},"%Reflect.getPrototypeOf%":I};if(G)try{null.error}catch(ve){var tt=G(G(ve));Z["%Error.prototype%"]=tt}var et,rt={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},ot=T.call(k,Array.prototype.concat),nt=T.call(U,Array.prototype.splice),it=T.call(k,String.prototype.replace),at=T.call(k,String.prototype.slice),ct=T.call(k,RegExp.prototype.exec),ft=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,st=/\\(\\)?/g,ut=function(t,e){var r,o=t;if(H(rt,o)&&(o="%"+(r=rt[o])[0]+"%"),H(Z,o)){var n=Z[o];if(n===Q&&(n=function t(e){var r;if("%AsyncFunction%"===e)r=V("async function () {}");else if("%GeneratorFunction%"===e)r=V("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=V("async function* () {}");else if("%AsyncGenerator%"===e){var o=t("%AsyncGeneratorFunction%");o&&(r=o.prototype)}else if("%AsyncIteratorPrototype%"===e){var n=t("%AsyncGenerator%");n&&G&&(r=G(n.prototype))}return Z[e]=r,r}(o)),void 0===n&&!e)throw new l("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:o,value:n}}throw new u("intrinsic "+t+" does not exist!")},lt=function(t,e){if("string"!=typeof t||0===t.length)throw new l("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new l('"allowMissing" argument must be a boolean');if(null===ct(/^%?[^%]*%?$/,t))throw new u("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=at(t,0,1),r=at(t,-1);if("%"===e&&"%"!==r)throw new u("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new u("invalid intrinsic syntax, expected opening `%`");var o=[];return it(t,ft,(function(t,e,r,n){o[o.length]=r?it(n,st,"$1"):e||t})),o}(t),o=r.length>0?r[0]:"",n=ut("%"+o+"%",e),i=n.name,a=n.value,c=!1,f=n.alias;f&&(o=f[0],nt(r,ot([0,1],f)));for(var s=1,p=!0;s<r.length;s+=1){var y=r[s],g=at(y,0,1),d=at(y,-1);if(('"'===g||"'"===g||"`"===g||'"'===d||"'"===d||"`"===d)&&g!==d)throw new u("property names with quotes must have matching quotes");if("constructor"!==y&&p||(c=!0),H(Z,i="%"+(o+="."+y)+"%"))a=Z[i];else if(null!=a){if(!(y in a)){if(!e)throw new l("base intrinsic for "+t+" exists, but the property is not available.");return}if(O&&s+1>=r.length){var h=O(a,y);a=(p=!!h)&&"get"in h&&!("originalValue"in h.get)?h.get:a[y]}else p=H(a,y),a=a[y];p&&!c&&(Z[i]=a)}}return a},pt=B([lt("%String.prototype.indexOf%")]),yt=function(t,e){var r=lt(t,!!e);return"function"==typeof r&&pt(t,".prototype.")>-1?B([r]):r};if(P()&&!!Symbol.toStringTag){var gt=yt("RegExp.prototype.exec"),dt={},ht=function(){throw dt},mt={toString:ht,valueOf:ht};"symbol"==typeof Symbol.toPrimitive&&(mt[Symbol.toPrimitive]=ht),et=function(t){if(!t||"object"!=typeof t)return!1;var e=O(t,"lastIndex");if(!e||!H(e,"value"))return!1;try{gt(t,mt)}catch(ve){return ve===dt}}}else{var bt=yt("Object.prototype.toString");et=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===bt(t)}}var At=et,vt=yt("RegExp.prototype.exec"),Ot={},wt=yt("Object.prototype.toString");if(_()){var St=yt("Symbol.prototype.toString"),jt=function(t){if(!At(t))throw new l("`regex` must be a RegExp");return function(e){return null!==vt(t,e)}}(/^Symbol\(.*\)$/);Ot=function(t){if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||"[object Symbol]"!==wt(t))return!1;try{return function(t){return"symbol"==typeof t.valueOf()&&jt(St(t))}(t)}catch(ve){return!1}}}else Ot=function(t){return!1};var Pt=t=>{if("[object Object]"!==Object.prototype.toString.call(t))return!1;const e=Object.getPrototypeOf(t);return null===e||e===Object.prototype};const{hasOwnProperty:Et}=Object.prototype,{propertyIsEnumerable:_t}=Object,It=(t,e,r)=>Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0}),Ft=this,xt={concatArrays:!1,ignoreUndefined:!1},Rt=t=>{const e=[];for(const r in t)Et.call(t,r)&&e.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(t);for(const o of r)_t.call(t,o)&&e.push(o)}return e};function Mt(t){return Array.isArray(t)?function(t){const e=t.slice(0,0);return Rt(t).forEach(r=>{It(e,r,Mt(t[r]))}),e}(t):Pt(t)?function(t){const e=null===Object.getPrototypeOf(t)?Object.create(null):{};return Rt(t).forEach(r=>{It(e,r,Mt(t[r]))}),e}(t):t}const Tt=(t,e,r,o)=>(r.forEach(r=>{void 0===e[r]&&o.ignoreUndefined||(r in t&&t[r]!==Object.getPrototypeOf(t)?It(t,r,kt(t[r],e[r],o)):It(t,r,Mt(e[r])))}),t);function kt(t,e,r){return r.concatArrays&&Array.isArray(t)&&Array.isArray(e)?((t,e,r)=>{let o=t.slice(0,0),n=0;return[t,e].forEach(e=>{const i=[];for(let r=0;r<e.length;r++)Et.call(e,r)&&(i.push(String(r)),It(o,n++,e===t?e[r]:Mt(e[r])));o=Tt(o,e,Rt(e).filter(t=>!i.includes(t)),r)}),o})(t,e,r):Pt(e)&&Pt(t)?Tt(t,e,Rt(e),r):Mt(e)}var Ut={};const Nt=async(t,e)=>{const r=[];let o=0;for(const n of t)r.push(await e(await n,o++));return r};(Ut=Nt).default=Nt;var Bt={};function Dt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return Ct(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ct(t,void 0):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,n=function(){};return{s:n,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function Ct(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}var Lt=function t(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!n(e))throw new Error("`err` must be an Error");if(!Array.isArray(r))throw new TypeError("`fields` must be an Array");const o={};var i,a=Dt(new Set([...Object.getOwnPropertyNames(Object.getPrototypeOf(e)),...Object.getOwnPropertyNames(e)]));try{for(a.s();!(i=a.n()).done;){const t=i.value;"function"!=typeof e[t]&&(o[t]=e[t])}}catch(e){a.e(e)}finally{a.f()}return!o.name&&e.constructor.name&&(o.name=e.constructor.name),Array.isArray(e.errors)&&(o.errors=e.errors.map(e=>n(e)?t(e,r):e)),Array.isArray(r)&&r.length>0?o.filter(t=>r.includes(t)):o};const Wt=t=>"object"==typeof t||"function"==typeof t,Gt=(t,e)=>"__proto__"==t||"constructor"==t&&"function"==typeof e.constructor;var Xt=(t,e,r,o=".")=>{if(!Wt(t)||!e||!e.length)return t;const n=Array.isArray(e)?e:String(e).split(o);if(Gt(n[0],t))return t;const{length:i}=n;return 1===i?(t[n[0]]=r,t):((t,e,r,o)=>{let n=t,i=0;for(;i<r-1;i++){const t=e[i];Gt(t,n)||(n=Wt(n[t])?n[t]:n[t]={})}return n[e[i]]=o,t})(t,n,i,r)},zt=function(t){return null!=t&&"object"==typeof t&&!1===Array.isArray(t)};function Ht(t,e,r){return"function"==typeof r.join?r.join(t):t[0]+e+t[1]}function Jt(t,e,r){return"function"!=typeof r.isValid||r.isValid(t,e)}function Vt(t){return zt(t)||Array.isArray(t)||"function"==typeof t}var $t=Object.prototype.toString;function Kt(t){return"function"==typeof t.constructor?t.constructor.name:null}var qt=function t(e){switch(function(t){if(void 0===t)return"undefined";if(null===t)return"null";var e=typeof t;if("boolean"===e)return"boolean";if("string"===e)return"string";if("number"===e)return"number";if("symbol"===e)return"symbol";if("function"===e)return"GeneratorFunction"===Kt(t)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(t))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(t))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(t))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(t))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(t))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(t))return"regexp";switch(Kt(t)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(t))return"generator";switch(e=$t.call(t)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return e.slice(8,-1).toLowerCase().replace(/\s/g,"")}(e)){case"boolean":case"date":case"function":case"null":case"number":return!0;case"undefined":return!1;case"regexp":return"(?:)"!==e.source&&""!==e.source;case"buffer":return""!==e.toString();case"error":return""!==e.message;case"string":case"arguments":return 0!==e.length;case"file":case"map":case"set":return 0!==e.size;case"array":case"object":for(const r of Object.keys(e))if(t(e[r]))return!0;return!1;default:return!0}},Qt=function(t,e,r){return!(null==(o=t)||"object"!=typeof o&&"function"!=typeof o&&!Array.isArray(o)||"string"!=typeof e&&!Array.isArray(e))&&qt(function(t,e,r){if(zt(r)||(r={default:r}),!Vt(t))return void 0!==r.default?r.default:t;"number"==typeof e&&(e=String(e));const o=Array.isArray(e),n="string"==typeof e,i=r.separator||".",a=r.joinChar||("string"==typeof i?i:".");if(!n&&!o)return t;if(n&&e in t)return Jt(e,t,r)?t[e]:r.default;let c=o?e:function(t,e,r){return"function"==typeof r.split?r.split(t):t.split(e)}(e,i,r),f=c.length,s=0;do{let e=c[s];for("number"==typeof e&&(e=String(e));e&&"\\"===e.slice(-1);)e=Ht([e.slice(0,-1),c[++s]||""],a,r);if(e in t){if(!Jt(e,t,r))return r.default;t=t[e]}else{let o=!1,n=s+1;for(;n<f;)if(o=(e=Ht([e,c[n++]],a,r))in t){if(!Jt(e,t,r))return r.default;t=t[e],s=n-1;break}if(!o)return r.default}}while(++s<f&&Vt(t));return s===f?t:r.default}(t,e,r));var o};const Yt=t=>{if((t=>"__proto__"===t||"constructor"===t||"prototype"===t)(t))throw new Error(`Cannot set unsafe key: "${t}"`)};var Zt=function(t,e){if(null==(r=t)||"object"!=typeof r||!1!==Array.isArray(r))throw new TypeError("expected an object.");var r,o=Array.isArray(e);if(!o&&t.hasOwnProperty(e))return delete t[e],!0;if(Qt(t,e)){for(var n=o?e.slice():e.split("."),i=n.pop();n.length&&"\\"===n[n.length-1].slice(-1);)i=n.pop().slice(0,-1)+"."+i;for(;n.length;)e=n.shift(),Yt(e),t=t[e];return delete t[i]}return!0},te={};Object.defineProperty(te,"__esModule",{value:!0}),te.boolean=void 0,te.boolean=function(t){switch(Object.prototype.toString.call(t)){case"[object String]":return["true","t","yes","y","on","1"].includes(t.trim().toLowerCase());case"[object Number]":return 1===t.valueOf();case"[object Boolean]":return t.valueOf();default:return!1}};var ee={};Object.defineProperty(ee,"__esModule",{value:!0}),ee.isBooleanable=void 0,ee.isBooleanable=function(t){switch(Object.prototype.toString.call(t)){case"[object String]":return["true","t","yes","y","on","1","false","f","no","n","off","0"].includes(t.trim().toLowerCase());case"[object Number]":return[0,1].includes(t.valueOf());case"[object Boolean]":return!0;default:return!1}};var re={};Object.defineProperty(re,"__esModule",{value:!0}),re.boolean=void 0,Object.defineProperty(re,"boolean",{enumerable:!0,get:function(){return te.boolean}}),Object.defineProperty(re,"isBooleanable",{enumerable:!0,get:function(){return ee.isBooleanable}});var oe,ne,ie,ae="13.0.1",ce=oe={};function fe(){throw new Error("setTimeout has not been defined")}function se(){throw new Error("clearTimeout has not been defined")}function ue(t){if(ne===setTimeout)return setTimeout(t,0);if((ne===fe||!ne)&&setTimeout)return ne=setTimeout,setTimeout(t,0);try{return ne(t,0)}catch(ve){try{return ne.call(null,t,0)}catch(ve){return ne.call(this,t,0)}}}!function(){try{ne="function"==typeof setTimeout?setTimeout:fe}catch(ve){ne=fe}try{ie="function"==typeof clearTimeout?clearTimeout:se}catch(ve){ie=se}}();var le,pe=[],ye=!1,ge=-1;function de(){ye&&le&&(ye=!1,le.length?pe=le.concat(pe):ge=-1,pe.length&&he())}function he(){if(!ye){var t=ue(de);ye=!0;for(var e=pe.length;e;){for(le=pe,pe=[];++ge<e;)le&&le[ge].run();ge=-1,e=pe.length}le=null,ye=!1,function(t){if(ie===clearTimeout)return clearTimeout(t);if((ie===se||!ie)&&clearTimeout)return ie=clearTimeout,clearTimeout(t);try{ie(t)}catch(ve){try{return ie.call(null,t)}catch(ve){return ie.call(this,t)}}}(t)}}function me(t,e){this.fun=t,this.array=e}function be(){}ce.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];pe.push(new me(t,e)),1!==pe.length||ye||ue(he)},me.prototype.run=function(){this.fun.apply(null,this.array)},ce.title="browser",ce.browser=!0,ce.env={},ce.argv=[],ce.version="",ce.versions={},ce.on=be,ce.addListener=be,ce.once=be,ce.off=be,ce.removeListener=be,ce.removeAllListeners=be,ce.emit=be,ce.prependListener=be,ce.prependOnceListener=be,ce.listeners=function(t){return[]},ce.binding=function(t){throw new Error("process.binding is not supported")},ce.cwd=function(){return"/"},ce.chdir=function(t){throw new Error("process.chdir is not supported")},ce.umask=function(){return 0};var Ae={};return function(i){(function(){const{boolean:a}=re,c=Symbol.for("axe.silent"),f=new Set(["config","log"]),s=["trace","debug","info","warn","error","fatal"],u={warning:"warn",err:"error"},l="`level` invalid, must be: "+s.join(", "),p=i.env.HOSTNAME||t.hostname();function y(t){if("object"!=typeof t||null===t)return!1;const e=Object.getPrototypeOf(t);return!(null!==e&&e!==Object.prototype&&null!==Object.getPrototypeOf(e)||Symbol.toStringTag in t||Symbol.iterator in t||Ot(t))}function g(t){return null==t||"object"==typeof t&&0===Reflect.ownKeys(t).length||"string"==typeof t&&0===t.trim().length}function d(t){return void 0===t}function h(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function m(t){return"string"==typeof t}function b(t){return"function"==typeof t}function A(t){return b(t)?t:null}Ae=class{constructor(t={}){const e={};if(i.env.AXE_REMAPPED_META_FIELDS){const t=i.env.AXE_REMAPPED_META_FIELDS.split(",").map(t=>t.split(":"));for(const[r,o]of t)e[r]=o}let r=i.env.AXE_OMIT_META_FIELDS;"string"==typeof r&&(r=r.split(",").map(t=>t.trim())),Array.isArray(r)||(r=[]);let o=i.env.AXE_PICK_META_FIELDS;"string"==typeof o&&(o=o.split(",").map(t=>t.trim())),Array.isArray(o)||(o=[]),this.config=function(...t){const e=kt(Mt(xt),this!==Ft&&this||{},xt);let r={_:{}};for(const o of t)if(void 0!==o){if(!Pt(o))throw new TypeError("`"+o+"` is not an Option Object");r=kt(r,{_:o},e)}return r._}({showStack:!i.env.AXE_SHOW_STACK||a(i.env.AXE_SHOW_STACK),meta:Object.assign({show:!i.env.AXE_SHOW_META||a(i.env.AXE_SHOW_META),remappedFields:e,omittedFields:r,pickedFields:o,cleanupRemapping:!0,hideHTTP:"is_http",hideMeta:"hide_meta"},"object"==typeof t.meta?t.meta:{}),version:ae,silent:!1,logger:console,name:p,level:"info",levels:["info","warn","error","fatal"],appInfo:!i.env.AXE_APP_INFO||a(i.env.AXE_APP_INFO),hooks:Object.assign({pre:[],post:[]},"object"==typeof t.hooks?t.hooks:{})},t),this.appInfo=!!this.config.appInfo&&!!b(Bt)&&Bt(),this.log=this.log.bind(this);const n=Object.keys(this.config.logger).filter(t=>!f.has(t));for(const i of n)this[i]=this.config.logger[i];for(const i of s){if("fatal"===i?this.config.logger.fatal=A(this.config.logger[i])||A(this.config.logger.error)||A(this.config.logger.info)||A(this.config.logger.log):this.config.logger[i]=A(this.config.logger[i])||A(this.config.logger.info)||A(this.config.logger.log),!b(this.config.logger[i]))throw new Error(`\`${i}\` must be a function on the logger.`);this[i]=(...t)=>this.log(i,...Array.prototype.slice.call(t))}this.setLevel=this.setLevel.bind(this),this.getNormalizedLevel=this.getNormalizedLevel.bind(this),this.setName=this.setName.bind(this),this.config.name&&this.setName(this.config.name),this.setLevel(this.config.level),this.err=this.error,this.warning=this.warn,this.pre=function(t,e){this.config.hooks.pre.push((function(r,...o){return t!==r?[...o]:e(...o)}))},this.post=function(t,e){this.config.hooks.post.push((function(r,...o){return t!==r?[...o]:e(...o)}))}}setLevel(t){if(!m(t)||-1===s.indexOf(t))throw new Error(l);m(this.config.logger.logLevel)?this.config.logger.logLevel=t:this.config.logger.level=t,this.config.levels=s.slice(s.indexOf(t))}getNormalizedLevel(t){return m(t)?m(u[t])?u[t]:-1===s.indexOf(t)?"info":t:"info"}setName(t){if(!m(t))throw new Error("`name` must be a String");m(this.config.logger.scope)?this.config.logger.scope=t:this.config.logger.name=t}log(t,i,f,...l){const p=[],b=[];let A=!1,v=!0;d(t)||p.push(t),d(i)||p.push(i),d(f)||p.push(f);for(const e of Array.prototype.slice.call(l))p.push(e);let O=0;if(m(t)&&m(u[t])?t=u[t]:n(t)?(v=!1,f=i,i=t,t="error"):m(t)&&-1!==s.indexOf(t)||(v=!1,f=i,i=t,t=this.getNormalizedLevel(t),O=-1),-1===this.config.levels.indexOf(t))return;let w,S=!1;if((h(i)||Array.isArray(i))&&m(f)){S=!0;const t=f;f=i,i=m(t)&&p.length>=3+O?e(...p.slice(2+O)):t}if(d(i)&&(i=t),1!==p.slice(1+O).length||m(i)||n(i))if(!S&&p.length>=4+O){i=void 0,f={};const r=[];for(const t of p.slice(v&&0===O?1:0))n(t)?b.push(t):r.push(t);r.length>0&&(i=e(...r),A=!0),b.length>0&&"log"===t&&(t="error")}else if(S||p.length!==3+O||!m(i)||f&&f.is_http||!r.some(t=>-1!==i.indexOf(t)))if(n(i)){if(n(f)){b.push(f);const r=[];n(i)&&(b.unshift(i),i=void 0);for(const t of p.slice(2+O))f!==t&&(n(t)?b.push(t):r.push(t),r.length>0&&(i=e(...r),A=!0));"log"===t&&(t="error"),f={}}}else n(f)?(b.push(f),f={}):h(f)||d(f)||null===f?m(i)||(i=e(i)):(i=e(i,f),f={});else i=e(i,f),f={};else f={message:i},i=t;d(f)||h(f)?h(f)||(f={}):f={original_meta:f},n(i)&&(b.unshift(i),i=void 0),h(f.err)&&(n(f.err)&&b.push(f.err),f.original_err=n(f.err)?Lt(f.err):f.err),b.length>0&&(1===b.length?w=b[0]:((w=new Error([...new Set(b.map(t=>t.message).filter(Boolean))].join("; "))).stack=[...new Set(b.map(t=>t.stack).filter(Boolean))].join("\n\n"),w.errors=b),f.err=Lt(w),m(i)||(i=w.message)),f.level=t,this.appInfo&&(f.app=this.appInfo);const j=-1===O?"log":t;for(const e of this.config.hooks.pre)[w,i,f]=e(j,w,i,f);const P=a(f[c]);if(!g(this.config.meta.remappedFields))for(const e of Reflect.ownKeys(this.config.meta.remappedFields))if(Xt(f,this.config.meta.remappedFields[e],o(f,e)),Zt(f,e),this.config.meta.cleanupRemapping){const t=e.lastIndexOf(".");if(-1===t)continue;const r=e.slice(0,t);g(o(f,r))&&Zt(f,r)}if(!g(this.config.meta.omittedFields)||!g(this.config.meta.pickedFields)){const t=function(t){const e=[];return function t(r,o){if(!(function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}(r)||r.constructor&&"Uint8Array"===r.constructor.name||Array.isArray(r)))for(const n of Reflect.ownKeys(r)){const i=r[n],a=Ot(n)?Symbol.keyFor(n)||n.description:n,c=o?o+"."+a:a;y(i)&&-1===e.indexOf(a)?(e.push(a),t(i,c)):-1===e.indexOf(c)&&e.push(c)}}(t),e}(f);if(!g(this.config.meta.omittedFields))for(const r of this.config.meta.omittedFields){let e=t.length;for(;e--;)(t[e]===r||!Ot(t[e])&&0===t[e].indexOf(r+"."))&&t.splice(e,1)}const e=[];if(!g(this.config.meta.pickedFields))for(const r of this.config.meta.pickedFields){if(Ot(r))f[r]&&e.push([r,f[r]]);else{const e=r.indexOf("."),o=r.slice(0,e+1);if(-1!==e){let e=t.length;for(;e--;)(t[e]===o.slice(0,-1)||0===t[e].indexOf(o))&&t.splice(e,1)}}-1===t.indexOf(r)&&t.push(r)}for(const r of t)Ot(r)?void 0!==f[r]&&e.push([r,f[r]]):void 0!==f[Symbol.for(r)]&&e.push([Symbol.for(r),f[Symbol.for(r)]]);try{f=((t,e,r=".")=>{if(n=t,"[object Object]"!==Object.prototype.toString.call(n)||!e||!Array.isArray(e)&&"string"!=typeof e)return{};var n;const{length:i}=e;if("string"==typeof e||i<2){const n="string"==typeof e?e:e[0],i=o(t,n,r);return void 0!==i?Xt({},n,i,r):{}}return((t,e,r,n)=>{const i={};for(let a=0;a<r;a++){const r=e[a],c=o(t,r,n);void 0!==c&&Xt(i,r,c,n)}return i})(t,e,i,r)})(f,t)}catch(w){this.config.logger.error(w)}if(e.length>0)for(const[r,o]of e)f[r]=o}return this.config.silent||P||(n(w)&&this.config.showStack?!this.config.meta.show||g(f)||this.config.meta.hideMeta&&f[this.config.meta.hideMeta]?this.config.logger[j](...A?[i,w]:[w]):this.config.logger[j](...A?[i,w,f]:[w,f]):!this.config.meta.show||g(f)||this.config.meta.hideMeta&&f[this.config.meta.hideMeta]||this.config.meta.hideHTTP&&f[this.config.meta.hideHTTP]?this.config.logger[j](i):this.config.logger[j](i,f)),0===this.config.hooks.post.length?{method:j,err:w,message:i,meta:f}:Ut(this.config.hooks.post,t=>t(j,w,i,f)).then().catch(t=>{this.config.logger.error(t)})}}}).call(this)}.call(this,oe),Ae}));
1
+ !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Axe=t()}}((function(){return function t(e,r,o){function n(c,a){if(!r[c]){if(!e[c]){var s="function"==typeof require&&require;if(!a&&s)return s(c,!0);if(i)return i(c,!0);var f=new Error("Cannot find module '"+c+"'");throw f.code="MODULE_NOT_FOUND",f}var u=r[c]={exports:{}};e[c][0].call(u.exports,(function(t){return n(e[c][1][t]||t)}),u,u.exports,t,e,r,o)}return r[c].exports}for(var i="function"==typeof require&&require,c=0;c<o.length;c++)n(o[c]);return n}({1:[function(t,e,r){e.exports=function(t){var e=Array.prototype.slice.call(arguments,1);return e.length&&(t=t.toString().replace(/(%?)(%([jds]))/g,(function(t,r,o,n){var i=e.shift();switch(n){case"s":i=""+i;break;case"d":i=Number(i);break;case"j":i=JSON.stringify(i)}return r?(e.unshift(i),t):i}))),e.length&&(t=t.toString()+" "+e.join(" ")),""+t.toString().replace(/%{2,2}/g,"%")}},{}],2:[function(t,e,r){"use strict";e.exports=(t,e,r=".")=>{if(o=t,"[object Object]"!==Object.prototype.toString.call(o)||!e)return t;var o;const n=Array.isArray(e)?e:String(e).split(r),{length:i}=n;return i<2?t[n[0]]:((t,e,r)=>{for(let o=0;o<r;o++){if(null===t)return;const r=t[e[o]];if(void 0===r)return;t=r}return t})(t,n,i)}},{}],3:[function(t,e,r){"use strict";const o=t=>"object"==typeof t||"function"==typeof t,n=(t,e)=>"__proto__"==t||"constructor"==t&&"function"==typeof e.constructor;e.exports=(t,e,r,i=".")=>{if(!o(t)||!e||!e.length)return t;const c=Array.isArray(e)?e:String(e).split(i);if(n(c[0],t))return t;const{length:a}=c;return 1===a?(t[c[0]]=r,t):((t,e,r,i)=>{let c=t,a=0;for(;a<r-1;a++){const t=e[a];n(t,c)||(c=o(c[t])?c[t]:c[t]={})}return c[e[a]]=i,t})(t,c,a,r)}},{}],4:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.boolean=void 0,r.boolean=function(t){switch(Object.prototype.toString.call(t)){case"[object String]":return["true","t","yes","y","on","1"].includes(t.trim().toLowerCase());case"[object Number]":return 1===t.valueOf();case"[object Boolean]":return t.valueOf();default:return!1}}},{}],5:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.boolean=void 0;const o=t(4);Object.defineProperty(r,"boolean",{enumerable:!0,get:function(){return o.boolean}});const n=t(6);Object.defineProperty(r,"isBooleanable",{enumerable:!0,get:function(){return n.isBooleanable}})},{4:4,6:6}],6:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.isBooleanable=void 0,r.isBooleanable=function(t){switch(Object.prototype.toString.call(t)){case"[object String]":return["true","t","yes","y","on","1","false","f","no","n","off","0"].includes(t.trim().toLowerCase());case"[object Number]":return[0,1].includes(t.valueOf());case"[object Boolean]":return!0;default:return!1}}},{}],7:[function(t,e,r){},{}],8:[function(t,e,r){"use strict";var o=t(27),n=t(9),i=t(10),c=t(12);e.exports=c||o.call(i,n)},{10:10,12:12,27:27,9:9}],9:[function(t,e,r){"use strict";e.exports=Function.prototype.apply},{}],10:[function(t,e,r){"use strict";e.exports=Function.prototype.call},{}],27:[function(t,e,r){"use strict";var o=t(26);e.exports=Function.prototype.bind||o},{26:26}],12:[function(t,e,r){"use strict";e.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply},{}],11:[function(t,e,r){"use strict";var o=t(27),n=t(22),i=t(10),c=t(8);e.exports=function(t){if(t.length<1||"function"!=typeof t[0])throw new n("a function is required");return c(o,i,t)}},{10:10,22:22,27:27,8:8}],22:[function(t,e,r){"use strict";e.exports=TypeError},{}],13:[function(t,e,r){"use strict";var o=t(28),n=t(11),i=n([o("%String.prototype.indexOf%")]);e.exports=function(t,e){var r=o(t,!!e);return"function"==typeof r&&i(t,".prototype.")>-1?n([r]):r}},{11:11,28:28}],28:[function(t,e,r){"use strict";var o=t(24),n=t(18),i=t(17),c=t(19),a=t(20),s=t(21),f=t(22),u=t(23),p=t(49),l=t(50),y=t(52),g=t(53),d=t(54),h=t(55),m=t(56),b=Function,v=function(t){try{return b('"use strict"; return ('+t+").constructor;")()}catch(e){}},A=t(35),O=t(16),w=function(){throw new f},S=A?function(){try{return w}catch(t){try{return A(arguments,"callee").get}catch(e){return w}}}():w,j=t(36)(),x=t(31),P=t(29),E=t(30),_=t(9),F=t(10),I={},R="undefined"!=typeof Uint8Array&&x?x(Uint8Array):void 0,M={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?void 0:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayIteratorPrototype%":j&&x?x([][Symbol.iterator]()):void 0,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":I,"%AsyncGenerator%":I,"%AsyncGeneratorFunction%":I,"%AsyncIteratorPrototype%":I,"%Atomics%":"undefined"==typeof Atomics?void 0:Atomics,"%BigInt%":"undefined"==typeof BigInt?void 0:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?void 0:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?void 0:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?void 0:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":n,"%eval%":eval,"%EvalError%":i,"%Float16Array%":"undefined"==typeof Float16Array?void 0:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?void 0:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?void 0:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?void 0:FinalizationRegistry,"%Function%":b,"%GeneratorFunction%":I,"%Int8Array%":"undefined"==typeof Int8Array?void 0:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?void 0:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?void 0:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":j&&x?x(x([][Symbol.iterator]())):void 0,"%JSON%":"object"==typeof JSON?JSON:void 0,"%Map%":"undefined"==typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&j&&x?x((new Map)[Symbol.iterator]()):void 0,"%Math%":Math,"%Number%":Number,"%Object%":o,"%Object.getOwnPropertyDescriptor%":A,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?void 0:Promise,"%Proxy%":"undefined"==typeof Proxy?void 0:Proxy,"%RangeError%":c,"%ReferenceError%":a,"%Reflect%":"undefined"==typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&j&&x?x((new Set)[Symbol.iterator]()):void 0,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":j&&x?x(""[Symbol.iterator]()):void 0,"%Symbol%":j?Symbol:void 0,"%SyntaxError%":s,"%ThrowTypeError%":S,"%TypedArray%":R,"%TypeError%":f,"%Uint8Array%":"undefined"==typeof Uint8Array?void 0:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?void 0:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?void 0:Uint32Array,"%URIError%":u,"%WeakMap%":"undefined"==typeof WeakMap?void 0:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?void 0:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?void 0:WeakSet,"%Function.prototype.call%":F,"%Function.prototype.apply%":_,"%Object.defineProperty%":O,"%Object.getPrototypeOf%":P,"%Math.abs%":p,"%Math.floor%":l,"%Math.max%":y,"%Math.min%":g,"%Math.pow%":d,"%Math.round%":h,"%Math.sign%":m,"%Reflect.getPrototypeOf%":E};if(x)try{null.error}catch(H){var T=x(x(H));M["%Error.prototype%"]=T}var k={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},U=t(27),N=t(41),B=U.call(F,Array.prototype.concat),D=U.call(_,Array.prototype.splice),C=U.call(F,String.prototype.replace),L=U.call(F,String.prototype.slice),W=U.call(F,RegExp.prototype.exec),G=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,X=/\\(\\)?/g,z=function(t,e){var r,o=t;if(N(k,o)&&(o="%"+(r=k[o])[0]+"%"),N(M,o)){var n=M[o];if(n===I&&(n=function t(e){var r;if("%AsyncFunction%"===e)r=v("async function () {}");else if("%GeneratorFunction%"===e)r=v("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=v("async function* () {}");else if("%AsyncGenerator%"===e){var o=t("%AsyncGeneratorFunction%");o&&(r=o.prototype)}else if("%AsyncIteratorPrototype%"===e){var n=t("%AsyncGenerator%");n&&x&&(r=x(n.prototype))}return M[e]=r,r}(o)),void 0===n&&!e)throw new f("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:o,value:n}}throw new s("intrinsic "+t+" does not exist!")};e.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new f("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new f('"allowMissing" argument must be a boolean');if(null===W(/^%?[^%]*%?$/,t))throw new s("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=L(t,0,1),r=L(t,-1);if("%"===e&&"%"!==r)throw new s("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new s("invalid intrinsic syntax, expected opening `%`");var o=[];return C(t,G,(function(t,e,r,n){o[o.length]=r?C(n,X,"$1"):e||t})),o}(t),o=r.length>0?r[0]:"",n=z("%"+o+"%",e),i=n.name,c=n.value,a=!1,u=n.alias;u&&(o=u[0],D(r,B([0,1],u)));for(var p=1,l=!0;p<r.length;p+=1){var y=r[p],g=L(y,0,1),d=L(y,-1);if(('"'===g||"'"===g||"`"===g||'"'===d||"'"===d||"`"===d)&&g!==d)throw new s("property names with quotes must have matching quotes");if("constructor"!==y&&l||(a=!0),N(M,i="%"+(o+="."+y)+"%"))c=M[i];else if(null!=c){if(!(y in c)){if(!e)throw new f("base intrinsic for "+t+" exists, but the property is not available.");return}if(A&&p+1>=r.length){var h=A(c,y);c=(l=!!h)&&"get"in h&&!("originalValue"in h.get)?h.get:c[y]}else l=N(c,y),c=c[y];l&&!a&&(M[i]=c)}}return c}},{10:10,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,27:27,29:29,30:30,31:31,35:35,36:36,41:41,49:49,50:50,52:52,53:53,54:54,55:55,56:56,9:9}],14:[function(t,e,r){!function(t){"use strict";t.console||(t.console={});for(var e,r,o=t.console,n=function(){},i=["memory"],c="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");e=i.pop();)o[e]||(o[e]={});for(;r=c.pop();)o[r]||(o[r]=n)}("undefined"==typeof window?this:window)},{}],15:[function(t,e,r){"use strict";var o,n=t(11),i=t(35);try{o=[].__proto__===Array.prototype}catch(f){if(!f||"object"!=typeof f||!("code"in f)||"ERR_PROTO_ACCESS"!==f.code)throw f}var c=!!o&&i&&i(Object.prototype,"__proto__"),a=Object,s=a.getPrototypeOf;e.exports=c&&"function"==typeof c.get?n([c.get]):"function"==typeof s&&function(t){return s(null==t?t:a(t))}},{11:11,35:35}],35:[function(t,e,r){"use strict";var o=t(34);if(o)try{o([],"length")}catch(n){o=null}e.exports=o},{34:34}],16:[function(t,e,r){"use strict";var o=Object.defineProperty||!1;if(o)try{o({},"a",{value:1})}catch(n){o=!1}e.exports=o},{}],17:[function(t,e,r){"use strict";e.exports=EvalError},{}],18:[function(t,e,r){"use strict";e.exports=Error},{}],19:[function(t,e,r){"use strict";e.exports=RangeError},{}],20:[function(t,e,r){"use strict";e.exports=ReferenceError},{}],21:[function(t,e,r){"use strict";e.exports=SyntaxError},{}],23:[function(t,e,r){"use strict";e.exports=URIError},{}],24:[function(t,e,r){"use strict";e.exports=Object},{}],25:[function(t,e,r){e.exports=["%s","%d","%i","%f","%j","%o","%O","%%"]},{}],26:[function(t,e,r){"use strict";var o=Object.prototype.toString,n=Math.max,i=function(t,e){for(var r=[],o=0;o<t.length;o+=1)r[o]=t[o];for(var n=0;n<e.length;n+=1)r[n+t.length]=e[n];return r};e.exports=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==o.apply(e))throw new TypeError("Function.prototype.bind called on incompatible "+e);for(var r,c=function(t,e){for(var r=[],o=1,n=0;o<t.length;o+=1,n+=1)r[n]=t[o];return r}(arguments),a=n(0,e.length-c.length),s=[],f=0;f<a;f++)s[f]="$"+f;if(r=Function("binder","return function ("+function(t,e){for(var r="",o=0;o<t.length;o+=1)r+=t[o],o+1<t.length&&(r+=",");return r}(s)+"){ return binder.apply(this,arguments); }")((function(){if(this instanceof r){var o=e.apply(this,i(c,arguments));return Object(o)===o?o:this}return e.apply(t,i(c,arguments))})),e.prototype){var u=function(){};u.prototype=e.prototype,r.prototype=new u,u.prototype=null}return r}},{}],36:[function(t,e,r){"use strict";var o="undefined"!=typeof Symbol&&Symbol,n=t(37);e.exports=function(){return"function"==typeof o&&"function"==typeof Symbol&&"symbol"==typeof o("foo")&&"symbol"==typeof Symbol("bar")&&n()}},{37:37}],52:[function(t,e,r){"use strict";e.exports=Math.max},{}],49:[function(t,e,r){"use strict";e.exports=Math.abs},{}],50:[function(t,e,r){"use strict";e.exports=Math.floor},{}],53:[function(t,e,r){"use strict";e.exports=Math.min},{}],54:[function(t,e,r){"use strict";e.exports=Math.pow},{}],30:[function(t,e,r){"use strict";e.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},{}],55:[function(t,e,r){"use strict";e.exports=Math.round},{}],29:[function(t,e,r){"use strict";var o=t(24);e.exports=o.getPrototypeOf||null},{24:24}],56:[function(t,e,r){"use strict";var o=t(51);e.exports=function(t){return o(t)||0===t?t:t<0?-1:1}},{51:51}],41:[function(t,e,r){"use strict";var o=Function.prototype.call,n=Object.prototype.hasOwnProperty,i=t(27);e.exports=i.call(o,n)},{27:27}],31:[function(t,e,r){"use strict";var o=t(30),n=t(29),i=t(15);e.exports=o?function(t){return o(t)}:n?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return n(t)}:i?function(t){return i(t)}:null},{15:15,29:29,30:30}],32:[function(t,e,r){const o=t(33);function n(t,e,r){return"function"==typeof r.join?r.join(t):t[0]+e+t[1]}function i(t,e,r){return"function"!=typeof r.isValid||r.isValid(t,e)}function c(t){return o(t)||Array.isArray(t)||"function"==typeof t}e.exports=function(t,e,r){if(o(r)||(r={default:r}),!c(t))return void 0!==r.default?r.default:t;"number"==typeof e&&(e=String(e));const a=Array.isArray(e),s="string"==typeof e,f=r.separator||".",u=r.joinChar||("string"==typeof f?f:".");if(!s&&!a)return t;if(s&&e in t)return i(e,t,r)?t[e]:r.default;let p=a?e:function(t,e,r){return"function"==typeof r.split?r.split(t):t.split(e)}(e,f,r),l=p.length,y=0;do{let e=p[y];for("number"==typeof e&&(e=String(e));e&&"\\"===e.slice(-1);)e=n([e.slice(0,-1),p[++y]||""],u,r);if(e in t){if(!i(e,t,r))return r.default;t=t[e]}else{let o=!1,c=y+1;for(;c<l;)if(o=(e=n([e,p[c++]],u,r))in t){if(!i(e,t,r))return r.default;t=t[e],y=c-1;break}if(!o)return r.default}}while(++y<l&&c(t));return y===l?t:r.default}},{33:33}],33:[function(t,e,r){"use strict";e.exports=function(t){return null!=t&&"object"==typeof t&&!1===Array.isArray(t)}},{}],34:[function(t,e,r){"use strict";e.exports=Object.getOwnPropertyDescriptor},{}],37:[function(t,e,r){"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var o in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},{}],38:[function(t,e,r){"use strict";var o=t(37);e.exports=function(){return o()&&!!Symbol.toStringTag}},{37:37}],39:[function(t,e,r){"use strict";const o=t(32),n=t(40);e.exports=function(t,e,r){return!(null==(i=t)||"object"!=typeof i&&"function"!=typeof i&&!Array.isArray(i)||"string"!=typeof e&&!Array.isArray(e))&&n(o(t,e,r));var i}},{32:32,40:40}],40:[function(t,e,r){"use strict";const o=t(48);e.exports=function t(e){switch(o(e)){case"boolean":case"date":case"function":case"null":case"number":return!0;case"undefined":return!1;case"regexp":return"(?:)"!==e.source&&""!==e.source;case"buffer":return""!==e.toString();case"error":return""!==e.message;case"string":case"arguments":return 0!==e.length;case"file":case"map":case"set":return 0!==e.size;case"array":case"object":for(const r of Object.keys(e))if(t(e[r]))return!0;return!1;default:return!0}}},{48:48}],48:[function(t,e,r){var o=Object.prototype.toString;function n(t){return"function"==typeof t.constructor?t.constructor.name:null}e.exports=function(t){if(void 0===t)return"undefined";if(null===t)return"null";var e=typeof t;if("boolean"===e)return"boolean";if("string"===e)return"string";if("number"===e)return"number";if("symbol"===e)return"symbol";if("function"===e)return"GeneratorFunction"===n(t)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(t))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(t))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(t))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(t))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(t))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(t))return"regexp";switch(n(t)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(t))return"generator";switch(e=o.call(t)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return e.slice(8,-1).toLowerCase().replace(/\s/g,"")}},{}],42:[function(t,e,r){e.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},{}],43:[function(t,e,r){"use strict";e.exports=t=>{if("[object Object]"!==Object.prototype.toString.call(t))return!1;const e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}},{}],44:[function(t,e,r){"use strict";var o,n=t(13),i=t(38)(),c=t(41),a=t(35);if(i){var s=n("RegExp.prototype.exec"),f={},u=function(){throw f},p={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=u),o=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!c(e,"value"))return!1;try{s(t,p)}catch(r){return r===f}}}else{var l=n("Object.prototype.toString");o=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===l(t)}}e.exports=o},{13:13,35:35,38:38,41:41}],45:[function(t,e,r){"use strict";var o=t(13),n=o("Object.prototype.toString"),i=t(36)(),c=t(62);if(i){var a=o("Symbol.prototype.toString"),s=c(/^Symbol\(.*\)$/);e.exports=function(t){if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||"[object Symbol]"!==n(t))return!1;try{return function(t){return"symbol"==typeof t.valueOf()&&s(a(t))}(t)}catch(e){return!1}}}else e.exports=function(t){return!1}},{13:13,36:36,62:62}],62:[function(t,e,r){"use strict";var o=t(13),n=t(44),i=o("RegExp.prototype.exec"),c=t(22);e.exports=function(t){if(!n(t))throw new c("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},{13:13,22:22,44:44}],46:[function(t,e,r){e.exports=function(t){switch(Object.prototype.toString.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return t instanceof Error}}},{}],47:[function(t,e,r){"use strict";e.exports=function(t){return null!=t&&"object"==typeof t&&!1===Array.isArray(t)}},{}],51:[function(t,e,r){"use strict";e.exports=Number.isNaN||function(t){return t!=t}},{}],57:[function(t,e,r){"use strict";const o=t(43),{hasOwnProperty:n}=Object.prototype,{propertyIsEnumerable:i}=Object,c=(t,e,r)=>Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0}),a=this,s={concatArrays:!1,ignoreUndefined:!1},f=t=>{const e=[];for(const r in t)n.call(t,r)&&e.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(t);for(const o of r)i.call(t,o)&&e.push(o)}return e};function u(t){return Array.isArray(t)?function(t){const e=t.slice(0,0);return f(t).forEach(r=>{c(e,r,u(t[r]))}),e}(t):o(t)?function(t){const e=null===Object.getPrototypeOf(t)?Object.create(null):{};return f(t).forEach(r=>{c(e,r,u(t[r]))}),e}(t):t}const p=(t,e,r,o)=>(r.forEach(r=>{void 0===e[r]&&o.ignoreUndefined||(r in t&&t[r]!==Object.getPrototypeOf(t)?c(t,r,l(t[r],e[r],o)):c(t,r,u(e[r])))}),t);function l(t,e,r){return r.concatArrays&&Array.isArray(t)&&Array.isArray(e)?((t,e,r)=>{let o=t.slice(0,0),i=0;return[t,e].forEach(e=>{const a=[];for(let r=0;r<e.length;r++)n.call(e,r)&&(a.push(String(r)),c(o,i++,e===t?e[r]:u(e[r])));o=p(o,e,f(e).filter(t=>!a.includes(t)),r)}),o})(t,e,r):o(e)&&o(t)?p(t,e,f(e),r):u(e)}e.exports=function(...t){const e=l(u(s),this!==a&&this||{},s);let r={_:{}};for(const n of t)if(void 0!==n){if(!o(n))throw new TypeError("`"+n+"` is not an Option Object");r=l(r,{_:n},e)}return r._}},{43:43}],58:[function(t,e,r){r.hostname=function(){return"undefined"!=typeof location?location.hostname:""}},{}],59:[function(t,e,r){"use strict";function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return n(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,void 0):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,i=function(){};return{s:i,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,c=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw c}}}}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}const i=t(46);e.exports=function t(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!i(e))throw new Error("`err` must be an Error");if(!Array.isArray(r))throw new TypeError("`fields` must be an Array");const n={};var c,a=o(new Set([...Object.getOwnPropertyNames(Object.getPrototypeOf(e)),...Object.getOwnPropertyNames(e)]));try{for(a.s();!(c=a.n()).done;){const t=c.value;"function"!=typeof e[t]&&(n[t]=e[t])}}catch(e){a.e(e)}finally{a.f()}return!n.name&&e.constructor.name&&(n.name=e.constructor.name),Array.isArray(e.errors)&&(n.errors=e.errors.map(e=>i(e)?t(e,r):e)),Array.isArray(r)&&r.length>0?n.filter(t=>r.includes(t)):n}},{46:46}],60:[function(t,e,r){"use strict";const o=t(2),n=t(3);e.exports=(t,e,r=".")=>{if(i=t,"[object Object]"!==Object.prototype.toString.call(i)||!e||!Array.isArray(e)&&"string"!=typeof e)return{};var i;const{length:c}=e;if("string"==typeof e||c<2){const i="string"==typeof e?e:e[0],c=o(t,i,r);return void 0!==c?n({},i,c,r):{}}return((t,e,r,i)=>{const c={};for(let a=0;a<r;a++){const r=e[a],s=o(t,r,i);void 0!==s&&n(c,r,s,i)}return c})(t,e,c,r)}},{2:2,3:3}],61:[function(t,e,r){var o,n,i=e.exports={};function c(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(o===setTimeout)return setTimeout(t,0);if((o===c||!o)&&setTimeout)return o=setTimeout,setTimeout(t,0);try{return o(t,0)}catch(e){try{return o.call(null,t,0)}catch(e){return o.call(this,t,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:c}catch(t){o=c}try{n="function"==typeof clearTimeout?clearTimeout:a}catch(t){n=a}}();var f,u=[],p=!1,l=-1;function y(){p&&f&&(p=!1,f.length?u=f.concat(u):l=-1,u.length&&g())}function g(){if(!p){var t=s(y);p=!0;for(var e=u.length;e;){for(f=u,u=[];++l<e;)f&&f[l].run();l=-1,e=u.length}f=null,p=!1,function(t){if(n===clearTimeout)return clearTimeout(t);if((n===a||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{n(t)}catch(e){try{return n.call(null,t)}catch(e){return n.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function h(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];u.push(new d(t,e)),1!==u.length||p||s(g)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],63:[function(t,e,r){"use strict";var o=t(47),n=t(39);const i=t=>{if((t=>"__proto__"===t||"constructor"===t||"prototype"===t)(t))throw new Error(`Cannot set unsafe key: "${t}"`)};e.exports=function(t,e){if(!o(t))throw new TypeError("expected an object.");var r=Array.isArray(e);if(!r&&t.hasOwnProperty(e))return delete t[e],!0;if(n(t,e)){for(var c=r?e.slice():e.split("."),a=c.pop();c.length&&"\\"===c[c.length-1].slice(-1);)a=c.pop().slice(0,-1)+"."+a;for(;c.length;)e=c.shift(),i(e),t=t[e];return delete t[a]}return!0}},{39:39,47:47}],64:[function(t,e,r){e.exports={version:"14.0.0"}},{}],65:[function(t,e,r){(function(r){(function(){t(14);const o=t(58),n=t(1),i=t(25),c=t(2),a=t(46),s=t(45),f=t(42),u=t(57),p=t(7),l=t(59),y=t(60),g=t(3),d=t(63),{boolean:h}=t(5),m=t(64),b=Symbol.for("axe.silent"),v=new Set(["config","log"]),A=["trace","debug","info","warn","error","fatal"],O={warning:"warn",err:"error"},w="`level` invalid, must be: "+A.join(", "),S=r.env.HOSTNAME||o.hostname();function j(t){if("object"!=typeof t||null===t)return!1;const e=Object.getPrototypeOf(t);return!(null!==e&&e!==Object.prototype&&null!==Object.getPrototypeOf(e)||Symbol.toStringTag in t||Symbol.iterator in t||s(t))}function x(t){return null==t||"object"==typeof t&&0===Reflect.ownKeys(t).length||"string"==typeof t&&0===t.trim().length}function P(t){return void 0===t}function E(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function _(t){return"string"==typeof t}function F(t){return"function"==typeof t}function I(t){return F(t)?t:null}e.exports=class{constructor(t={}){const e={};if(r.env.AXE_REMAPPED_META_FIELDS){const t=r.env.AXE_REMAPPED_META_FIELDS.split(",").map(t=>t.split(":"));for(const[r,o]of t)e[r]=o}let o=r.env.AXE_OMIT_META_FIELDS;"string"==typeof o&&(o=o.split(",").map(t=>t.trim())),Array.isArray(o)||(o=[]);let n=r.env.AXE_PICK_META_FIELDS;"string"==typeof n&&(n=n.split(",").map(t=>t.trim())),Array.isArray(n)||(n=[]),this.config=u({showStack:!r.env.AXE_SHOW_STACK||h(r.env.AXE_SHOW_STACK),meta:Object.assign({show:!r.env.AXE_SHOW_META||h(r.env.AXE_SHOW_META),remappedFields:e,omittedFields:o,pickedFields:n,cleanupRemapping:!0,hideHTTP:"is_http",hideMeta:"hide_meta"},"object"==typeof t.meta?t.meta:{}),version:m.version,silent:!1,logger:console,name:S,level:"info",levels:["info","warn","error","fatal"],appInfo:!r.env.AXE_APP_INFO||h(r.env.AXE_APP_INFO),hooks:Object.assign({pre:[],post:[]},"object"==typeof t.hooks?t.hooks:{})},t),this.appInfo=!!this.config.appInfo&&!!F(p)&&p(),this.log=this.log.bind(this);const i=Object.keys(this.config.logger).filter(t=>!v.has(t));for(const r of i)this[r]=this.config.logger[r];for(const r of A){if("fatal"===r?this.config.logger.fatal=I(this.config.logger[r])||I(this.config.logger.error)||I(this.config.logger.info)||I(this.config.logger.log):this.config.logger[r]=I(this.config.logger[r])||I(this.config.logger.info)||I(this.config.logger.log),!F(this.config.logger[r]))throw new Error(`\`${r}\` must be a function on the logger.`);this[r]=(...t)=>this.log(r,...Array.prototype.slice.call(t))}this.setLevel=this.setLevel.bind(this),this.getNormalizedLevel=this.getNormalizedLevel.bind(this),this.setName=this.setName.bind(this),this.config.name&&this.setName(this.config.name),this.setLevel(this.config.level),this.err=this.error,this.warning=this.warn,this.pre=function(t,e){this.config.hooks.pre.push((function(r,...o){return t!==r?[...o]:e(...o)}))},this.post=function(t,e){this.config.hooks.post.push((function(r,...o){return t!==r?[...o]:e(...o)}))}}setLevel(t){if(!_(t)||-1===A.indexOf(t))throw new Error(w);_(this.config.logger.logLevel)?this.config.logger.logLevel=t:this.config.logger.level=t,this.config.levels=A.slice(A.indexOf(t))}getNormalizedLevel(t){return _(t)?_(O[t])?O[t]:-1===A.indexOf(t)?"info":t:"info"}setName(t){if(!_(t))throw new Error("`name` must be a String");_(this.config.logger.scope)?this.config.logger.scope=t:this.config.logger.name=t}log(t,e,r,...o){const u=[],p=[];let m=!1,v=!0;P(t)||u.push(t),P(e)||u.push(e),P(r)||u.push(r);for(const n of Array.prototype.slice.call(o))u.push(n);let w=0;if(_(t)&&_(O[t])?t=O[t]:a(t)?(v=!1,r=e,e=t,t="error"):_(t)&&-1!==A.indexOf(t)||(v=!1,r=e,e=t,t=this.getNormalizedLevel(t),w=-1),-1===this.config.levels.indexOf(t))return;let S,F=!1;if((E(e)||Array.isArray(e))&&_(r)){F=!0;const t=r;r=e,e=_(t)&&u.length>=3+w?n(...u.slice(2+w)):t}if(P(e)&&(e=t),1!==u.slice(1+w).length||_(e)||a(e))if(!F&&u.length>=4+w){e=void 0,r={};const o=[];for(const t of u.slice(v&&0===w?1:0))a(t)?p.push(t):o.push(t);o.length>0&&(e=n(...o),m=!0),p.length>0&&"log"===t&&(t="error")}else if(F||u.length!==3+w||!_(e)||r&&r.is_http||!i.some(t=>-1!==e.indexOf(t)))if(a(e)){if(a(r)){p.push(r);const o=[];a(e)&&(p.unshift(e),e=void 0);for(const t of u.slice(2+w))r!==t&&(a(t)?p.push(t):o.push(t),o.length>0&&(e=n(...o),m=!0));"log"===t&&(t="error"),r={}}}else a(r)?(p.push(r),r={}):E(r)||P(r)||null===r?_(e)||(e=n(e)):(e=n(e,r),r={});else e=n(e,r),r={};else r={message:e},e=t;P(r)||E(r)?E(r)||(r={}):r={original_meta:r},a(e)&&(p.unshift(e),e=void 0),E(r.err)&&(a(r.err)&&p.push(r.err),r.original_err=a(r.err)?l(r.err):r.err),p.length>0&&(1===p.length?S=p[0]:((S=new Error([...new Set(p.map(t=>t.message).filter(Boolean))].join("; "))).stack=[...new Set(p.map(t=>t.stack).filter(Boolean))].join("\n\n"),S.errors=p),r.err=l(S),_(e)||(e=S.message)),r.level=t,this.appInfo&&(r.app=this.appInfo);const I=-1===w?"log":t;for(const n of this.config.hooks.pre)[S,e,r]=n(I,S,e,r);const R=h(r[b]);if(!x(this.config.meta.remappedFields))for(const n of Reflect.ownKeys(this.config.meta.remappedFields))if(g(r,this.config.meta.remappedFields[n],c(r,n)),d(r,n),this.config.meta.cleanupRemapping){const t=n.lastIndexOf(".");if(-1===t)continue;const e=n.slice(0,t);x(c(r,e))&&d(r,e)}if(!x(this.config.meta.omittedFields)||!x(this.config.meta.pickedFields)){const t=function(t){const e=[];return function t(r,o){if(!(f(r)||r.constructor&&"Uint8Array"===r.constructor.name||Array.isArray(r)))for(const n of Reflect.ownKeys(r)){const i=r[n],c=s(n)?Symbol.keyFor(n)||n.description:n,a=o?o+"."+c:c;j(i)&&-1===e.indexOf(c)?(e.push(c),t(i,a)):-1===e.indexOf(a)&&e.push(a)}}(t),e}(r);if(!x(this.config.meta.omittedFields))for(const r of this.config.meta.omittedFields){let e=t.length;for(;e--;)(t[e]===r||!s(t[e])&&0===t[e].indexOf(r+"."))&&t.splice(e,1)}const e=[];if(!x(this.config.meta.pickedFields))for(const o of this.config.meta.pickedFields){if(s(o))r[o]&&e.push([o,r[o]]);else{const e=o.indexOf("."),r=o.slice(0,e+1);if(-1!==e){let e=t.length;for(;e--;)(t[e]===r.slice(0,-1)||0===t[e].indexOf(r))&&t.splice(e,1)}}-1===t.indexOf(o)&&t.push(o)}for(const o of t)s(o)?void 0!==r[o]&&e.push([o,r[o]]):void 0!==r[Symbol.for(o)]&&e.push([Symbol.for(o),r[Symbol.for(o)]]);try{r=y(r,t)}catch(S){this.config.logger.error(S)}if(e.length>0)for(const[o,n]of e)r[o]=n}return this.config.silent||R||(a(S)&&this.config.showStack?!this.config.meta.show||x(r)||this.config.meta.hideMeta&&r[this.config.meta.hideMeta]?this.config.logger[I](...m?[e,S]:[S]):this.config.logger[I](...m?[e,S,r]:[S,r]):!this.config.meta.show||x(r)||this.config.meta.hideMeta&&r[this.config.meta.hideMeta]||this.config.meta.hideHTTP&&r[this.config.meta.hideHTTP]?this.config.logger[I](e):this.config.logger[I](e,r)),0===this.config.hooks.post.length?{method:I,err:S,message:e,meta:r}:async function({hooks:t,method:e,err:r,message:o,meta:n,logger:i}){try{return await async function(t,i){const c=[...t],a=[];return async function t(i){return i===c.length?a:(a.push(await(s=c[i],s(e,r,o,n))),t(i+1));var s}(0)}(t)}catch(c){i.error(c)}}({hooks:this.config.hooks.post,method:I,err:S,message:e,meta:r,logger:this.config.logger})}}}).call(this)}).call(this,t(61))},{1:1,14:14,2:2,25:25,3:3,42:42,45:45,46:46,5:5,57:57,58:58,59:59,60:60,61:61,63:63,64:64,7:7}]},{},[65])(65)}));
package/lib/index.js CHANGED
@@ -12,7 +12,6 @@ const isError = require('iserror');
12
12
  const isSymbol = require('is-symbol');
13
13
  const isBuffer = require('is-buffer');
14
14
  const mergeOptions = require('merge-options');
15
- const pMapSeries = require('p-map-series');
16
15
  const parseAppInfo = require('parse-app-info');
17
16
  const parseErr = require('parse-err');
18
17
  const pickDeep = require('pick-deep');
@@ -31,6 +30,30 @@ const aliases = {
31
30
  };
32
31
  const levelError = `\`level\` invalid, must be: ${levels.join(', ')}`;
33
32
  const name = process.env.NODE_ENV === 'development' ? false : process.env.HOSTNAME || os.hostname();
33
+ async function mapSeries(iterable, mapper) {
34
+ const values = [...iterable];
35
+ const results = [];
36
+ async function map(index) {
37
+ if (index === values.length) return results;
38
+ results.push(await mapper(values[index]));
39
+ return map(index + 1);
40
+ }
41
+ return map(0);
42
+ }
43
+ async function runPostHooks({
44
+ hooks,
45
+ method,
46
+ err,
47
+ message,
48
+ meta,
49
+ logger
50
+ }) {
51
+ try {
52
+ return await mapSeries(hooks, hook => hook(method, err, message, meta));
53
+ } catch (err_) {
54
+ logger.error(err_);
55
+ }
56
+ }
34
57
 
35
58
  // <https://github.com/sindresorhus/is-plain-obj/blob/main/index.js>
36
59
  function isPlainObject(value) {
@@ -514,10 +537,15 @@ class Axe {
514
537
  message,
515
538
  meta
516
539
  };
517
- return pMapSeries(this.config.hooks.post, hook => hook(method, err, message, meta)).then().catch(err => {
518
- this.config.logger.error(err);
540
+ return runPostHooks({
541
+ hooks: this.config.hooks.post,
542
+ method,
543
+ err,
544
+ message,
545
+ meta,
546
+ logger: this.config.logger
519
547
  });
520
548
  }
521
549
  }
522
550
  module.exports = Axe;
523
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwib3MiLCJmb3JtYXQiLCJmb3JtYXRTcGVjaWZpZXJzIiwiZ2V0IiwiaXNFcnJvciIsImlzU3ltYm9sIiwiaXNCdWZmZXIiLCJtZXJnZU9wdGlvbnMiLCJwTWFwU2VyaWVzIiwicGFyc2VBcHBJbmZvIiwicGFyc2VFcnIiLCJwaWNrRGVlcCIsInNldCIsInVuc2V0IiwiYm9vbGVhbiIsInBrZyIsInNpbGVudFN5bWJvbCIsIlN5bWJvbCIsImZvciIsIm9taXR0ZWRMb2dnZXJLZXlzIiwiU2V0IiwibGV2ZWxzIiwiYWxpYXNlcyIsIndhcm5pbmciLCJlcnIiLCJsZXZlbEVycm9yIiwiam9pbiIsIm5hbWUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJIT1NUTkFNRSIsImhvc3RuYW1lIiwiaXNQbGFpbk9iamVjdCIsInZhbHVlIiwicHJvdG90eXBlIiwiT2JqZWN0IiwiZ2V0UHJvdG90eXBlT2YiLCJ0b1N0cmluZ1RhZyIsIml0ZXJhdG9yIiwiZG90aWZ5VG9BcnJheSIsIm9iaiIsInJlcyIsInJlY3Vyc2UiLCJjdXJyZW50IiwiY29uc3RydWN0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJrZXkiLCJSZWZsZWN0Iiwib3duS2V5cyIsImNvbnZlcnRlZEtleSIsImtleUZvciIsImRlc2NyaXB0aW9uIiwibmV3S2V5IiwiaW5kZXhPZiIsInB1c2giLCJpc0VtcHR5IiwidW5kZWZpbmVkIiwibGVuZ3RoIiwidHJpbSIsImlzTnVsbCIsImlzVW5kZWZpbmVkIiwiaXNPYmplY3QiLCJpc1N0cmluZyIsImlzRnVuY3Rpb24iLCJnZXRGdW5jdGlvbiIsIkF4ZSIsImNvbmZpZyIsInJlbWFwcGVkRmllbGRzIiwiQVhFX1JFTUFQUEVEX01FVEFfRklFTERTIiwiZmllbGRzIiwiYXJyIiwic3BsaXQiLCJtYXAiLCJ2IiwicHJvcCIsIm9taXR0ZWRGaWVsZHMiLCJBWEVfT01JVF9NRVRBX0ZJRUxEUyIsInMiLCJwaWNrZWRGaWVsZHMiLCJBWEVfUElDS19NRVRBX0ZJRUxEUyIsInNob3dTdGFjayIsIkFYRV9TSE9XX1NUQUNLIiwibWV0YSIsImFzc2lnbiIsInNob3ciLCJBWEVfU0hPV19NRVRBIiwiY2xlYW51cFJlbWFwcGluZyIsImhpZGVIVFRQIiwiaGlkZU1ldGEiLCJ2ZXJzaW9uIiwic2lsZW50IiwibG9nZ2VyIiwiY29uc29sZSIsImxldmVsIiwiYXBwSW5mbyIsIkFYRV9BUFBfSU5GTyIsImhvb2tzIiwicHJlIiwicG9zdCIsImxvZyIsImJpbmQiLCJtZXRob2RzIiwia2V5cyIsImZpbHRlciIsImhhcyIsImVsZW1lbnQiLCJmYXRhbCIsImVycm9yIiwiaW5mbyIsIkVycm9yIiwiYXJncyIsInNsaWNlIiwiY2FsbCIsInNldExldmVsIiwiZ2V0Tm9ybWFsaXplZExldmVsIiwic2V0TmFtZSIsIndhcm4iLCJmbiIsIl9sZXZlbCIsImxvZ0xldmVsIiwic2NvcGUiLCJtZXNzYWdlIiwib3JpZ2luYWxBcmdzIiwiZXJyb3JzIiwiaGFzTWVzc2FnZSIsImhhc0xldmVsIiwiYXJnIiwibW9kaWZpZXIiLCJpc0J1bnlhbiIsIl9tZXRhIiwibWVzc2FnZXMiLCJpc19odHRwIiwic29tZSIsInQiLCJ1bnNoaWZ0Iiwib3JpZ2luYWxfbWV0YSIsIm9yaWdpbmFsX2VyciIsImUiLCJCb29sZWFuIiwic3RhY2siLCJhcHAiLCJtZXRob2QiLCJob29rIiwiaGFkVHJ1ZVNpbGVudFN5bWJvbCIsImluZGV4IiwibGFzdEluZGV4T2YiLCJwYXJlbnRLZXkiLCJkb3RpZmllZCIsImkiLCJzcGxpY2UiLCJwaWNrZWRTeW1ib2xzIiwidGhlbiIsImNhdGNoIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVuYXNzaWduZWQtaW1wb3J0XG5yZXF1aXJlKCdjb25zb2xlLXBvbHlmaWxsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1ub2RlLXByb3RvY29sXG5jb25zdCBvcyA9IHJlcXVpcmUoJ29zJyk7XG5jb25zdCBmb3JtYXQgPSByZXF1aXJlKCdAbGFkanMvZm9ybWF0LXV0aWwnKTtcbmNvbnN0IGZvcm1hdFNwZWNpZmllcnMgPSByZXF1aXJlKCdmb3JtYXQtc3BlY2lmaWVycycpO1xuY29uc3QgZ2V0ID0gcmVxdWlyZSgnQHN0cmlrZWVudGNvL2dldCcpO1xuY29uc3QgaXNFcnJvciA9IHJlcXVpcmUoJ2lzZXJyb3InKTtcbmNvbnN0IGlzU3ltYm9sID0gcmVxdWlyZSgnaXMtc3ltYm9sJyk7XG5jb25zdCBpc0J1ZmZlciA9IHJlcXVpcmUoJ2lzLWJ1ZmZlcicpO1xuY29uc3QgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnbWVyZ2Utb3B0aW9ucycpO1xuY29uc3QgcE1hcFNlcmllcyA9IHJlcXVpcmUoJ3AtbWFwLXNlcmllcycpO1xuY29uc3QgcGFyc2VBcHBJbmZvID0gcmVxdWlyZSgncGFyc2UtYXBwLWluZm8nKTtcbmNvbnN0IHBhcnNlRXJyID0gcmVxdWlyZSgncGFyc2UtZXJyJyk7XG5jb25zdCBwaWNrRGVlcCA9IHJlcXVpcmUoJ3BpY2stZGVlcCcpO1xuY29uc3Qgc2V0ID0gcmVxdWlyZSgnQHN0cmlrZWVudGNvL3NldCcpO1xuY29uc3QgdW5zZXQgPSByZXF1aXJlKCd1bnNldC12YWx1ZScpO1xuY29uc3QgeyBib29sZWFuIH0gPSByZXF1aXJlKCdib29sZWFuJyk7XG5jb25zdCBwa2cgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qgc2lsZW50U3ltYm9sID0gU3ltYm9sLmZvcignYXhlLnNpbGVudCcpO1xuY29uc3Qgb21pdHRlZExvZ2dlcktleXMgPSBuZXcgU2V0KFsnY29uZmlnJywgJ2xvZyddKTtcbmNvbnN0IGxldmVscyA9IFsndHJhY2UnLCAnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJywgJ2ZhdGFsJ107XG5jb25zdCBhbGlhc2VzID0geyB3YXJuaW5nOiAnd2FybicsIGVycjogJ2Vycm9yJyB9O1xuY29uc3QgbGV2ZWxFcnJvciA9IGBcXGBsZXZlbFxcYCBpbnZhbGlkLCBtdXN0IGJlOiAke2xldmVscy5qb2luKCcsICcpfWA7XG5jb25zdCBuYW1lID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZhbHNlXG4gICAgOiBwcm9jZXNzLmVudi5IT1NUTkFNRSB8fCBvcy5ob3N0bmFtZSgpO1xuXG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9pcy1wbGFpbi1vYmovYmxvYi9tYWluL2luZGV4LmpzPlxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIHJldHVybiAoXG4gICAgKHByb3RvdHlwZSA9PT0gbnVsbCB8fFxuICAgICAgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlIHx8XG4gICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gbnVsbCkgJiZcbiAgICAhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkgJiZcbiAgICAhKFN5bWJvbC5pdGVyYXRvciBpbiB2YWx1ZSkgJiZcbiAgICAhaXNTeW1ib2wodmFsdWUpXG4gICk7XG59XG5cbi8vIDxodHRwczovL2dpdGh1Yi5jb20vR2VlbmVuVGlqZC9kb3RpZnkvYmxvYi9tYXN0ZXIvZG90aWZ5LmpzPlxuZnVuY3Rpb24gZG90aWZ5VG9BcnJheShvYmopIHtcbiAgY29uc3QgcmVzID0gW107XG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqLCBjdXJyZW50KSB7XG4gICAgLy8gaWYgaXQncyBhIGJ1ZmZlciwgdWludDhhcnJheSwgb3IgYXJyYXlcbiAgICBpZiAoXG4gICAgICBpc0J1ZmZlcihvYmopIHx8XG4gICAgICAob2JqLmNvbnN0cnVjdG9yICYmIG9iai5jb25zdHJ1Y3Rvci5uYW1lID09PSAnVWludDhBcnJheScpIHx8XG4gICAgICBBcnJheS5pc0FycmF5KG9iailcbiAgICApXG4gICAgICByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXMob2JqKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZEtleSA9IGlzU3ltYm9sKGtleSlcbiAgICAgICAgPyBTeW1ib2wua2V5Rm9yKGtleSkgfHwga2V5LmRlc2NyaXB0aW9uXG4gICAgICAgIDoga2V5O1xuICAgICAgY29uc3QgbmV3S2V5ID0gY3VycmVudCA/IGN1cnJlbnQgKyAnLicgKyBjb252ZXJ0ZWRLZXkgOiBjb252ZXJ0ZWRLZXk7IC8vIGpvaW5lZCBrZXkgd2l0aCBkb3RcbiAgICAgIC8vIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSAmJiAhT2JqZWN0SUQuaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSAmJiByZXMuaW5kZXhPZihjb252ZXJ0ZWRLZXkpID09PSAtMSkge1xuICAgICAgICByZXMucHVzaChjb252ZXJ0ZWRLZXkpO1xuICAgICAgICByZWN1cnNlKHZhbHVlLCBuZXdLZXkpOyAvLyBpdCdzIGEgbmVzdGVkIG9iamVjdCwgc28gZG8gaXQgYWdhaW5cbiAgICAgIH0gZWxzZSBpZiAocmVzLmluZGV4T2YobmV3S2V5KSA9PT0gLTEpIHtcbiAgICAgICAgcmVzLnB1c2gobmV3S2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWN1cnNlKG9iaik7XG4gIHJldHVybiByZXM7XG59XG5cbi8vIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDMyMzMxNjM+XG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdC5vd25LZXlzKHZhbHVlKS5sZW5ndGggPT09IDApIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMClcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNOdWxsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gZ2V0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUgOiBudWxsO1xufVxuXG5jbGFzcyBBeGUge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgIGNvbnN0IHJlbWFwcGVkRmllbGRzID0ge307XG4gICAgaWYgKHByb2Nlc3MuZW52LkFYRV9SRU1BUFBFRF9NRVRBX0ZJRUxEUykge1xuICAgICAgY29uc3QgZmllbGRzID0gcHJvY2Vzcy5lbnYuQVhFX1JFTUFQUEVEX01FVEFfRklFTERTO1xuICAgICAgY29uc3QgYXJyID0gZmllbGRzLnNwbGl0KCcsJykubWFwKCh2KSA9PiB2LnNwbGl0KCc6JykpO1xuICAgICAgZm9yIChjb25zdCBbcHJvcCwgdmFsdWVdIG9mIGFycikge1xuICAgICAgICByZW1hcHBlZEZpZWxkc1twcm9wXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVudmlmeSBkb2VzIG5vdCBzdXBwb3J0IGNvbmRpdGlvbmFscyB3ZWxsIGVub3VnaCBzbyB3ZSBkZWNsYXJlIHZhcnMgb3V0c2lkZVxuICAgIGxldCBvbWl0dGVkRmllbGRzID0gcHJvY2Vzcy5lbnYuQVhFX09NSVRfTUVUQV9GSUVMRFM7XG4gICAgaWYgKHR5cGVvZiBvbWl0dGVkRmllbGRzID09PSAnc3RyaW5nJylcbiAgICAgIG9taXR0ZWRGaWVsZHMgPSBvbWl0dGVkRmllbGRzLnNwbGl0KCcsJykubWFwKChzKSA9PiBzLnRyaW0oKSk7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9taXR0ZWRGaWVsZHMpKSBvbWl0dGVkRmllbGRzID0gW107XG5cbiAgICBsZXQgcGlja2VkRmllbGRzID0gcHJvY2Vzcy5lbnYuQVhFX1BJQ0tfTUVUQV9GSUVMRFM7XG4gICAgaWYgKHR5cGVvZiBwaWNrZWRGaWVsZHMgPT09ICdzdHJpbmcnKVxuICAgICAgcGlja2VkRmllbGRzID0gcGlja2VkRmllbGRzLnNwbGl0KCcsJykubWFwKChzKSA9PiBzLnRyaW0oKSk7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBpY2tlZEZpZWxkcykpIHBpY2tlZEZpZWxkcyA9IFtdO1xuXG4gICAgdGhpcy5jb25maWcgPSBtZXJnZU9wdGlvbnMoXG4gICAgICB7XG4gICAgICAgIHNob3dTdGFjazogcHJvY2Vzcy5lbnYuQVhFX1NIT1dfU1RBQ0tcbiAgICAgICAgICA/IGJvb2xlYW4ocHJvY2Vzcy5lbnYuQVhFX1NIT1dfU1RBQ0spXG4gICAgICAgICAgOiB0cnVlLFxuICAgICAgICBtZXRhOiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNob3c6IHByb2Nlc3MuZW52LkFYRV9TSE9XX01FVEFcbiAgICAgICAgICAgICAgPyBib29sZWFuKHByb2Nlc3MuZW52LkFYRV9TSE9XX01FVEEpXG4gICAgICAgICAgICAgIDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbWFwcGVkRmllbGRzLFxuICAgICAgICAgICAgb21pdHRlZEZpZWxkcyxcbiAgICAgICAgICAgIHBpY2tlZEZpZWxkcyxcbiAgICAgICAgICAgIGNsZWFudXBSZW1hcHBpbmc6IHRydWUsXG4gICAgICAgICAgICBoaWRlSFRUUDogJ2lzX2h0dHAnLFxuICAgICAgICAgICAgLy8gaW1wbGVtZW50ZWQgbWFpbmx5IGZvciBAbGFkanMvZ3JhY2VmdWwgdG9cbiAgICAgICAgICAgIC8vIHN1cHByZXNzIHVubmVjZXNzYXJ5IG1ldGEgb3V0cHV0IHRvIGNvbnNvbGVcbiAgICAgICAgICAgIGhpZGVNZXRhOiAnaGlkZV9tZXRhJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdHlwZW9mIGNvbmZpZy5tZXRhID09PSAnb2JqZWN0JyA/IGNvbmZpZy5tZXRhIDoge31cbiAgICAgICAgKSxcbiAgICAgICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgICAgIGxvZ2dlcjogY29uc29sZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbGV2ZWw6ICdpbmZvJyxcbiAgICAgICAgbGV2ZWxzOiBbJ2luZm8nLCAnd2FybicsICdlcnJvcicsICdmYXRhbCddLFxuICAgICAgICBhcHBJbmZvOiBwcm9jZXNzLmVudi5BWEVfQVBQX0lORk9cbiAgICAgICAgICA/IGJvb2xlYW4ocHJvY2Vzcy5lbnYuQVhFX0FQUF9JTkZPKVxuICAgICAgICAgIDogdHJ1ZSxcbiAgICAgICAgaG9va3M6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJlOiBbXSxcbiAgICAgICAgICAgIHBvc3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eXBlb2YgY29uZmlnLmhvb2tzID09PSAnb2JqZWN0JyA/IGNvbmZpZy5ob29rcyA6IHt9XG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBjb25maWdcbiAgICApO1xuXG4gICAgdGhpcy5hcHBJbmZvID0gdGhpcy5jb25maWcuYXBwSW5mb1xuICAgICAgPyBpc0Z1bmN0aW9uKHBhcnNlQXBwSW5mbylcbiAgICAgICAgPyBwYXJzZUFwcEluZm8oKVxuICAgICAgICA6IGZhbHNlXG4gICAgICA6IGZhbHNlO1xuXG4gICAgdGhpcy5sb2cgPSB0aGlzLmxvZy5iaW5kKHRoaXMpO1xuXG4gICAgLy8gSW5oZXJpdCBtZXRob2RzIGZyb20gcGFyZW50IGxvZ2dlclxuICAgIGNvbnN0IG1ldGhvZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZy5sb2dnZXIpLmZpbHRlcihcbiAgICAgIChrZXkpID0+ICFvbWl0dGVkTG9nZ2VyS2V5cy5oYXMoa2V5KVxuICAgICk7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIG1ldGhvZHMpIHtcbiAgICAgIHRoaXNbZWxlbWVudF0gPSB0aGlzLmNvbmZpZy5sb2dnZXJbZWxlbWVudF07XG4gICAgfVxuXG4gICAgLy8gQmluZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBlYWNoIGxvZyBsZXZlbFxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBsZXZlbHMpIHtcbiAgICAgIC8vIEVuc3VyZSBmdW5jdGlvbiBleGlzdHMgaW4gbG9nZ2VyIHBhc3NlZFxuICAgICAgaWYgKGVsZW1lbnQgPT09ICdmYXRhbCcpIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyLmZhdGFsID1cbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXJbZWxlbWVudF0pIHx8XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyLmVycm9yKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5pbmZvKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5sb2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdID1cbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXJbZWxlbWVudF0pIHx8XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyLmluZm8pIHx8XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyLmxvZyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXJbZWxlbWVudF0pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtlbGVtZW50fVxcYCBtdXN0IGJlIGEgZnVuY3Rpb24gb24gdGhlIGxvZ2dlci5gKTtcbiAgICAgIH1cblxuICAgICAgLy8gQmluZCBsb2cgaGFuZGxlciB3aGljaCBub3JtYWxpemVzIGFyZ3MgYW5kIHBvcHVsYXRlcyBtZXRhXG4gICAgICB0aGlzW2VsZW1lbnRdID0gKC4uLmFyZ3MpID0+XG4gICAgICAgIHRoaXMubG9nKGVsZW1lbnQsIC4uLkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldExldmVsID0gdGhpcy5zZXRMZXZlbC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0Tm9ybWFsaXplZExldmVsID0gdGhpcy5nZXROb3JtYWxpemVkTGV2ZWwuYmluZCh0aGlzKTtcbiAgICB0aGlzLnNldE5hbWUgPSB0aGlzLnNldE5hbWUuYmluZCh0aGlzKTtcblxuICAgIC8vIFNldCB0aGUgbG9nZ2VyIG5hbWVcbiAgICBpZiAodGhpcy5jb25maWcubmFtZSkgdGhpcy5zZXROYW1lKHRoaXMuY29uZmlnLm5hbWUpO1xuXG4gICAgLy8gU2V0IHRoZSBsb2dnZXIgbGV2ZWxcbiAgICB0aGlzLnNldExldmVsKHRoaXMuY29uZmlnLmxldmVsKTtcblxuICAgIC8vIEFsaWFzZXNcbiAgICB0aGlzLmVyciA9IHRoaXMuZXJyb3I7XG4gICAgdGhpcy53YXJuaW5nID0gdGhpcy53YXJuO1xuXG4gICAgLy8gUHJlIGFuZCBQb3N0IEhvb2tzXG4gICAgdGhpcy5wcmUgPSBmdW5jdGlvbiAobGV2ZWwsIGZuKSB7XG4gICAgICB0aGlzLmNvbmZpZy5ob29rcy5wcmUucHVzaChmdW5jdGlvbiAoX2xldmVsLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChsZXZlbCAhPT0gX2xldmVsKSByZXR1cm4gWy4uLmFyZ3NdO1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5wb3N0ID0gZnVuY3Rpb24gKGxldmVsLCBmbikge1xuICAgICAgdGhpcy5jb25maWcuaG9va3MucG9zdC5wdXNoKGZ1bmN0aW9uIChfbGV2ZWwsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGxldmVsICE9PSBfbGV2ZWwpIHJldHVybiBbLi4uYXJnc107XG4gICAgICAgIHJldHVybiBmbiguLi5hcmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICBzZXRMZXZlbChsZXZlbCkge1xuICAgIGlmICghaXNTdHJpbmcobGV2ZWwpIHx8IGxldmVscy5pbmRleE9mKGxldmVsKSA9PT0gLTEpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobGV2ZWxFcnJvcik7XG4gICAgLy8gU3VwcG9ydCBzaWduYWxlIGxvZ2dlciBhbmQgb3RoZXIgbG9nZ2VycyB0aGF0IHVzZSBgbG9nTGV2ZWxgXG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuY29uZmlnLmxvZ2dlci5sb2dMZXZlbCkpXG4gICAgICB0aGlzLmNvbmZpZy5sb2dnZXIubG9nTGV2ZWwgPSBsZXZlbDtcbiAgICBlbHNlIHRoaXMuY29uZmlnLmxvZ2dlci5sZXZlbCA9IGxldmVsO1xuICAgIC8vIEFkanVzdHMgYHRoaXMuY29uZmlnLmxldmVsc2AgYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0IGhhcyBhbGwgcHJvY2VlZGluZyAoaW5jbHVzaXZlKVxuICAgIHRoaXMuY29uZmlnLmxldmVscyA9IGxldmVscy5zbGljZShsZXZlbHMuaW5kZXhPZihsZXZlbCkpO1xuICB9XG5cbiAgZ2V0Tm9ybWFsaXplZExldmVsKGxldmVsKSB7XG4gICAgaWYgKCFpc1N0cmluZyhsZXZlbCkpIHJldHVybiAnaW5mbyc7XG4gICAgaWYgKGlzU3RyaW5nKGFsaWFzZXNbbGV2ZWxdKSkgcmV0dXJuIGFsaWFzZXNbbGV2ZWxdO1xuICAgIGlmIChsZXZlbHMuaW5kZXhPZihsZXZlbCkgPT09IC0xKSByZXR1cm4gJ2luZm8nO1xuICAgIHJldHVybiBsZXZlbDtcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIGlmICghaXNTdHJpbmcobmFtZSkpIHRocm93IG5ldyBFcnJvcignYG5hbWVgIG11c3QgYmUgYSBTdHJpbmcnKTtcbiAgICAvLyBTdXBwb3J0IHNpZ25hbGUgbG9nZ2VyIGFuZCBvdGhlciBsb2dnZXJzIHRoYXQgdXNlIGBzY29wZWBcbiAgICBpZiAoaXNTdHJpbmcodGhpcy5jb25maWcubG9nZ2VyLnNjb3BlKSkgdGhpcy5jb25maWcubG9nZ2VyLnNjb3BlID0gbmFtZTtcbiAgICBlbHNlIHRoaXMuY29uZmlnLmxvZ2dlci5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIGxvZyhsZXZlbCwgbWVzc2FnZSwgbWV0YSwgLi4uYXJncykge1xuICAgIGNvbnN0IG9yaWdpbmFsQXJncyA9IFtdO1xuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuICAgIGxldCBoYXNNZXNzYWdlID0gZmFsc2U7XG4gICAgbGV0IGhhc0xldmVsID0gdHJ1ZTtcblxuICAgIGlmICghaXNVbmRlZmluZWQobGV2ZWwpKSBvcmlnaW5hbEFyZ3MucHVzaChsZXZlbCk7XG4gICAgaWYgKCFpc1VuZGVmaW5lZChtZXNzYWdlKSkgb3JpZ2luYWxBcmdzLnB1c2gobWVzc2FnZSk7XG4gICAgaWYgKCFpc1VuZGVmaW5lZChtZXRhKSkgb3JpZ2luYWxBcmdzLnB1c2gobWV0YSk7XG4gICAgZm9yIChjb25zdCBhcmcgb2YgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykpIHtcbiAgICAgIG9yaWdpbmFsQXJncy5wdXNoKGFyZyk7XG4gICAgfVxuXG4gICAgbGV0IG1vZGlmaWVyID0gMDtcblxuICAgIGlmIChpc1N0cmluZyhsZXZlbCkgJiYgaXNTdHJpbmcoYWxpYXNlc1tsZXZlbF0pKSB7XG4gICAgICBsZXZlbCA9IGFsaWFzZXNbbGV2ZWxdO1xuICAgIH0gZWxzZSBpZiAoaXNFcnJvcihsZXZlbCkpIHtcbiAgICAgIGhhc0xldmVsID0gZmFsc2U7XG4gICAgICBtZXRhID0gbWVzc2FnZTtcbiAgICAgIG1lc3NhZ2UgPSBsZXZlbDtcbiAgICAgIGxldmVsID0gJ2Vycm9yJztcbiAgICB9IGVsc2UgaWYgKCFpc1N0cmluZyhsZXZlbCkgfHwgbGV2ZWxzLmluZGV4T2YobGV2ZWwpID09PSAtMSkge1xuICAgICAgaGFzTGV2ZWwgPSBmYWxzZTtcbiAgICAgIG1ldGEgPSBtZXNzYWdlO1xuICAgICAgbWVzc2FnZSA9IGxldmVsO1xuICAgICAgbGV2ZWwgPSB0aGlzLmdldE5vcm1hbGl6ZWRMZXZlbChsZXZlbCk7XG4gICAgICBtb2RpZmllciA9IC0xO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBlYXJseSBpZiBpdCBpcyBub3QgYSB2YWxpZCBsb2dnaW5nIGxldmVsXG4gICAgaWYgKHRoaXMuY29uZmlnLmxldmVscy5pbmRleE9mKGxldmVsKSA9PT0gLTEpIHJldHVybjtcblxuICAgIC8vIEJ1bnlhbiBzdXBwb3J0IChtZXRhLCBtZXNzYWdlLCAuLi5hcmdzKVxuICAgIGxldCBpc0J1bnlhbiA9IGZhbHNlO1xuICAgIGlmICgoaXNPYmplY3QobWVzc2FnZSkgfHwgQXJyYXkuaXNBcnJheShtZXNzYWdlKSkgJiYgaXNTdHJpbmcobWV0YSkpIHtcbiAgICAgIGlzQnVueWFuID0gdHJ1ZTtcbiAgICAgIGNvbnN0IF9tZXRhID0gbWV0YTtcbiAgICAgIG1ldGEgPSBtZXNzYWdlO1xuICAgICAgbWVzc2FnZSA9XG4gICAgICAgIGlzU3RyaW5nKF9tZXRhKSAmJiBvcmlnaW5hbEFyZ3MubGVuZ3RoID49IDMgKyBtb2RpZmllclxuICAgICAgICAgID8gZm9ybWF0KC4uLm9yaWdpbmFsQXJncy5zbGljZSgyICsgbW9kaWZpZXIpKVxuICAgICAgICAgIDogX21ldGE7XG4gICAgfVxuXG4gICAgLy8gSWYgbWVzc2FnZSB3YXMgdW5kZWZpbmVkIHRoZW4gc2V0IGl0IHRvIGxldmVsXG4gICAgaWYgKGlzVW5kZWZpbmVkKG1lc3NhZ2UpKSBtZXNzYWdlID0gbGV2ZWw7XG5cbiAgICAvLyBJZiBvbmx5IGBtZXNzYWdlYCB3YXMgcGFzc2VkIHRoZW4gaWYgaXQgd2FzIGFuIE9iamVjdFxuICAgIC8vIHByZXNlcnZlIGl0IGFzIGFuIE9iamVjdCBieSBzZXR0aW5nIGl0IGFzIG1ldGFcbiAgICBpZiAoXG4gICAgICBvcmlnaW5hbEFyZ3Muc2xpY2UoMSArIG1vZGlmaWVyKS5sZW5ndGggPT09IDEgJiZcbiAgICAgICFpc1N0cmluZyhtZXNzYWdlKSAmJlxuICAgICAgIWlzRXJyb3IobWVzc2FnZSlcbiAgICApIHtcbiAgICAgIG1ldGEgPSB7IG1lc3NhZ2UgfTtcbiAgICAgIG1lc3NhZ2UgPSBsZXZlbDtcbiAgICB9IGVsc2UgaWYgKCFpc0J1bnlhbiAmJiBvcmlnaW5hbEFyZ3MubGVuZ3RoID49IDQgKyBtb2RpZmllcikge1xuICAgICAgbWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgIG1ldGEgPSB7fTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gW107XG4gICAgICBmb3IgKGNvbnN0IGFyZyBvZiBvcmlnaW5hbEFyZ3Muc2xpY2UoXG4gICAgICAgIGhhc0xldmVsICYmIG1vZGlmaWVyID09PSAwID8gMSA6IDBcbiAgICAgICkpIHtcbiAgICAgICAgaWYgKGlzRXJyb3IoYXJnKSkgZXJyb3JzLnB1c2goYXJnKTtcbiAgICAgICAgLy8gcHVzaGVzIG51bWJlciwgb2JqZWN0LCBzdHJpbmcsIGV0YyBmb3IgZm9ybWF0dGluZ1xuICAgICAgICBlbHNlIG1lc3NhZ2VzLnB1c2goYXJnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbWVzc2FnZSA9IGZvcm1hdCguLi5tZXNzYWdlcyk7XG4gICAgICAgIGhhc01lc3NhZ2UgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDAgJiYgbGV2ZWwgPT09ICdsb2cnKSBsZXZlbCA9ICdlcnJvcic7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICFpc0J1bnlhbiAmJlxuICAgICAgb3JpZ2luYWxBcmdzLmxlbmd0aCA9PT0gMyArIG1vZGlmaWVyICYmXG4gICAgICBpc1N0cmluZyhtZXNzYWdlKSAmJlxuICAgICAgIShtZXRhICYmIG1ldGEuaXNfaHR0cCkgJiZcbiAgICAgIGZvcm1hdFNwZWNpZmllcnMuc29tZSgodCkgPT4gbWVzc2FnZS5pbmRleE9mKHQpICE9PSAtMSlcbiAgICApIHtcbiAgICAgIC8vIE90aGVyd2lzZSBpZiB0aGVyZSBhcmUgdGhyZWUgYXJncyBhbmQgaWYgdGhlIGBtZXNzYWdlYCBjb250YWluc1xuICAgICAgLy8gYSBwbGFjZWhvbGRlciB0b2tlbiAoZS5nLiAnJXMnIG9yICclZCcgLSBzZWUgYWJvdmUgYGZvcm1hdFNwZWNpZmllcnNgIHZhcmlhYmxlKVxuICAgICAgLy8gdGhlbiB3ZSBjYW4gaW5mZXIgdGhhdCB0aGUgYG1ldGFgIGFyZyBwYXNzZWQgaXMgdXNlZCBmb3IgZm9ybWF0dGluZ1xuICAgICAgbWVzc2FnZSA9IGZvcm1hdChtZXNzYWdlLCBtZXRhKTtcbiAgICAgIG1ldGEgPSB7fTtcbiAgICB9IGVsc2UgaWYgKCFpc0Vycm9yKG1lc3NhZ2UpKSB7XG4gICAgICBpZiAoaXNFcnJvcihtZXRhKSkge1xuICAgICAgICBlcnJvcnMucHVzaChtZXRhKTtcbiAgICAgICAgbWV0YSA9IHt9O1xuICAgICAgfSBlbHNlIGlmICghaXNPYmplY3QobWV0YSkgJiYgIWlzVW5kZWZpbmVkKG1ldGEpICYmICFpc051bGwobWV0YSkpIHtcbiAgICAgICAgLy8gSWYgdGhlIGBtZXRhYCB2YXJpYWJsZSBwYXNzZWQgd2FzIG5vdCBhbiBPYmplY3QgdGhlbiBjb252ZXJ0IGl0XG4gICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQobWVzc2FnZSwgbWV0YSk7XG4gICAgICAgIG1ldGEgPSB7fTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaW5nKG1lc3NhZ2UpKSB7XG4gICAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGlzIG5vdCBhIHN0cmluZyB0aGVuIHdlIHNob3VsZCBydW4gYHV0aWwuZm9ybWF0YCBvbiBpdFxuICAgICAgICAvLyBhc3N1bWluZyB3ZSdyZSBmb3JtYXR0aW5nIGl0IGxpa2UgaXQgd2FzIGFub3RoZXIgYXJndW1lbnRcbiAgICAgICAgLy8gKGFzIG9wcG9zZWQgdG8gdXNpbmcgc29tZXRoaW5nIGxpa2UgZmFzdC1qc29uLXN0cmluZ2lmeSlcbiAgICAgICAgbWVzc2FnZSA9IGZvcm1hdChtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzRXJyb3IobWV0YSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKG1ldGEpO1xuICAgICAgLy8gaGFuZGxlIGFkZGl0aW9uYWwgYXJnc1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBbXTtcbiAgICAgIGlmIChpc0Vycm9yKG1lc3NhZ2UpKSB7XG4gICAgICAgIGVycm9ycy51bnNoaWZ0KG1lc3NhZ2UpO1xuICAgICAgICBtZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGFyZyBvZiBvcmlnaW5hbEFyZ3Muc2xpY2UoMiArIG1vZGlmaWVyKSkge1xuICAgICAgICAvLyBzaG91bGQgc2tpcCB0aGlzIGJldHRlciB3aXRoIHNsaWNlIGFuZCBtb2RpZmllciBhZGp1c3RtZW50XG4gICAgICAgIGlmIChtZXRhID09PSBhcmcpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoaXNFcnJvcihhcmcpKSBlcnJvcnMucHVzaChhcmcpO1xuICAgICAgICBlbHNlIG1lc3NhZ2VzLnB1c2goYXJnKTtcblxuICAgICAgICBpZiAobWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQoLi4ubWVzc2FnZXMpO1xuICAgICAgICAgIGhhc01lc3NhZ2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChsZXZlbCA9PT0gJ2xvZycpIGxldmVsID0gJ2Vycm9yJztcblxuICAgICAgbWV0YSA9IHt9O1xuICAgIH1cblxuICAgIGlmICghaXNVbmRlZmluZWQobWV0YSkgJiYgIWlzT2JqZWN0KG1ldGEpKSBtZXRhID0geyBvcmlnaW5hbF9tZXRhOiBtZXRhIH07XG4gICAgZWxzZSBpZiAoIWlzT2JqZWN0KG1ldGEpKSBtZXRhID0ge307XG5cbiAgICBpZiAoaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgZXJyb3JzLnVuc2hpZnQobWVzc2FnZSk7XG4gICAgICBtZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vXG4gICAgLy8gcmV3cml0ZSBgbWV0YS5lcnJgIHRvIGBtZXRhLm9yaWdpbmFsX2VycmAgZm9yIGNvbnNpc3RlbmN5XG4gICAgLy8gKGluIGNhc2Ugc29tZW9uZSBoYXMgYW4gb2JqZWN0IHdpdGggYC5lcnJgIHByb3BlcnR5IG9uIGl0IHdpdGggYW4gZXJyb3IpXG4gICAgLy9cbiAgICBpZiAoaXNPYmplY3QobWV0YS5lcnIpKSB7XG4gICAgICBpZiAoaXNFcnJvcihtZXRhLmVycikpIGVycm9ycy5wdXNoKG1ldGEuZXJyKTtcbiAgICAgIG1ldGEub3JpZ2luYWxfZXJyID0gaXNFcnJvcihtZXRhLmVycikgPyBwYXJzZUVycihtZXRhLmVycikgOiBtZXRhLmVycjtcbiAgICB9XG5cbiAgICBsZXQgZXJyO1xuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZXJyID0gZXJyb3JzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgIFsuLi5uZXcgU2V0KGVycm9ycy5tYXAoKGUpID0+IGUubWVzc2FnZSkuZmlsdGVyKEJvb2xlYW4pKV0uam9pbignOyAnKVxuICAgICAgICApO1xuICAgICAgICBlcnIuc3RhY2sgPSBbXG4gICAgICAgICAgLi4ubmV3IFNldChlcnJvcnMubWFwKChlKSA9PiBlLnN0YWNrKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgICAgIF0uam9pbignXFxuXFxuJyk7XG4gICAgICAgIGVyci5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICB9XG5cbiAgICAgIG1ldGEuZXJyID0gcGFyc2VFcnIoZXJyKTtcbiAgICAgIGlmICghaXNTdHJpbmcobWVzc2FnZSkpIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIE5PVEU6IHRoaXMgd2FzIHJlbW92ZWQgaW4gdjEwLjIuMiBkdWUgdG8gY2lyY3VsYXIgcmVmZXJlbmNlIGlzc3Vlc1xuICAgIC8vICAgICAgICh0aGUgd29ya2Fyb3VuZCB3b3VsZCBpbnZvbHZlIHNhZmVTdHJpbmdpZnkgYW5kIHRoZW4gSlNPTi5wYXJzZSB3aGljaCB3b3VsZCBiZSBwZXJmIGJsb2F0KVxuICAgIC8vICAgICAgICh0aGVyZSBzdGlsbCBtaWdodCBiZSBhbm90aGVyIHdvcmthcm91bmQgb3IgcGVyaGFwcyB3ZSBkb24ndCBhZGQgYWxsIHRoZSBhcmdzIGhlcmUgZXhjZXB0IGFkZGl0aW9uYWwpXG4gICAgLy9cbiAgICAvLyBTZXQgYGFyZ3NgIHByb3Agd2l0aCBvcmlnaW5hbCBhcmd1bWVudHMgcGFzc2VkXG4gICAgLy8gbWV0YS5hcmdzID0gb3JpZ2luYWxBcmdzO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgbGV2ZWwgb24gbWV0YVxuICAgIG1ldGEubGV2ZWwgPSBsZXZlbDtcblxuICAgIC8vIEFkZCBgYXBwYCBvYmplY3QgdG8gbWV0YWRhdGFcbiAgICBpZiAodGhpcy5hcHBJbmZvKSBtZXRhLmFwcCA9IHRoaXMuYXBwSW5mbztcblxuICAgIC8vXG4gICAgLy8gZGV0ZXJtaW5lIGxvZyBtZXRob2QgdG8gdXNlXG4gICAgLy9cbiAgICAvLyBpZiB3ZSBkaWRuJ3QgcGFzcyBhIGxldmVsIGFzIGEgbWV0aG9kXG4gICAgLy8gKGUuZy4gY29uc29sZS5pbmZvKSwgdGhlbiB3ZSBzaG91bGQgc3RpbGxcbiAgICAvLyB1c2UgdGhlIGxvZ2dlcidzIGBsb2dgIG1ldGhvZCB0byBvdXRwdXRcbiAgICAvL1xuICAgIC8vIGFuZCBmYXRhbCBzaG91bGQgdXNlIGVycm9yIChlLmcuIGluIGJyb3dzZXIpXG4gICAgLy9cbiAgICBjb25zdCBtZXRob2QgPSBtb2RpZmllciA9PT0gLTEgPyAnbG9nJyA6IGxldmVsO1xuXG4gICAgLy8gcHJlLWhvb2tzXG4gICAgZm9yIChjb25zdCBob29rIG9mIHRoaXMuY29uZmlnLmhvb2tzLnByZSkge1xuICAgICAgW2VyciwgbWVzc2FnZSwgbWV0YV0gPSBob29rKG1ldGhvZCwgZXJyLCBtZXNzYWdlLCBtZXRhKTtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIE5PVEU6IHVzaW5nIGxvZGFzaCBfLm9taXQgYW5kIF8ucGljayB3b3VsZCBoYXZlIGJlZW4gX3Zlcnkgc2xvd19cbiAgICAvL1xuICAgIC8vIGNvbnN0IG9taXR0ZWRBbmRQaWNrZWRGaWVsZHMgPSB7XG4gICAgLy8gICAuLi5fLm9taXQobWV0YSwgdGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSxcbiAgICAvLyAgIC4uLl8ucGljayhtZXRhLCB0aGlzLmNvbmZpZy5tZXRhLnBpY2tlZEZpZWxkcylcbiAgICAvLyB9O1xuICAgIC8vXG4gICAgLy8gYWxzbyB3ZSBkb24ndCB3YW50IHRvIG11dGF0ZSBhbnl0aGluZyBpbiBgbWV0YWBcbiAgICAvLyBhbmQgaWRlYWxseSB3ZSBvbmx5IHdhbnQgdG8gcGljayBleGFjdGx5IHdoYXQgd2UgbmVlZFxuICAgIC8vIChhbmQgbm90IGhhdmUgdHdvIG9wZXJhdGlvbnMsIG9uZSBmb3Igb21pdCwgYW5kIG9uZSBmb3IgcGljaylcbiAgICAvL1xuXG4gICAgLy8gc2V0IGEgYm9vbGVhbiBmbGFnIGlmIHdlIGhhZCB0aGUgc2lsZW50IHN5bWJvbCBvciBub3RcbiAgICBjb25zdCBoYWRUcnVlU2lsZW50U3ltYm9sID0gYm9vbGVhbihtZXRhW3NpbGVudFN5bWJvbF0pO1xuXG4gICAgaWYgKCFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEucmVtYXBwZWRGaWVsZHMpKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXModGhpcy5jb25maWcubWV0YS5yZW1hcHBlZEZpZWxkcykpIHtcbiAgICAgICAgc2V0KG1ldGEsIHRoaXMuY29uZmlnLm1ldGEucmVtYXBwZWRGaWVsZHNba2V5XSwgZ2V0KG1ldGEsIGtleSkpO1xuICAgICAgICB1bnNldChtZXRhLCBrZXkpO1xuICAgICAgICAvLyBjbGVhbnVwIGVtcHR5IG9iamVjdHMgYWZ0ZXIgcmVtYXBwaW5nXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5tZXRhLmNsZWFudXBSZW1hcHBpbmcpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGtleS5sYXN0SW5kZXhPZignLicpO1xuICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IHBhcmVudEtleSA9IGtleS5zbGljZSgwLCBpbmRleCk7XG4gICAgICAgICAgaWYgKGlzRW1wdHkoZ2V0KG1ldGEsIHBhcmVudEtleSkpKSB1bnNldChtZXRhLCBwYXJlbnRLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSB8fFxuICAgICAgIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5waWNrZWRGaWVsZHMpXG4gICAgKSB7XG4gICAgICBjb25zdCBkb3RpZmllZCA9IGRvdGlmeVRvQXJyYXkobWV0YSk7XG4gICAgICAvLyBkb3RpZmllZCA9IFtcbiAgICAgIC8vICAgJ2Vyci5uYW1lJyxcbiAgICAgIC8vICAgJ2Vyci5tZXNzYWdlJyxcbiAgICAgIC8vICAgJ2Vyci5zdGFjaycsXG4gICAgICAvLyAgICdsZXZlbCcsXG4gICAgICAvLyAgICdhcHAubmFtZScsXG4gICAgICAvLyAgICdhcHAudmVyc2lvbicsXG4gICAgICAvLyAgICdhcHAubm9kZScsXG4gICAgICAvLyAgICdhcHAuaGFzaCcsXG4gICAgICAvLyAgIC8vIC4uLlxuICAgICAgLy8gXVxuXG4gICAgICBpZiAoIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSB7XG4gICAgICAgICAgLy8gPGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85ODgyMzQ5PlxuICAgICAgICAgIGxldCBpID0gZG90aWZpZWQubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZG90aWZpZWRbaV0gPT09IHByb3AgfHxcbiAgICAgICAgICAgICAgKCFpc1N5bWJvbChkb3RpZmllZFtpXSkgJiYgZG90aWZpZWRbaV0uaW5kZXhPZihgJHtwcm9wfS5gKSA9PT0gMClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZG90aWZpZWQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwaWNrZWRTeW1ib2xzID0gW107XG5cbiAgICAgIGlmICghaXNFbXB0eSh0aGlzLmNvbmZpZy5tZXRhLnBpY2tlZEZpZWxkcykpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMuY29uZmlnLm1ldGEucGlja2VkRmllbGRzKSB7XG4gICAgICAgICAgLy8gcmVzcG9uc2UuaGVhZGVycy5ib29wXG4gICAgICAgICAgLy8gcmVzcG9uc2UuaGVhZGVycy5iZWVwXG4gICAgICAgICAgLy8gcmVzcG9uc2UuYm9keVxuICAgICAgICAgIC8vIHJlc3BvbnNlLnRleHRcbiAgICAgICAgICAvLyByZXNwb25zZVxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBzcGxpdCBieSB0aGUgZmlyc3QgcGVyaW9kIGFuZCBvbWl0IGFueSBrZXlzIGZyb20gZG90aWZpZWQgc3RhcnRpbmcgd2l0aCBpdFxuICAgICAgICAgIGlmIChpc1N5bWJvbChwcm9wKSkge1xuICAgICAgICAgICAgaWYgKG1ldGFbcHJvcF0pIHBpY2tlZFN5bWJvbHMucHVzaChbcHJvcCwgbWV0YVtwcm9wXV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHByb3AuaW5kZXhPZignLicpO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvcC5zbGljZSgwLCBpbmRleCArIDEpO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICBsZXQgaSA9IGRvdGlmaWVkLmxlbmd0aDtcbiAgICAgICAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgICAgICAgIGlmIChkb3RpZmllZFtpXSA9PT0ga2V5LnNsaWNlKDAsIC0xKSkgZG90aWZpZWQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvdGlmaWVkW2ldLmluZGV4T2Yoa2V5KSA9PT0gMCkgZG90aWZpZWQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZmluYWxseSBhZGQgaXQgaWYgaXQgZGlkIG5vdCBhbHJlYWR5IGV4aXN0XG4gICAgICAgICAgaWYgKGRvdGlmaWVkLmluZGV4T2YocHJvcCkgPT09IC0xKSBkb3RpZmllZC5wdXNoKHByb3ApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vXG4gICAgICAvLyBpdGVyYXRlIG92ZXIgYWxsIGRvdGlmaWVkIHZhbHVlcyB0byBjaGVjayBmb3Igc3ltYm9sc1xuICAgICAgLy9cbiAgICAgIC8vIE5PVEU6IHRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGV5IGNvdWxkIGFscmVhZHkgYmUgaW4gYHBpY2tlZFN5bWJvbHNgXG4gICAgICAvLyAgICAgICAoYW5kIGl0IGRvZXNuJ3QgYWxzbyBkbyBiaWdpbnRzIHlldClcbiAgICAgIC8vXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgZG90aWZpZWQpIHtcbiAgICAgICAgaWYgKGlzU3ltYm9sKHByb3ApKSB7XG4gICAgICAgICAgaWYgKG1ldGFbcHJvcF0gIT09IHVuZGVmaW5lZCkgcGlja2VkU3ltYm9scy5wdXNoKFtwcm9wLCBtZXRhW3Byb3BdXSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWV0YVtTeW1ib2wuZm9yKHByb3ApXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGlja2VkU3ltYm9scy5wdXNoKFtTeW1ib2wuZm9yKHByb3ApLCBtZXRhW1N5bWJvbC5mb3IocHJvcCldXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy9cbiAgICAgIC8vIG5vdyB3ZSBjYWxsIHBpY2stZGVlcCB1c2luZyB0aGUgZmluYWwgYXJyYXlcbiAgICAgIC8vXG4gICAgICAvLyBOT1RFOiB0aGlzIGRvZXMgbm90IHBpY2sgc3ltYm9scywgYmlnaW50cywgbm9yIHN0cmVhbXNcbiAgICAgIC8vICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vc3RyaWtlZW50Y28vcGljay1kZWVwL2lzc3Vlcy8yPlxuICAgICAgLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zdHJpa2VlbnRjby9waWNrLWRlZXAvaXNzdWVzLzI+XG4gICAgICAvL1xuICAgICAgLy8gTk9URTogdGhpcyBpcyB3cmFwcGVkIGluIHRyeS9jYXRjaCBpbiBjYXNlIHNpbWlsYXIgZXJyb3JzIG9jY3VyXG4gICAgICAvLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3N0cmlwZS9zdHJpcGUtbm9kZS9pc3N1ZXMvMTc5Nj5cbiAgICAgIC8vXG4gICAgICB0cnkge1xuICAgICAgICBtZXRhID0gcGlja0RlZXAobWV0YSwgZG90aWZpZWQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgfVxuXG4gICAgICAvL1xuICAgICAgLy8gaWYgdGhlcmUgd2VyZSBhbnkgdG9wLWxldmVsIHN5bWJvbHMgdG8gYmVcbiAgICAgIC8vIHBpY2tlZCB0aGVuIHdlIG5lZWQgdG8gYWRkIHRoZW0gYmFjayBoZXJlIHRvIHRoZSBsaXN0XG4gICAgICAvL1xuICAgICAgLy8gTk9URTogd2UnZCBwcm9iYWJseSB3YW50IHRvIGRvIHRoZSBzYW1lIGZvciBiaWdpbnRzIGFzIHN5bWJvbHNcbiAgICAgIC8vXG4gICAgICBpZiAocGlja2VkU3ltYm9scy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHBpY2tlZFN5bWJvbHMpIHtcbiAgICAgICAgICBtZXRhW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9ubHkgaW52b2tlIGxvZ2dlciBtZXRob2RzIGlmIGl0IHdhcyBub3Qgc2lsZW50XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zaWxlbnQgJiYgIWhhZFRydWVTaWxlbnRTeW1ib2wpIHtcbiAgICAgIC8vIFNob3cgc3RhY2sgdHJhY2UgaWYgbmVjZXNzYXJ5IChhbG9uZyB3aXRoIGFueSBtZXRhZGF0YSlcbiAgICAgIGlmIChpc0Vycm9yKGVycikgJiYgdGhpcy5jb25maWcuc2hvd1N0YWNrKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcubWV0YS5zaG93IHx8IGlzRW1wdHkobWV0YSkpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXSguLi4oaGFzTWVzc2FnZSA/IFttZXNzYWdlLCBlcnJdIDogW2Vycl0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB0aGlzLmNvbmZpZy5tZXRhLmhpZGVNZXRhICYmXG4gICAgICAgICAgbWV0YVt0aGlzLmNvbmZpZy5tZXRhLmhpZGVNZXRhXVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXSguLi4oaGFzTWVzc2FnZSA/IFttZXNzYWdlLCBlcnJdIDogW2Vycl0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXShcbiAgICAgICAgICAgIC4uLihoYXNNZXNzYWdlID8gW21lc3NhZ2UsIGVyciwgbWV0YV0gOiBbZXJyLCBtZXRhXSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbmZpZy5tZXRhLnNob3cgfHwgaXNFbXB0eShtZXRhKSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXShtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICh0aGlzLmNvbmZpZy5tZXRhLmhpZGVNZXRhICYmIG1ldGFbdGhpcy5jb25maWcubWV0YS5oaWRlTWV0YV0pIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5tZXRhLmhpZGVIVFRQICYmIG1ldGFbdGhpcy5jb25maWcubWV0YS5oaWRlSFRUUF0pXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0obWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXShtZXNzYWdlLCBtZXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwb3N0LWhvb2tzXG4gICAgaWYgKHRoaXMuY29uZmlnLmhvb2tzLnBvc3QubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHsgbWV0aG9kLCBlcnIsIG1lc3NhZ2UsIG1ldGEgfTtcbiAgICByZXR1cm4gcE1hcFNlcmllcyh0aGlzLmNvbmZpZy5ob29rcy5wb3N0LCAoaG9vaykgPT5cbiAgICAgIGhvb2sobWV0aG9kLCBlcnIsIG1lc3NhZ2UsIG1ldGEpXG4gICAgKVxuICAgICAgLnRoZW4oKVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyLmVycm9yKGVycik7XG4gICAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEF4ZTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBQSxPQUFPLENBQUMsa0JBQWtCLENBQUM7O0FBRTNCO0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3hCLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLG9CQUFvQixDQUFDO0FBQzVDLE1BQU1HLGdCQUFnQixHQUFHSCxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDckQsTUFBTUksR0FBRyxHQUFHSixPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDdkMsTUFBTUssT0FBTyxHQUFHTCxPQUFPLENBQUMsU0FBUyxDQUFDO0FBQ2xDLE1BQU1NLFFBQVEsR0FBR04sT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNyQyxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDckMsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsZUFBZSxDQUFDO0FBQzdDLE1BQU1TLFVBQVUsR0FBR1QsT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUMxQyxNQUFNVSxZQUFZLEdBQUdWLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM5QyxNQUFNVyxRQUFRLEdBQUdYLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDckMsTUFBTVksUUFBUSxHQUFHWixPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3JDLE1BQU1hLEdBQUcsR0FBR2IsT0FBTyxDQUFDLGtCQUFrQixDQUFDO0FBQ3ZDLE1BQU1jLEtBQUssR0FBR2QsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUNwQyxNQUFNO0VBQUVlO0FBQVEsQ0FBQyxHQUFHZixPQUFPLENBQUMsU0FBUyxDQUFDO0FBQ3RDLE1BQU1nQixHQUFHLEdBQUdoQixPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFFdEMsTUFBTWlCLFlBQVksR0FBR0MsTUFBTSxDQUFDQyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBQzdDLE1BQU1DLGlCQUFpQixHQUFHLElBQUlDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxNQUFNQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztBQUNuRSxNQUFNQyxPQUFPLEdBQUc7RUFBRUMsT0FBTyxFQUFFLE1BQU07RUFBRUMsR0FBRyxFQUFFO0FBQVEsQ0FBQztBQUNqRCxNQUFNQyxVQUFVLEdBQUcsK0JBQStCSixNQUFNLENBQUNLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNyRSxNQUFNQyxJQUFJLEdBQ1JDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssYUFBYSxHQUNsQyxLQUFLLEdBQ0xGLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDRSxRQUFRLElBQUkvQixFQUFFLENBQUNnQyxRQUFRLENBQUMsQ0FBQzs7QUFFM0M7QUFDQSxTQUFTQyxhQUFhQSxDQUFDQyxLQUFLLEVBQUU7RUFDNUIsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxJQUFJQSxLQUFLLEtBQUssSUFBSSxFQUFFO0lBQy9DLE9BQU8sS0FBSztFQUNkO0VBRUEsTUFBTUMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLGNBQWMsQ0FBQ0gsS0FBSyxDQUFDO0VBQzlDLE9BQ0UsQ0FBQ0MsU0FBUyxLQUFLLElBQUksSUFDakJBLFNBQVMsS0FBS0MsTUFBTSxDQUFDRCxTQUFTLElBQzlCQyxNQUFNLENBQUNDLGNBQWMsQ0FBQ0YsU0FBUyxDQUFDLEtBQUssSUFBSSxLQUMzQyxFQUFFbEIsTUFBTSxDQUFDcUIsV0FBVyxJQUFJSixLQUFLLENBQUMsSUFDOUIsRUFBRWpCLE1BQU0sQ0FBQ3NCLFFBQVEsSUFBSUwsS0FBSyxDQUFDLElBQzNCLENBQUM3QixRQUFRLENBQUM2QixLQUFLLENBQUM7QUFFcEI7O0FBRUE7QUFDQSxTQUFTTSxhQUFhQSxDQUFDQyxHQUFHLEVBQUU7RUFDMUIsTUFBTUMsR0FBRyxHQUFHLEVBQUU7RUFDZCxTQUFTQyxPQUFPQSxDQUFDRixHQUFHLEVBQUVHLE9BQU8sRUFBRTtJQUM3QjtJQUNBLElBQ0V0QyxRQUFRLENBQUNtQyxHQUFHLENBQUMsSUFDWkEsR0FBRyxDQUFDSSxXQUFXLElBQUlKLEdBQUcsQ0FBQ0ksV0FBVyxDQUFDbEIsSUFBSSxLQUFLLFlBQWEsSUFDMURtQixLQUFLLENBQUNDLE9BQU8sQ0FBQ04sR0FBRyxDQUFDLEVBRWxCO0lBRUYsS0FBSyxNQUFNTyxHQUFHLElBQUlDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDVCxHQUFHLENBQUMsRUFBRTtNQUN0QyxNQUFNUCxLQUFLLEdBQUdPLEdBQUcsQ0FBQ08sR0FBRyxDQUFDO01BQ3RCLE1BQU1HLFlBQVksR0FBRzlDLFFBQVEsQ0FBQzJDLEdBQUcsQ0FBQyxHQUM5Qi9CLE1BQU0sQ0FBQ21DLE1BQU0sQ0FBQ0osR0FBRyxDQUFDLElBQUlBLEdBQUcsQ0FBQ0ssV0FBVyxHQUNyQ0wsR0FBRztNQUNQLE1BQU1NLE1BQU0sR0FBR1YsT0FBTyxHQUFHQSxPQUFPLEdBQUcsR0FBRyxHQUFHTyxZQUFZLEdBQUdBLFlBQVksQ0FBQyxDQUFDO01BQ3RFO01BQ0EsSUFBSWxCLGFBQWEsQ0FBQ0MsS0FBSyxDQUFDLElBQUlRLEdBQUcsQ0FBQ2EsT0FBTyxDQUFDSixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUM1RFQsR0FBRyxDQUFDYyxJQUFJLENBQUNMLFlBQVksQ0FBQztRQUN0QlIsT0FBTyxDQUFDVCxLQUFLLEVBQUVvQixNQUFNLENBQUMsQ0FBQyxDQUFDO01BQzFCLENBQUMsTUFBTSxJQUFJWixHQUFHLENBQUNhLE9BQU8sQ0FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDckNaLEdBQUcsQ0FBQ2MsSUFBSSxDQUFDRixNQUFNLENBQUM7TUFDbEI7SUFDRjtFQUNGO0VBRUFYLE9BQU8sQ0FBQ0YsR0FBRyxDQUFDO0VBQ1osT0FBT0MsR0FBRztBQUNaOztBQUVBO0FBQ0EsU0FBU2UsT0FBT0EsQ0FBQ3ZCLEtBQUssRUFBRTtFQUN0QixPQUNFQSxLQUFLLEtBQUt3QixTQUFTLElBQ25CeEIsS0FBSyxLQUFLLElBQUksSUFDYixPQUFPQSxLQUFLLEtBQUssUUFBUSxJQUFJZSxPQUFPLENBQUNDLE9BQU8sQ0FBQ2hCLEtBQUssQ0FBQyxDQUFDeUIsTUFBTSxLQUFLLENBQUUsSUFDakUsT0FBT3pCLEtBQUssS0FBSyxRQUFRLElBQUlBLEtBQUssQ0FBQzBCLElBQUksQ0FBQyxDQUFDLENBQUNELE1BQU0sS0FBSyxDQUFFO0FBRTVEO0FBRUEsU0FBU0UsTUFBTUEsQ0FBQzNCLEtBQUssRUFBRTtFQUNyQixPQUFPQSxLQUFLLEtBQUssSUFBSTtBQUN2QjtBQUVBLFNBQVM0QixXQUFXQSxDQUFDNUIsS0FBSyxFQUFFO0VBQzFCLE9BQU9BLEtBQUssS0FBS3dCLFNBQVM7QUFDNUI7QUFFQSxTQUFTSyxRQUFRQSxDQUFDN0IsS0FBSyxFQUFFO0VBQ3ZCLE9BQU8sT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSUEsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDWSxLQUFLLENBQUNDLE9BQU8sQ0FBQ2IsS0FBSyxDQUFDO0FBQzdFO0FBRUEsU0FBUzhCLFFBQVFBLENBQUM5QixLQUFLLEVBQUU7RUFDdkIsT0FBTyxPQUFPQSxLQUFLLEtBQUssUUFBUTtBQUNsQztBQUVBLFNBQVMrQixVQUFVQSxDQUFDL0IsS0FBSyxFQUFFO0VBQ3pCLE9BQU8sT0FBT0EsS0FBSyxLQUFLLFVBQVU7QUFDcEM7QUFFQSxTQUFTZ0MsV0FBV0EsQ0FBQ2hDLEtBQUssRUFBRTtFQUMxQixPQUFPK0IsVUFBVSxDQUFDL0IsS0FBSyxDQUFDLEdBQUdBLEtBQUssR0FBRyxJQUFJO0FBQ3pDO0FBRUEsTUFBTWlDLEdBQUcsQ0FBQztFQUNSO0VBQ0F0QixXQUFXQSxDQUFDdUIsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3ZCLE1BQU1DLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDekIsSUFBSXpDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDeUMsd0JBQXdCLEVBQUU7TUFDeEMsTUFBTUMsTUFBTSxHQUFHM0MsT0FBTyxDQUFDQyxHQUFHLENBQUN5Qyx3QkFBd0I7TUFDbkQsTUFBTUUsR0FBRyxHQUFHRCxNQUFNLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQ3RELEtBQUssTUFBTSxDQUFDRyxJQUFJLEVBQUUxQyxLQUFLLENBQUMsSUFBSXNDLEdBQUcsRUFBRTtRQUMvQkgsY0FBYyxDQUFDTyxJQUFJLENBQUMsR0FBRzFDLEtBQUs7TUFDOUI7SUFDRjs7SUFFQTtJQUNBLElBQUkyQyxhQUFhLEdBQUdqRCxPQUFPLENBQUNDLEdBQUcsQ0FBQ2lELG9CQUFvQjtJQUNwRCxJQUFJLE9BQU9ELGFBQWEsS0FBSyxRQUFRLEVBQ25DQSxhQUFhLEdBQUdBLGFBQWEsQ0FBQ0osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxHQUFHLENBQUVLLENBQUMsSUFBS0EsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUNkLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOEIsYUFBYSxDQUFDLEVBQUVBLGFBQWEsR0FBRyxFQUFFO0lBRXJELElBQUlHLFlBQVksR0FBR3BELE9BQU8sQ0FBQ0MsR0FBRyxDQUFDb0Qsb0JBQW9CO0lBQ25ELElBQUksT0FBT0QsWUFBWSxLQUFLLFFBQVEsRUFDbENBLFlBQVksR0FBR0EsWUFBWSxDQUFDUCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNDLEdBQUcsQ0FBRUssQ0FBQyxJQUFLQSxDQUFDLENBQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQ2QsS0FBSyxDQUFDQyxPQUFPLENBQUNpQyxZQUFZLENBQUMsRUFBRUEsWUFBWSxHQUFHLEVBQUU7SUFFbkQsSUFBSSxDQUFDWixNQUFNLEdBQUc3RCxZQUFZLENBQ3hCO01BQ0UyRSxTQUFTLEVBQUV0RCxPQUFPLENBQUNDLEdBQUcsQ0FBQ3NELGNBQWMsR0FDakNyRSxPQUFPLENBQUNjLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDc0QsY0FBYyxDQUFDLEdBQ25DLElBQUk7TUFDUkMsSUFBSSxFQUFFaEQsTUFBTSxDQUFDaUQsTUFBTSxDQUNqQjtRQUNFQyxJQUFJLEVBQUUxRCxPQUFPLENBQUNDLEdBQUcsQ0FBQzBELGFBQWEsR0FDM0J6RSxPQUFPLENBQUNjLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDMEQsYUFBYSxDQUFDLEdBQ2xDLElBQUk7UUFDUmxCLGNBQWM7UUFDZFEsYUFBYTtRQUNiRyxZQUFZO1FBQ1pRLGdCQUFnQixFQUFFLElBQUk7UUFDdEJDLFFBQVEsRUFBRSxTQUFTO1FBQ25CO1FBQ0E7UUFDQUMsUUFBUSxFQUFFO01BQ1osQ0FBQyxFQUNELE9BQU90QixNQUFNLENBQUNnQixJQUFJLEtBQUssUUFBUSxHQUFHaEIsTUFBTSxDQUFDZ0IsSUFBSSxHQUFHLENBQUMsQ0FDbkQsQ0FBQztNQUNETyxPQUFPLEVBQUU1RSxHQUFHLENBQUM0RSxPQUFPO01BQ3BCQyxNQUFNLEVBQUUsS0FBSztNQUNiQyxNQUFNLEVBQUVDLE9BQU87TUFDZm5FLElBQUk7TUFDSm9FLEtBQUssRUFBRSxNQUFNO01BQ2IxRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7TUFDMUMyRSxPQUFPLEVBQUVwRSxPQUFPLENBQUNDLEdBQUcsQ0FBQ29FLFlBQVksR0FDN0JuRixPQUFPLENBQUNjLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDb0UsWUFBWSxDQUFDLEdBQ2pDLElBQUk7TUFDUkMsS0FBSyxFQUFFOUQsTUFBTSxDQUFDaUQsTUFBTSxDQUNsQjtRQUNFYyxHQUFHLEVBQUUsRUFBRTtRQUNQQyxJQUFJLEVBQUU7TUFDUixDQUFDLEVBQ0QsT0FBT2hDLE1BQU0sQ0FBQzhCLEtBQUssS0FBSyxRQUFRLEdBQUc5QixNQUFNLENBQUM4QixLQUFLLEdBQUcsQ0FBQyxDQUNyRDtJQUNGLENBQUMsRUFDRDlCLE1BQ0YsQ0FBQztJQUVELElBQUksQ0FBQzRCLE9BQU8sR0FBRyxJQUFJLENBQUM1QixNQUFNLENBQUM0QixPQUFPLEdBQzlCL0IsVUFBVSxDQUFDeEQsWUFBWSxDQUFDLEdBQ3RCQSxZQUFZLENBQUMsQ0FBQyxHQUNkLEtBQUssR0FDUCxLQUFLO0lBRVQsSUFBSSxDQUFDNEYsR0FBRyxHQUFHLElBQUksQ0FBQ0EsR0FBRyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDOztJQUU5QjtJQUNBLE1BQU1DLE9BQU8sR0FBR25FLE1BQU0sQ0FBQ29FLElBQUksQ0FBQyxJQUFJLENBQUNwQyxNQUFNLENBQUN5QixNQUFNLENBQUMsQ0FBQ1ksTUFBTSxDQUNuRHpELEdBQUcsSUFBSyxDQUFDN0IsaUJBQWlCLENBQUN1RixHQUFHLENBQUMxRCxHQUFHLENBQ3JDLENBQUM7SUFDRCxLQUFLLE1BQU0yRCxPQUFPLElBQUlKLE9BQU8sRUFBRTtNQUM3QixJQUFJLENBQUNJLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQ3ZDLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ2MsT0FBTyxDQUFDO0lBQzdDOztJQUVBO0lBQ0EsS0FBSyxNQUFNQSxPQUFPLElBQUl0RixNQUFNLEVBQUU7TUFDNUI7TUFDQSxJQUFJc0YsT0FBTyxLQUFLLE9BQU8sRUFBRTtRQUN2QixJQUFJLENBQUN2QyxNQUFNLENBQUN5QixNQUFNLENBQUNlLEtBQUssR0FDdEIxQyxXQUFXLENBQUMsSUFBSSxDQUFDRSxNQUFNLENBQUN5QixNQUFNLENBQUNjLE9BQU8sQ0FBQyxDQUFDLElBQ3hDekMsV0FBVyxDQUFDLElBQUksQ0FBQ0UsTUFBTSxDQUFDeUIsTUFBTSxDQUFDZ0IsS0FBSyxDQUFDLElBQ3JDM0MsV0FBVyxDQUFDLElBQUksQ0FBQ0UsTUFBTSxDQUFDeUIsTUFBTSxDQUFDaUIsSUFBSSxDQUFDLElBQ3BDNUMsV0FBVyxDQUFDLElBQUksQ0FBQ0UsTUFBTSxDQUFDeUIsTUFBTSxDQUFDUSxHQUFHLENBQUM7TUFDdkMsQ0FBQyxNQUFNO1FBQ0wsSUFBSSxDQUFDakMsTUFBTSxDQUFDeUIsTUFBTSxDQUFDYyxPQUFPLENBQUMsR0FDekJ6QyxXQUFXLENBQUMsSUFBSSxDQUFDRSxNQUFNLENBQUN5QixNQUFNLENBQUNjLE9BQU8sQ0FBQyxDQUFDLElBQ3hDekMsV0FBVyxDQUFDLElBQUksQ0FBQ0UsTUFBTSxDQUFDeUIsTUFBTSxDQUFDaUIsSUFBSSxDQUFDLElBQ3BDNUMsV0FBVyxDQUFDLElBQUksQ0FBQ0UsTUFBTSxDQUFDeUIsTUFBTSxDQUFDUSxHQUFHLENBQUM7TUFDdkM7TUFFQSxJQUFJLENBQUNwQyxVQUFVLENBQUMsSUFBSSxDQUFDRyxNQUFNLENBQUN5QixNQUFNLENBQUNjLE9BQU8sQ0FBQyxDQUFDLEVBQUU7UUFDNUMsTUFBTSxJQUFJSSxLQUFLLENBQUMsS0FBS0osT0FBTyxzQ0FBc0MsQ0FBQztNQUNyRTs7TUFFQTtNQUNBLElBQUksQ0FBQ0EsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHSyxJQUFJLEtBQ3RCLElBQUksQ0FBQ1gsR0FBRyxDQUFDTSxPQUFPLEVBQUUsR0FBRzdELEtBQUssQ0FBQ1gsU0FBUyxDQUFDOEUsS0FBSyxDQUFDQyxJQUFJLENBQUNGLElBQUksQ0FBQyxDQUFDO0lBQzFEO0lBRUEsSUFBSSxDQUFDRyxRQUFRLEdBQUcsSUFBSSxDQUFDQSxRQUFRLENBQUNiLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDeEMsSUFBSSxDQUFDYyxrQkFBa0IsR0FBRyxJQUFJLENBQUNBLGtCQUFrQixDQUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzVELElBQUksQ0FBQ2UsT0FBTyxHQUFHLElBQUksQ0FBQ0EsT0FBTyxDQUFDZixJQUFJLENBQUMsSUFBSSxDQUFDOztJQUV0QztJQUNBLElBQUksSUFBSSxDQUFDbEMsTUFBTSxDQUFDekMsSUFBSSxFQUFFLElBQUksQ0FBQzBGLE9BQU8sQ0FBQyxJQUFJLENBQUNqRCxNQUFNLENBQUN6QyxJQUFJLENBQUM7O0lBRXBEO0lBQ0EsSUFBSSxDQUFDd0YsUUFBUSxDQUFDLElBQUksQ0FBQy9DLE1BQU0sQ0FBQzJCLEtBQUssQ0FBQzs7SUFFaEM7SUFDQSxJQUFJLENBQUN2RSxHQUFHLEdBQUcsSUFBSSxDQUFDcUYsS0FBSztJQUNyQixJQUFJLENBQUN0RixPQUFPLEdBQUcsSUFBSSxDQUFDK0YsSUFBSTs7SUFFeEI7SUFDQSxJQUFJLENBQUNuQixHQUFHLEdBQUcsVUFBVUosS0FBSyxFQUFFd0IsRUFBRSxFQUFFO01BQzlCLElBQUksQ0FBQ25ELE1BQU0sQ0FBQzhCLEtBQUssQ0FBQ0MsR0FBRyxDQUFDM0MsSUFBSSxDQUFDLFVBQVVnRSxNQUFNLEVBQUUsR0FBR1IsSUFBSSxFQUFFO1FBQ3BELElBQUlqQixLQUFLLEtBQUt5QixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUdSLElBQUksQ0FBQztRQUN0QyxPQUFPTyxFQUFFLENBQUMsR0FBR1AsSUFBSSxDQUFDO01BQ3BCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUNaLElBQUksR0FBRyxVQUFVTCxLQUFLLEVBQUV3QixFQUFFLEVBQUU7TUFDL0IsSUFBSSxDQUFDbkQsTUFBTSxDQUFDOEIsS0FBSyxDQUFDRSxJQUFJLENBQUM1QyxJQUFJLENBQUMsVUFBVWdFLE1BQU0sRUFBRSxHQUFHUixJQUFJLEVBQUU7UUFDckQsSUFBSWpCLEtBQUssS0FBS3lCLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBR1IsSUFBSSxDQUFDO1FBQ3RDLE9BQU9PLEVBQUUsQ0FBQyxHQUFHUCxJQUFJLENBQUM7TUFDcEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNIO0VBRUFHLFFBQVFBLENBQUNwQixLQUFLLEVBQUU7SUFDZCxJQUFJLENBQUMvQixRQUFRLENBQUMrQixLQUFLLENBQUMsSUFBSTFFLE1BQU0sQ0FBQ2tDLE9BQU8sQ0FBQ3dDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNsRCxNQUFNLElBQUlnQixLQUFLLENBQUN0RixVQUFVLENBQUM7SUFDN0I7SUFDQSxJQUFJdUMsUUFBUSxDQUFDLElBQUksQ0FBQ0ksTUFBTSxDQUFDeUIsTUFBTSxDQUFDNEIsUUFBUSxDQUFDLEVBQ3ZDLElBQUksQ0FBQ3JELE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQzRCLFFBQVEsR0FBRzFCLEtBQUssQ0FBQyxLQUNqQyxJQUFJLENBQUMzQixNQUFNLENBQUN5QixNQUFNLENBQUNFLEtBQUssR0FBR0EsS0FBSztJQUNyQztJQUNBO0lBQ0EsSUFBSSxDQUFDM0IsTUFBTSxDQUFDL0MsTUFBTSxHQUFHQSxNQUFNLENBQUM0RixLQUFLLENBQUM1RixNQUFNLENBQUNrQyxPQUFPLENBQUN3QyxLQUFLLENBQUMsQ0FBQztFQUMxRDtFQUVBcUIsa0JBQWtCQSxDQUFDckIsS0FBSyxFQUFFO0lBQ3hCLElBQUksQ0FBQy9CLFFBQVEsQ0FBQytCLEtBQUssQ0FBQyxFQUFFLE9BQU8sTUFBTTtJQUNuQyxJQUFJL0IsUUFBUSxDQUFDMUMsT0FBTyxDQUFDeUUsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPekUsT0FBTyxDQUFDeUUsS0FBSyxDQUFDO0lBQ25ELElBQUkxRSxNQUFNLENBQUNrQyxPQUFPLENBQUN3QyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLE1BQU07SUFDL0MsT0FBT0EsS0FBSztFQUNkO0VBRUFzQixPQUFPQSxDQUFDMUYsSUFBSSxFQUFFO0lBQ1osSUFBSSxDQUFDcUMsUUFBUSxDQUFDckMsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJb0YsS0FBSyxDQUFDLHlCQUF5QixDQUFDO0lBQy9EO0lBQ0EsSUFBSS9DLFFBQVEsQ0FBQyxJQUFJLENBQUNJLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQzZCLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQ3RELE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQzZCLEtBQUssR0FBRy9GLElBQUksQ0FBQyxLQUNuRSxJQUFJLENBQUN5QyxNQUFNLENBQUN5QixNQUFNLENBQUNsRSxJQUFJLEdBQUdBLElBQUk7RUFDckM7O0VBRUE7RUFDQTBFLEdBQUdBLENBQUNOLEtBQUssRUFBRTRCLE9BQU8sRUFBRXZDLElBQUksRUFBRSxHQUFHNEIsSUFBSSxFQUFFO0lBQ2pDLE1BQU1ZLFlBQVksR0FBRyxFQUFFO0lBQ3ZCLE1BQU1DLE1BQU0sR0FBRyxFQUFFO0lBQ2pCLElBQUlDLFVBQVUsR0FBRyxLQUFLO0lBQ3RCLElBQUlDLFFBQVEsR0FBRyxJQUFJO0lBRW5CLElBQUksQ0FBQ2pFLFdBQVcsQ0FBQ2lDLEtBQUssQ0FBQyxFQUFFNkIsWUFBWSxDQUFDcEUsSUFBSSxDQUFDdUMsS0FBSyxDQUFDO0lBQ2pELElBQUksQ0FBQ2pDLFdBQVcsQ0FBQzZELE9BQU8sQ0FBQyxFQUFFQyxZQUFZLENBQUNwRSxJQUFJLENBQUNtRSxPQUFPLENBQUM7SUFDckQsSUFBSSxDQUFDN0QsV0FBVyxDQUFDc0IsSUFBSSxDQUFDLEVBQUV3QyxZQUFZLENBQUNwRSxJQUFJLENBQUM0QixJQUFJLENBQUM7SUFDL0MsS0FBSyxNQUFNNEMsR0FBRyxJQUFJbEYsS0FBSyxDQUFDWCxTQUFTLENBQUM4RSxLQUFLLENBQUNDLElBQUksQ0FBQ0YsSUFBSSxDQUFDLEVBQUU7TUFDbERZLFlBQVksQ0FBQ3BFLElBQUksQ0FBQ3dFLEdBQUcsQ0FBQztJQUN4QjtJQUVBLElBQUlDLFFBQVEsR0FBRyxDQUFDO0lBRWhCLElBQUlqRSxRQUFRLENBQUMrQixLQUFLLENBQUMsSUFBSS9CLFFBQVEsQ0FBQzFDLE9BQU8sQ0FBQ3lFLEtBQUssQ0FBQyxDQUFDLEVBQUU7TUFDL0NBLEtBQUssR0FBR3pFLE9BQU8sQ0FBQ3lFLEtBQUssQ0FBQztJQUN4QixDQUFDLE1BQU0sSUFBSTNGLE9BQU8sQ0FBQzJGLEtBQUssQ0FBQyxFQUFFO01BQ3pCZ0MsUUFBUSxHQUFHLEtBQUs7TUFDaEIzQyxJQUFJLEdBQUd1QyxPQUFPO01BQ2RBLE9BQU8sR0FBRzVCLEtBQUs7TUFDZkEsS0FBSyxHQUFHLE9BQU87SUFDakIsQ0FBQyxNQUFNLElBQUksQ0FBQy9CLFFBQVEsQ0FBQytCLEtBQUssQ0FBQyxJQUFJMUUsTUFBTSxDQUFDa0MsT0FBTyxDQUFDd0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7TUFDM0RnQyxRQUFRLEdBQUcsS0FBSztNQUNoQjNDLElBQUksR0FBR3VDLE9BQU87TUFDZEEsT0FBTyxHQUFHNUIsS0FBSztNQUNmQSxLQUFLLEdBQUcsSUFBSSxDQUFDcUIsa0JBQWtCLENBQUNyQixLQUFLLENBQUM7TUFDdENrQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2Y7O0lBRUE7SUFDQSxJQUFJLElBQUksQ0FBQzdELE1BQU0sQ0FBQy9DLE1BQU0sQ0FBQ2tDLE9BQU8sQ0FBQ3dDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFOztJQUU5QztJQUNBLElBQUltQyxRQUFRLEdBQUcsS0FBSztJQUNwQixJQUFJLENBQUNuRSxRQUFRLENBQUM0RCxPQUFPLENBQUMsSUFBSTdFLEtBQUssQ0FBQ0MsT0FBTyxDQUFDNEUsT0FBTyxDQUFDLEtBQUszRCxRQUFRLENBQUNvQixJQUFJLENBQUMsRUFBRTtNQUNuRThDLFFBQVEsR0FBRyxJQUFJO01BQ2YsTUFBTUMsS0FBSyxHQUFHL0MsSUFBSTtNQUNsQkEsSUFBSSxHQUFHdUMsT0FBTztNQUNkQSxPQUFPLEdBQ0wzRCxRQUFRLENBQUNtRSxLQUFLLENBQUMsSUFBSVAsWUFBWSxDQUFDakUsTUFBTSxJQUFJLENBQUMsR0FBR3NFLFFBQVEsR0FDbERoSSxNQUFNLENBQUMsR0FBRzJILFlBQVksQ0FBQ1gsS0FBSyxDQUFDLENBQUMsR0FBR2dCLFFBQVEsQ0FBQyxDQUFDLEdBQzNDRSxLQUFLO0lBQ2I7O0lBRUE7SUFDQSxJQUFJckUsV0FBVyxDQUFDNkQsT0FBTyxDQUFDLEVBQUVBLE9BQU8sR0FBRzVCLEtBQUs7O0lBRXpDO0lBQ0E7SUFDQSxJQUNFNkIsWUFBWSxDQUFDWCxLQUFLLENBQUMsQ0FBQyxHQUFHZ0IsUUFBUSxDQUFDLENBQUN0RSxNQUFNLEtBQUssQ0FBQyxJQUM3QyxDQUFDSyxRQUFRLENBQUMyRCxPQUFPLENBQUMsSUFDbEIsQ0FBQ3ZILE9BQU8sQ0FBQ3VILE9BQU8sQ0FBQyxFQUNqQjtNQUNBdkMsSUFBSSxHQUFHO1FBQUV1QztNQUFRLENBQUM7TUFDbEJBLE9BQU8sR0FBRzVCLEtBQUs7SUFDakIsQ0FBQyxNQUFNLElBQUksQ0FBQ21DLFFBQVEsSUFBSU4sWUFBWSxDQUFDakUsTUFBTSxJQUFJLENBQUMsR0FBR3NFLFFBQVEsRUFBRTtNQUMzRE4sT0FBTyxHQUFHakUsU0FBUztNQUNuQjBCLElBQUksR0FBRyxDQUFDLENBQUM7TUFDVCxNQUFNZ0QsUUFBUSxHQUFHLEVBQUU7TUFDbkIsS0FBSyxNQUFNSixHQUFHLElBQUlKLFlBQVksQ0FBQ1gsS0FBSyxDQUNsQ2MsUUFBUSxJQUFJRSxRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUNuQyxDQUFDLEVBQUU7UUFDRCxJQUFJN0gsT0FBTyxDQUFDNEgsR0FBRyxDQUFDLEVBQUVILE1BQU0sQ0FBQ3JFLElBQUksQ0FBQ3dFLEdBQUcsQ0FBQztRQUNsQztRQUFBLEtBQ0tJLFFBQVEsQ0FBQzVFLElBQUksQ0FBQ3dFLEdBQUcsQ0FBQztNQUN6QjtNQUVBLElBQUlJLFFBQVEsQ0FBQ3pFLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDdkJnRSxPQUFPLEdBQUcxSCxNQUFNLENBQUMsR0FBR21JLFFBQVEsQ0FBQztRQUM3Qk4sVUFBVSxHQUFHLElBQUk7TUFDbkI7TUFFQSxJQUFJRCxNQUFNLENBQUNsRSxNQUFNLEdBQUcsQ0FBQyxJQUFJb0MsS0FBSyxLQUFLLEtBQUssRUFBRUEsS0FBSyxHQUFHLE9BQU87SUFDM0QsQ0FBQyxNQUFNLElBQ0wsQ0FBQ21DLFFBQVEsSUFDVE4sWUFBWSxDQUFDakUsTUFBTSxLQUFLLENBQUMsR0FBR3NFLFFBQVEsSUFDcENqRSxRQUFRLENBQUMyRCxPQUFPLENBQUMsSUFDakIsRUFBRXZDLElBQUksSUFBSUEsSUFBSSxDQUFDaUQsT0FBTyxDQUFDLElBQ3ZCbkksZ0JBQWdCLENBQUNvSSxJQUFJLENBQUVDLENBQUMsSUFBS1osT0FBTyxDQUFDcEUsT0FBTyxDQUFDZ0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDdkQ7TUFDQTtNQUNBO01BQ0E7TUFDQVosT0FBTyxHQUFHMUgsTUFBTSxDQUFDMEgsT0FBTyxFQUFFdkMsSUFBSSxDQUFDO01BQy9CQSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxNQUFNLElBQUksQ0FBQ2hGLE9BQU8sQ0FBQ3VILE9BQU8sQ0FBQyxFQUFFO01BQzVCLElBQUl2SCxPQUFPLENBQUNnRixJQUFJLENBQUMsRUFBRTtRQUNqQnlDLE1BQU0sQ0FBQ3JFLElBQUksQ0FBQzRCLElBQUksQ0FBQztRQUNqQkEsSUFBSSxHQUFHLENBQUMsQ0FBQztNQUNYLENBQUMsTUFBTSxJQUFJLENBQUNyQixRQUFRLENBQUNxQixJQUFJLENBQUMsSUFBSSxDQUFDdEIsV0FBVyxDQUFDc0IsSUFBSSxDQUFDLElBQUksQ0FBQ3ZCLE1BQU0sQ0FBQ3VCLElBQUksQ0FBQyxFQUFFO1FBQ2pFO1FBQ0F1QyxPQUFPLEdBQUcxSCxNQUFNLENBQUMwSCxPQUFPLEVBQUV2QyxJQUFJLENBQUM7UUFDL0JBLElBQUksR0FBRyxDQUFDLENBQUM7TUFDWCxDQUFDLE1BQU0sSUFBSSxDQUFDcEIsUUFBUSxDQUFDMkQsT0FBTyxDQUFDLEVBQUU7UUFDN0I7UUFDQTtRQUNBO1FBQ0FBLE9BQU8sR0FBRzFILE1BQU0sQ0FBQzBILE9BQU8sQ0FBQztNQUMzQjtJQUNGLENBQUMsTUFBTSxJQUFJdkgsT0FBTyxDQUFDZ0YsSUFBSSxDQUFDLEVBQUU7TUFDeEJ5QyxNQUFNLENBQUNyRSxJQUFJLENBQUM0QixJQUFJLENBQUM7TUFDakI7TUFDQSxNQUFNZ0QsUUFBUSxHQUFHLEVBQUU7TUFDbkIsSUFBSWhJLE9BQU8sQ0FBQ3VILE9BQU8sQ0FBQyxFQUFFO1FBQ3BCRSxNQUFNLENBQUNXLE9BQU8sQ0FBQ2IsT0FBTyxDQUFDO1FBQ3ZCQSxPQUFPLEdBQUdqRSxTQUFTO01BQ3JCO01BRUEsS0FBSyxNQUFNc0UsR0FBRyxJQUFJSixZQUFZLENBQUNYLEtBQUssQ0FBQyxDQUFDLEdBQUdnQixRQUFRLENBQUMsRUFBRTtRQUNsRDtRQUNBLElBQUk3QyxJQUFJLEtBQUs0QyxHQUFHLEVBQUU7UUFDbEIsSUFBSTVILE9BQU8sQ0FBQzRILEdBQUcsQ0FBQyxFQUFFSCxNQUFNLENBQUNyRSxJQUFJLENBQUN3RSxHQUFHLENBQUMsQ0FBQyxLQUM5QkksUUFBUSxDQUFDNUUsSUFBSSxDQUFDd0UsR0FBRyxDQUFDO1FBRXZCLElBQUlJLFFBQVEsQ0FBQ3pFLE1BQU0sR0FBRyxDQUFDLEVBQUU7VUFDdkJnRSxPQUFPLEdBQUcxSCxNQUFNLENBQUMsR0FBR21JLFFBQVEsQ0FBQztVQUM3Qk4sVUFBVSxHQUFHLElBQUk7UUFDbkI7TUFDRjtNQUVBLElBQUkvQixLQUFLLEtBQUssS0FBSyxFQUFFQSxLQUFLLEdBQUcsT0FBTztNQUVwQ1gsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNYO0lBRUEsSUFBSSxDQUFDdEIsV0FBVyxDQUFDc0IsSUFBSSxDQUFDLElBQUksQ0FBQ3JCLFFBQVEsQ0FBQ3FCLElBQUksQ0FBQyxFQUFFQSxJQUFJLEdBQUc7TUFBRXFELGFBQWEsRUFBRXJEO0lBQUssQ0FBQyxDQUFDLEtBQ3JFLElBQUksQ0FBQ3JCLFFBQVEsQ0FBQ3FCLElBQUksQ0FBQyxFQUFFQSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLElBQUloRixPQUFPLENBQUN1SCxPQUFPLENBQUMsRUFBRTtNQUNwQkUsTUFBTSxDQUFDVyxPQUFPLENBQUNiLE9BQU8sQ0FBQztNQUN2QkEsT0FBTyxHQUFHakUsU0FBUztJQUNyQjs7SUFFQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUlLLFFBQVEsQ0FBQ3FCLElBQUksQ0FBQzVELEdBQUcsQ0FBQyxFQUFFO01BQ3RCLElBQUlwQixPQUFPLENBQUNnRixJQUFJLENBQUM1RCxHQUFHLENBQUMsRUFBRXFHLE1BQU0sQ0FBQ3JFLElBQUksQ0FBQzRCLElBQUksQ0FBQzVELEdBQUcsQ0FBQztNQUM1QzRELElBQUksQ0FBQ3NELFlBQVksR0FBR3RJLE9BQU8sQ0FBQ2dGLElBQUksQ0FBQzVELEdBQUcsQ0FBQyxHQUFHZCxRQUFRLENBQUMwRSxJQUFJLENBQUM1RCxHQUFHLENBQUMsR0FBRzRELElBQUksQ0FBQzVELEdBQUc7SUFDdkU7SUFFQSxJQUFJQSxHQUFHO0lBQ1AsSUFBSXFHLE1BQU0sQ0FBQ2xFLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDckIsSUFBSWtFLE1BQU0sQ0FBQ2xFLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdkJuQyxHQUFHLEdBQUdxRyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ2pCLENBQUMsTUFBTTtRQUNMckcsR0FBRyxHQUFHLElBQUl1RixLQUFLLENBQ2IsQ0FBQyxHQUFHLElBQUkzRixHQUFHLENBQUN5RyxNQUFNLENBQUNuRCxHQUFHLENBQUVpRSxDQUFDLElBQUtBLENBQUMsQ0FBQ2hCLE9BQU8sQ0FBQyxDQUFDbEIsTUFBTSxDQUFDbUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDbEgsSUFBSSxDQUFDLElBQUksQ0FDdEUsQ0FBQztRQUNERixHQUFHLENBQUNxSCxLQUFLLEdBQUcsQ0FDVixHQUFHLElBQUl6SCxHQUFHLENBQUN5RyxNQUFNLENBQUNuRCxHQUFHLENBQUVpRSxDQUFDLElBQUtBLENBQUMsQ0FBQ0UsS0FBSyxDQUFDLENBQUNwQyxNQUFNLENBQUNtQyxPQUFPLENBQUMsQ0FBQyxDQUN2RCxDQUFDbEgsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNkRixHQUFHLENBQUNxRyxNQUFNLEdBQUdBLE1BQU07TUFDckI7TUFFQXpDLElBQUksQ0FBQzVELEdBQUcsR0FBR2QsUUFBUSxDQUFDYyxHQUFHLENBQUM7TUFDeEIsSUFBSSxDQUFDd0MsUUFBUSxDQUFDMkQsT0FBTyxDQUFDLEVBQUVBLE9BQU8sR0FBR25HLEdBQUcsQ0FBQ21HLE9BQU87SUFDL0M7O0lBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0lBRUE7SUFDQXZDLElBQUksQ0FBQ1csS0FBSyxHQUFHQSxLQUFLOztJQUVsQjtJQUNBLElBQUksSUFBSSxDQUFDQyxPQUFPLEVBQUVaLElBQUksQ0FBQzBELEdBQUcsR0FBRyxJQUFJLENBQUM5QyxPQUFPOztJQUV6QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxNQUFNK0MsTUFBTSxHQUFHZCxRQUFRLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHbEMsS0FBSzs7SUFFOUM7SUFDQSxLQUFLLE1BQU1pRCxJQUFJLElBQUksSUFBSSxDQUFDNUUsTUFBTSxDQUFDOEIsS0FBSyxDQUFDQyxHQUFHLEVBQUU7TUFDeEMsQ0FBQzNFLEdBQUcsRUFBRW1HLE9BQU8sRUFBRXZDLElBQUksQ0FBQyxHQUFHNEQsSUFBSSxDQUFDRCxNQUFNLEVBQUV2SCxHQUFHLEVBQUVtRyxPQUFPLEVBQUV2QyxJQUFJLENBQUM7SUFDekQ7O0lBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBOztJQUVBO0lBQ0EsTUFBTTZELG1CQUFtQixHQUFHbkksT0FBTyxDQUFDc0UsSUFBSSxDQUFDcEUsWUFBWSxDQUFDLENBQUM7SUFFdkQsSUFBSSxDQUFDeUMsT0FBTyxDQUFDLElBQUksQ0FBQ1csTUFBTSxDQUFDZ0IsSUFBSSxDQUFDZixjQUFjLENBQUMsRUFBRTtNQUM3QyxLQUFLLE1BQU1yQixHQUFHLElBQUlDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQ2tCLE1BQU0sQ0FBQ2dCLElBQUksQ0FBQ2YsY0FBYyxDQUFDLEVBQUU7UUFDbEV6RCxHQUFHLENBQUN3RSxJQUFJLEVBQUUsSUFBSSxDQUFDaEIsTUFBTSxDQUFDZ0IsSUFBSSxDQUFDZixjQUFjLENBQUNyQixHQUFHLENBQUMsRUFBRTdDLEdBQUcsQ0FBQ2lGLElBQUksRUFBRXBDLEdBQUcsQ0FBQyxDQUFDO1FBQy9EbkMsS0FBSyxDQUFDdUUsSUFBSSxFQUFFcEMsR0FBRyxDQUFDO1FBQ2hCO1FBQ0EsSUFBSSxJQUFJLENBQUNvQixNQUFNLENBQUNnQixJQUFJLENBQUNJLGdCQUFnQixFQUFFO1VBQ3JDLE1BQU0wRCxLQUFLLEdBQUdsRyxHQUFHLENBQUNtRyxXQUFXLENBQUMsR0FBRyxDQUFDO1VBQ2xDLElBQUlELEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtVQUNsQixNQUFNRSxTQUFTLEdBQUdwRyxHQUFHLENBQUNpRSxLQUFLLENBQUMsQ0FBQyxFQUFFaUMsS0FBSyxDQUFDO1VBQ3JDLElBQUl6RixPQUFPLENBQUN0RCxHQUFHLENBQUNpRixJQUFJLEVBQUVnRSxTQUFTLENBQUMsQ0FBQyxFQUFFdkksS0FBSyxDQUFDdUUsSUFBSSxFQUFFZ0UsU0FBUyxDQUFDO1FBQzNEO01BQ0Y7SUFDRjtJQUVBLElBQ0UsQ0FBQzNGLE9BQU8sQ0FBQyxJQUFJLENBQUNXLE1BQU0sQ0FBQ2dCLElBQUksQ0FBQ1AsYUFBYSxDQUFDLElBQ3hDLENBQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDVyxNQUFNLENBQUNnQixJQUFJLENBQUNKLFlBQVksQ0FBQyxFQUN2QztNQUNBLE1BQU1xRSxRQUFRLEdBQUc3RyxhQUFhLENBQUM0QyxJQUFJLENBQUM7TUFDcEM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTs7TUFFQSxJQUFJLENBQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDVyxNQUFNLENBQUNnQixJQUFJLENBQUNQLGFBQWEsQ0FBQyxFQUFFO1FBQzVDLEtBQUssTUFBTUQsSUFBSSxJQUFJLElBQUksQ0FBQ1IsTUFBTSxDQUFDZ0IsSUFBSSxDQUFDUCxhQUFhLEVBQUU7VUFDakQ7VUFDQSxJQUFJeUUsQ0FBQyxHQUFHRCxRQUFRLENBQUMxRixNQUFNO1VBQ3ZCLE9BQU8yRixDQUFDLEVBQUUsRUFBRTtZQUNWLElBQ0VELFFBQVEsQ0FBQ0MsQ0FBQyxDQUFDLEtBQUsxRSxJQUFJLElBQ25CLENBQUN2RSxRQUFRLENBQUNnSixRQUFRLENBQUNDLENBQUMsQ0FBQyxDQUFDLElBQUlELFFBQVEsQ0FBQ0MsQ0FBQyxDQUFDLENBQUMvRixPQUFPLENBQUMsR0FBR3FCLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBRSxFQUVqRXlFLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDRCxDQUFDLEVBQUUsQ0FBQyxDQUFDO1VBQ3pCO1FBQ0Y7TUFDRjtNQUVBLE1BQU1FLGFBQWEsR0FBRyxFQUFFO01BRXhCLElBQUksQ0FBQy9GLE9BQU8sQ0FBQyxJQUFJLENBQUNXLE1BQU0sQ0FBQ2dCLElBQUksQ0FBQ0osWUFBWSxDQUFDLEVBQUU7UUFDM0MsS0FBSyxNQUFNSixJQUFJLElBQUksSUFBSSxDQUFDUixNQUFNLENBQUNnQixJQUFJLENBQUNKLFlBQVksRUFBRTtVQUNoRDtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBLElBQUkzRSxRQUFRLENBQUN1RSxJQUFJLENBQUMsRUFBRTtZQUNsQixJQUFJUSxJQUFJLENBQUNSLElBQUksQ0FBQyxFQUFFNEUsYUFBYSxDQUFDaEcsSUFBSSxDQUFDLENBQUNvQixJQUFJLEVBQUVRLElBQUksQ0FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQztVQUN4RCxDQUFDLE1BQU07WUFDTCxNQUFNc0UsS0FBSyxHQUFHdEUsSUFBSSxDQUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUMvQixNQUFNUCxHQUFHLEdBQUc0QixJQUFJLENBQUNxQyxLQUFLLENBQUMsQ0FBQyxFQUFFaUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwQyxJQUFJQSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7Y0FDaEIsSUFBSUksQ0FBQyxHQUFHRCxRQUFRLENBQUMxRixNQUFNO2NBQ3ZCLE9BQU8yRixDQUFDLEVBQUUsRUFBRTtnQkFDVixJQUFJRCxRQUFRLENBQUNDLENBQUMsQ0FBQyxLQUFLdEcsR0FBRyxDQUFDaUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFb0MsUUFBUSxDQUFDRSxNQUFNLENBQUNELENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUN2RCxJQUFJRCxRQUFRLENBQUNDLENBQUMsQ0FBQyxDQUFDL0YsT0FBTyxDQUFDUCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUVxRyxRQUFRLENBQUNFLE1BQU0sQ0FBQ0QsQ0FBQyxFQUFFLENBQUMsQ0FBQztjQUNoRTtZQUNGO1VBQ0Y7O1VBRUE7VUFDQSxJQUFJRCxRQUFRLENBQUM5RixPQUFPLENBQUNxQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRXlFLFFBQVEsQ0FBQzdGLElBQUksQ0FBQ29CLElBQUksQ0FBQztRQUN4RDtNQUNGOztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBLEtBQUssTUFBTUEsSUFBSSxJQUFJeUUsUUFBUSxFQUFFO1FBQzNCLElBQUloSixRQUFRLENBQUN1RSxJQUFJLENBQUMsRUFBRTtVQUNsQixJQUFJUSxJQUFJLENBQUNSLElBQUksQ0FBQyxLQUFLbEIsU0FBUyxFQUFFOEYsYUFBYSxDQUFDaEcsSUFBSSxDQUFDLENBQUNvQixJQUFJLEVBQUVRLElBQUksQ0FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDLE1BQU0sSUFBSVEsSUFBSSxDQUFDbkUsTUFBTSxDQUFDQyxHQUFHLENBQUMwRCxJQUFJLENBQUMsQ0FBQyxLQUFLbEIsU0FBUyxFQUFFO1VBQy9DOEYsYUFBYSxDQUFDaEcsSUFBSSxDQUFDLENBQUN2QyxNQUFNLENBQUNDLEdBQUcsQ0FBQzBELElBQUksQ0FBQyxFQUFFUSxJQUFJLENBQUNuRSxNQUFNLENBQUNDLEdBQUcsQ0FBQzBELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRTtNQUNGOztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsSUFBSTtRQUNGUSxJQUFJLEdBQUd6RSxRQUFRLENBQUN5RSxJQUFJLEVBQUVpRSxRQUFRLENBQUM7TUFDakMsQ0FBQyxDQUFDLE9BQU83SCxHQUFHLEVBQUU7UUFDWixJQUFJLENBQUM0QyxNQUFNLENBQUN5QixNQUFNLENBQUNnQixLQUFLLENBQUNyRixHQUFHLENBQUM7TUFDL0I7O01BRUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsSUFBSWdJLGFBQWEsQ0FBQzdGLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDNUIsS0FBSyxNQUFNLENBQUNYLEdBQUcsRUFBRWQsS0FBSyxDQUFDLElBQUlzSCxhQUFhLEVBQUU7VUFDeENwRSxJQUFJLENBQUNwQyxHQUFHLENBQUMsR0FBR2QsS0FBSztRQUNuQjtNQUNGO0lBQ0Y7O0lBRUE7SUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDa0MsTUFBTSxDQUFDd0IsTUFBTSxJQUFJLENBQUNxRCxtQkFBbUIsRUFBRTtNQUMvQztNQUNBLElBQUk3SSxPQUFPLENBQUNvQixHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM0QyxNQUFNLENBQUNjLFNBQVMsRUFBRTtRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDZCxNQUFNLENBQUNnQixJQUFJLENBQUNFLElBQUksSUFBSTdCLE9BQU8sQ0FBQzJCLElBQUksQ0FBQyxFQUFFO1VBQzNDLElBQUksQ0FBQ2hCLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ2tELE1BQU0sQ0FBQyxDQUFDLElBQUlqQixVQUFVLEdBQUcsQ0FBQ0gsT0FBTyxFQUFFbkcsR0FBRyxDQUFDLEdBQUcsQ0FBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDLE1BQU0sSUFDTCxJQUFJLENBQUM0QyxNQUFNLENBQUNnQixJQUFJLENBQUNNLFFBQVEsSUFDekJOLElBQUksQ0FBQyxJQUFJLENBQUNoQixNQUFNLENBQUNnQixJQUFJLENBQUNNLFFBQVEsQ0FBQyxFQUMvQjtVQUNBLElBQUksQ0FBQ3RCLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ2tELE1BQU0sQ0FBQyxDQUFDLElBQUlqQixVQUFVLEdBQUcsQ0FBQ0gsT0FBTyxFQUFFbkcsR0FBRyxDQUFDLEdBQUcsQ0FBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDLE1BQU07VUFDTCxJQUFJLENBQUM0QyxNQUFNLENBQUN5QixNQUFNLENBQUNrRCxNQUFNLENBQUMsQ0FDeEIsSUFBSWpCLFVBQVUsR0FBRyxDQUFDSCxPQUFPLEVBQUVuRyxHQUFHLEVBQUU0RCxJQUFJLENBQUMsR0FBRyxDQUFDNUQsR0FBRyxFQUFFNEQsSUFBSSxDQUFDLENBQ3JELENBQUM7UUFDSDtNQUNGLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDaEIsTUFBTSxDQUFDZ0IsSUFBSSxDQUFDRSxJQUFJLElBQUk3QixPQUFPLENBQUMyQixJQUFJLENBQUMsRUFBRTtRQUNsRCxJQUFJLENBQUNoQixNQUFNLENBQUN5QixNQUFNLENBQUNrRCxNQUFNLENBQUMsQ0FBQ3BCLE9BQU8sQ0FBQztNQUNyQyxDQUFDLE1BQU0sSUFDSixJQUFJLENBQUN2RCxNQUFNLENBQUNnQixJQUFJLENBQUNNLFFBQVEsSUFBSU4sSUFBSSxDQUFDLElBQUksQ0FBQ2hCLE1BQU0sQ0FBQ2dCLElBQUksQ0FBQ00sUUFBUSxDQUFDLElBQzVELElBQUksQ0FBQ3RCLE1BQU0sQ0FBQ2dCLElBQUksQ0FBQ0ssUUFBUSxJQUFJTCxJQUFJLENBQUMsSUFBSSxDQUFDaEIsTUFBTSxDQUFDZ0IsSUFBSSxDQUFDSyxRQUFRLENBQUUsRUFDOUQ7UUFDQSxJQUFJLENBQUNyQixNQUFNLENBQUN5QixNQUFNLENBQUNrRCxNQUFNLENBQUMsQ0FBQ3BCLE9BQU8sQ0FBQztNQUNyQyxDQUFDLE1BQU07UUFDTCxJQUFJLENBQUN2RCxNQUFNLENBQUN5QixNQUFNLENBQUNrRCxNQUFNLENBQUMsQ0FBQ3BCLE9BQU8sRUFBRXZDLElBQUksQ0FBQztNQUMzQztJQUNGOztJQUVBO0lBQ0EsSUFBSSxJQUFJLENBQUNoQixNQUFNLENBQUM4QixLQUFLLENBQUNFLElBQUksQ0FBQ3pDLE1BQU0sS0FBSyxDQUFDLEVBQ3JDLE9BQU87TUFBRW9GLE1BQU07TUFBRXZILEdBQUc7TUFBRW1HLE9BQU87TUFBRXZDO0lBQUssQ0FBQztJQUN2QyxPQUFPNUUsVUFBVSxDQUFDLElBQUksQ0FBQzRELE1BQU0sQ0FBQzhCLEtBQUssQ0FBQ0UsSUFBSSxFQUFHNEMsSUFBSSxJQUM3Q0EsSUFBSSxDQUFDRCxNQUFNLEVBQUV2SCxHQUFHLEVBQUVtRyxPQUFPLEVBQUV2QyxJQUFJLENBQ2pDLENBQUMsQ0FDRXFFLElBQUksQ0FBQyxDQUFDLENBQ05DLEtBQUssQ0FBRWxJLEdBQUcsSUFBSztNQUNkLElBQUksQ0FBQzRDLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ2dCLEtBQUssQ0FBQ3JGLEdBQUcsQ0FBQztJQUMvQixDQUFDLENBQUM7RUFDTjtBQUNGO0FBRUFtSSxNQUFNLENBQUNDLE9BQU8sR0FBR3pGLEdBQUciLCJpZ25vcmVMaXN0IjpbXX0=
551
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwib3MiLCJmb3JtYXQiLCJmb3JtYXRTcGVjaWZpZXJzIiwiZ2V0IiwiaXNFcnJvciIsImlzU3ltYm9sIiwiaXNCdWZmZXIiLCJtZXJnZU9wdGlvbnMiLCJwYXJzZUFwcEluZm8iLCJwYXJzZUVyciIsInBpY2tEZWVwIiwic2V0IiwidW5zZXQiLCJib29sZWFuIiwicGtnIiwic2lsZW50U3ltYm9sIiwiU3ltYm9sIiwiZm9yIiwib21pdHRlZExvZ2dlcktleXMiLCJTZXQiLCJsZXZlbHMiLCJhbGlhc2VzIiwid2FybmluZyIsImVyciIsImxldmVsRXJyb3IiLCJqb2luIiwibmFtZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkhPU1ROQU1FIiwiaG9zdG5hbWUiLCJtYXBTZXJpZXMiLCJpdGVyYWJsZSIsIm1hcHBlciIsInZhbHVlcyIsInJlc3VsdHMiLCJtYXAiLCJpbmRleCIsImxlbmd0aCIsInB1c2giLCJydW5Qb3N0SG9va3MiLCJob29rcyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJtZXRhIiwibG9nZ2VyIiwiaG9vayIsImVycl8iLCJlcnJvciIsImlzUGxhaW5PYmplY3QiLCJ2YWx1ZSIsInByb3RvdHlwZSIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwidG9TdHJpbmdUYWciLCJpdGVyYXRvciIsImRvdGlmeVRvQXJyYXkiLCJvYmoiLCJyZXMiLCJyZWN1cnNlIiwiY3VycmVudCIsImNvbnN0cnVjdG9yIiwiQXJyYXkiLCJpc0FycmF5Iiwia2V5IiwiUmVmbGVjdCIsIm93bktleXMiLCJjb252ZXJ0ZWRLZXkiLCJrZXlGb3IiLCJkZXNjcmlwdGlvbiIsIm5ld0tleSIsImluZGV4T2YiLCJpc0VtcHR5IiwidW5kZWZpbmVkIiwidHJpbSIsImlzTnVsbCIsImlzVW5kZWZpbmVkIiwiaXNPYmplY3QiLCJpc1N0cmluZyIsImlzRnVuY3Rpb24iLCJnZXRGdW5jdGlvbiIsIkF4ZSIsImNvbmZpZyIsInJlbWFwcGVkRmllbGRzIiwiQVhFX1JFTUFQUEVEX01FVEFfRklFTERTIiwiZmllbGRzIiwiYXJyIiwic3BsaXQiLCJ2IiwicHJvcCIsIm9taXR0ZWRGaWVsZHMiLCJBWEVfT01JVF9NRVRBX0ZJRUxEUyIsInMiLCJwaWNrZWRGaWVsZHMiLCJBWEVfUElDS19NRVRBX0ZJRUxEUyIsInNob3dTdGFjayIsIkFYRV9TSE9XX1NUQUNLIiwiYXNzaWduIiwic2hvdyIsIkFYRV9TSE9XX01FVEEiLCJjbGVhbnVwUmVtYXBwaW5nIiwiaGlkZUhUVFAiLCJoaWRlTWV0YSIsInZlcnNpb24iLCJzaWxlbnQiLCJjb25zb2xlIiwibGV2ZWwiLCJhcHBJbmZvIiwiQVhFX0FQUF9JTkZPIiwicHJlIiwicG9zdCIsImxvZyIsImJpbmQiLCJtZXRob2RzIiwia2V5cyIsImZpbHRlciIsImhhcyIsImVsZW1lbnQiLCJmYXRhbCIsImluZm8iLCJFcnJvciIsImFyZ3MiLCJzbGljZSIsImNhbGwiLCJzZXRMZXZlbCIsImdldE5vcm1hbGl6ZWRMZXZlbCIsInNldE5hbWUiLCJ3YXJuIiwiZm4iLCJfbGV2ZWwiLCJsb2dMZXZlbCIsInNjb3BlIiwib3JpZ2luYWxBcmdzIiwiZXJyb3JzIiwiaGFzTWVzc2FnZSIsImhhc0xldmVsIiwiYXJnIiwibW9kaWZpZXIiLCJpc0J1bnlhbiIsIl9tZXRhIiwibWVzc2FnZXMiLCJpc19odHRwIiwic29tZSIsInQiLCJ1bnNoaWZ0Iiwib3JpZ2luYWxfbWV0YSIsIm9yaWdpbmFsX2VyciIsImUiLCJCb29sZWFuIiwic3RhY2siLCJhcHAiLCJoYWRUcnVlU2lsZW50U3ltYm9sIiwibGFzdEluZGV4T2YiLCJwYXJlbnRLZXkiLCJkb3RpZmllZCIsImkiLCJzcGxpY2UiLCJwaWNrZWRTeW1ib2xzIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVuYXNzaWduZWQtaW1wb3J0XG5yZXF1aXJlKCdjb25zb2xlLXBvbHlmaWxsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1ub2RlLXByb3RvY29sXG5jb25zdCBvcyA9IHJlcXVpcmUoJ29zJyk7XG5jb25zdCBmb3JtYXQgPSByZXF1aXJlKCdAbGFkanMvZm9ybWF0LXV0aWwnKTtcbmNvbnN0IGZvcm1hdFNwZWNpZmllcnMgPSByZXF1aXJlKCdmb3JtYXQtc3BlY2lmaWVycycpO1xuY29uc3QgZ2V0ID0gcmVxdWlyZSgnQHN0cmlrZWVudGNvL2dldCcpO1xuY29uc3QgaXNFcnJvciA9IHJlcXVpcmUoJ2lzZXJyb3InKTtcbmNvbnN0IGlzU3ltYm9sID0gcmVxdWlyZSgnaXMtc3ltYm9sJyk7XG5jb25zdCBpc0J1ZmZlciA9IHJlcXVpcmUoJ2lzLWJ1ZmZlcicpO1xuY29uc3QgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnbWVyZ2Utb3B0aW9ucycpO1xuY29uc3QgcGFyc2VBcHBJbmZvID0gcmVxdWlyZSgncGFyc2UtYXBwLWluZm8nKTtcbmNvbnN0IHBhcnNlRXJyID0gcmVxdWlyZSgncGFyc2UtZXJyJyk7XG5jb25zdCBwaWNrRGVlcCA9IHJlcXVpcmUoJ3BpY2stZGVlcCcpO1xuY29uc3Qgc2V0ID0gcmVxdWlyZSgnQHN0cmlrZWVudGNvL3NldCcpO1xuY29uc3QgdW5zZXQgPSByZXF1aXJlKCd1bnNldC12YWx1ZScpO1xuY29uc3QgeyBib29sZWFuIH0gPSByZXF1aXJlKCdib29sZWFuJyk7XG5jb25zdCBwa2cgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qgc2lsZW50U3ltYm9sID0gU3ltYm9sLmZvcignYXhlLnNpbGVudCcpO1xuY29uc3Qgb21pdHRlZExvZ2dlcktleXMgPSBuZXcgU2V0KFsnY29uZmlnJywgJ2xvZyddKTtcbmNvbnN0IGxldmVscyA9IFsndHJhY2UnLCAnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJywgJ2ZhdGFsJ107XG5jb25zdCBhbGlhc2VzID0geyB3YXJuaW5nOiAnd2FybicsIGVycjogJ2Vycm9yJyB9O1xuY29uc3QgbGV2ZWxFcnJvciA9IGBcXGBsZXZlbFxcYCBpbnZhbGlkLCBtdXN0IGJlOiAke2xldmVscy5qb2luKCcsICcpfWA7XG5jb25zdCBuYW1lID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZhbHNlXG4gICAgOiBwcm9jZXNzLmVudi5IT1NUTkFNRSB8fCBvcy5ob3N0bmFtZSgpO1xuXG5hc3luYyBmdW5jdGlvbiBtYXBTZXJpZXMoaXRlcmFibGUsIG1hcHBlcikge1xuICBjb25zdCB2YWx1ZXMgPSBbLi4uaXRlcmFibGVdO1xuICBjb25zdCByZXN1bHRzID0gW107XG4gIGFzeW5jIGZ1bmN0aW9uIG1hcChpbmRleCkge1xuICAgIGlmIChpbmRleCA9PT0gdmFsdWVzLmxlbmd0aCkgcmV0dXJuIHJlc3VsdHM7XG4gICAgcmVzdWx0cy5wdXNoKGF3YWl0IG1hcHBlcih2YWx1ZXNbaW5kZXhdKSk7XG4gICAgcmV0dXJuIG1hcChpbmRleCArIDEpO1xuICB9XG5cbiAgcmV0dXJuIG1hcCgwKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuUG9zdEhvb2tzKHsgaG9va3MsIG1ldGhvZCwgZXJyLCBtZXNzYWdlLCBtZXRhLCBsb2dnZXIgfSkge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBtYXBTZXJpZXMoaG9va3MsIChob29rKSA9PiBob29rKG1ldGhvZCwgZXJyLCBtZXNzYWdlLCBtZXRhKSk7XG4gIH0gY2F0Y2ggKGVycl8pIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyXyk7XG4gIH1cbn1cblxuLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvaXMtcGxhaW4tb2JqL2Jsb2IvbWFpbi9pbmRleC5qcz5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuICByZXR1cm4gKFxuICAgIChwcm90b3R5cGUgPT09IG51bGwgfHxcbiAgICAgIHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fFxuICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSkgPT09IG51bGwpICYmXG4gICAgIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUpICYmXG4gICAgIShTeW1ib2wuaXRlcmF0b3IgaW4gdmFsdWUpICYmXG4gICAgIWlzU3ltYm9sKHZhbHVlKVxuICApO1xufVxuXG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL0dlZW5lblRpamQvZG90aWZ5L2Jsb2IvbWFzdGVyL2RvdGlmeS5qcz5cbmZ1bmN0aW9uIGRvdGlmeVRvQXJyYXkob2JqKSB7XG4gIGNvbnN0IHJlcyA9IFtdO1xuICBmdW5jdGlvbiByZWN1cnNlKG9iaiwgY3VycmVudCkge1xuICAgIC8vIGlmIGl0J3MgYSBidWZmZXIsIHVpbnQ4YXJyYXksIG9yIGFycmF5XG4gICAgaWYgKFxuICAgICAgaXNCdWZmZXIob2JqKSB8fFxuICAgICAgKG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IubmFtZSA9PT0gJ1VpbnQ4QXJyYXknKSB8fFxuICAgICAgQXJyYXkuaXNBcnJheShvYmopXG4gICAgKVxuICAgICAgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKG9iaikpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgICBjb25zdCBjb252ZXJ0ZWRLZXkgPSBpc1N5bWJvbChrZXkpXG4gICAgICAgID8gU3ltYm9sLmtleUZvcihrZXkpIHx8IGtleS5kZXNjcmlwdGlvblxuICAgICAgICA6IGtleTtcbiAgICAgIGNvbnN0IG5ld0tleSA9IGN1cnJlbnQgPyBjdXJyZW50ICsgJy4nICsgY29udmVydGVkS2V5IDogY29udmVydGVkS2V5OyAvLyBqb2luZWQga2V5IHdpdGggZG90XG4gICAgICAvLyBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgIU9iamVjdElELmlzVmFsaWQodmFsdWUpKSB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkgJiYgcmVzLmluZGV4T2YoY29udmVydGVkS2V5KSA9PT0gLTEpIHtcbiAgICAgICAgcmVzLnB1c2goY29udmVydGVkS2V5KTtcbiAgICAgICAgcmVjdXJzZSh2YWx1ZSwgbmV3S2V5KTsgLy8gaXQncyBhIG5lc3RlZCBvYmplY3QsIHNvIGRvIGl0IGFnYWluXG4gICAgICB9IGVsc2UgaWYgKHJlcy5pbmRleE9mKG5ld0tleSkgPT09IC0xKSB7XG4gICAgICAgIHJlcy5wdXNoKG5ld0tleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVjdXJzZShvYmopO1xuICByZXR1cm4gcmVzO1xufVxuXG4vLyA8aHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQzMjMzMTYzPlxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIFJlZmxlY3Qub3duS2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGdldEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbn1cblxuY2xhc3MgQXhlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgY29uc3RydWN0b3IoY29uZmlnID0ge30pIHtcbiAgICBjb25zdCByZW1hcHBlZEZpZWxkcyA9IHt9O1xuICAgIGlmIChwcm9jZXNzLmVudi5BWEVfUkVNQVBQRURfTUVUQV9GSUVMRFMpIHtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHByb2Nlc3MuZW52LkFYRV9SRU1BUFBFRF9NRVRBX0ZJRUxEUztcbiAgICAgIGNvbnN0IGFyciA9IGZpZWxkcy5zcGxpdCgnLCcpLm1hcCgodikgPT4gdi5zcGxpdCgnOicpKTtcbiAgICAgIGZvciAoY29uc3QgW3Byb3AsIHZhbHVlXSBvZiBhcnIpIHtcbiAgICAgICAgcmVtYXBwZWRGaWVsZHNbcHJvcF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlbnZpZnkgZG9lcyBub3Qgc3VwcG9ydCBjb25kaXRpb25hbHMgd2VsbCBlbm91Z2ggc28gd2UgZGVjbGFyZSB2YXJzIG91dHNpZGVcbiAgICBsZXQgb21pdHRlZEZpZWxkcyA9IHByb2Nlc3MuZW52LkFYRV9PTUlUX01FVEFfRklFTERTO1xuICAgIGlmICh0eXBlb2Ygb21pdHRlZEZpZWxkcyA9PT0gJ3N0cmluZycpXG4gICAgICBvbWl0dGVkRmllbGRzID0gb21pdHRlZEZpZWxkcy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShvbWl0dGVkRmllbGRzKSkgb21pdHRlZEZpZWxkcyA9IFtdO1xuXG4gICAgbGV0IHBpY2tlZEZpZWxkcyA9IHByb2Nlc3MuZW52LkFYRV9QSUNLX01FVEFfRklFTERTO1xuICAgIGlmICh0eXBlb2YgcGlja2VkRmllbGRzID09PSAnc3RyaW5nJylcbiAgICAgIHBpY2tlZEZpZWxkcyA9IHBpY2tlZEZpZWxkcy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwaWNrZWRGaWVsZHMpKSBwaWNrZWRGaWVsZHMgPSBbXTtcblxuICAgIHRoaXMuY29uZmlnID0gbWVyZ2VPcHRpb25zKFxuICAgICAge1xuICAgICAgICBzaG93U3RhY2s6IHByb2Nlc3MuZW52LkFYRV9TSE9XX1NUQUNLXG4gICAgICAgICAgPyBib29sZWFuKHByb2Nlc3MuZW52LkFYRV9TSE9XX1NUQUNLKVxuICAgICAgICAgIDogdHJ1ZSxcbiAgICAgICAgbWV0YTogT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaG93OiBwcm9jZXNzLmVudi5BWEVfU0hPV19NRVRBXG4gICAgICAgICAgICAgID8gYm9vbGVhbihwcm9jZXNzLmVudi5BWEVfU0hPV19NRVRBKVxuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgICByZW1hcHBlZEZpZWxkcyxcbiAgICAgICAgICAgIG9taXR0ZWRGaWVsZHMsXG4gICAgICAgICAgICBwaWNrZWRGaWVsZHMsXG4gICAgICAgICAgICBjbGVhbnVwUmVtYXBwaW5nOiB0cnVlLFxuICAgICAgICAgICAgaGlkZUhUVFA6ICdpc19odHRwJyxcbiAgICAgICAgICAgIC8vIGltcGxlbWVudGVkIG1haW5seSBmb3IgQGxhZGpzL2dyYWNlZnVsIHRvXG4gICAgICAgICAgICAvLyBzdXBwcmVzcyB1bm5lY2Vzc2FyeSBtZXRhIG91dHB1dCB0byBjb25zb2xlXG4gICAgICAgICAgICBoaWRlTWV0YTogJ2hpZGVfbWV0YSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR5cGVvZiBjb25maWcubWV0YSA9PT0gJ29iamVjdCcgPyBjb25maWcubWV0YSA6IHt9XG4gICAgICAgICksXG4gICAgICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgICAgICBsb2dnZXI6IGNvbnNvbGUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxldmVsOiAnaW5mbycsXG4gICAgICAgIGxldmVsczogWydpbmZvJywgJ3dhcm4nLCAnZXJyb3InLCAnZmF0YWwnXSxcbiAgICAgICAgYXBwSW5mbzogcHJvY2Vzcy5lbnYuQVhFX0FQUF9JTkZPXG4gICAgICAgICAgPyBib29sZWFuKHByb2Nlc3MuZW52LkFYRV9BUFBfSU5GTylcbiAgICAgICAgICA6IHRydWUsXG4gICAgICAgIGhvb2tzOiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByZTogW10sXG4gICAgICAgICAgICBwb3N0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHlwZW9mIGNvbmZpZy5ob29rcyA9PT0gJ29iamVjdCcgPyBjb25maWcuaG9va3MgOiB7fVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgY29uZmlnXG4gICAgKTtcblxuICAgIHRoaXMuYXBwSW5mbyA9IHRoaXMuY29uZmlnLmFwcEluZm9cbiAgICAgID8gaXNGdW5jdGlvbihwYXJzZUFwcEluZm8pXG4gICAgICAgID8gcGFyc2VBcHBJbmZvKClcbiAgICAgICAgOiBmYWxzZVxuICAgICAgOiBmYWxzZTtcblxuICAgIHRoaXMubG9nID0gdGhpcy5sb2cuYmluZCh0aGlzKTtcblxuICAgIC8vIEluaGVyaXQgbWV0aG9kcyBmcm9tIHBhcmVudCBsb2dnZXJcbiAgICBjb25zdCBtZXRob2RzID0gT2JqZWN0LmtleXModGhpcy5jb25maWcubG9nZ2VyKS5maWx0ZXIoXG4gICAgICAoa2V5KSA9PiAhb21pdHRlZExvZ2dlcktleXMuaGFzKGtleSlcbiAgICApO1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBtZXRob2RzKSB7XG4gICAgICB0aGlzW2VsZW1lbnRdID0gdGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdO1xuICAgIH1cblxuICAgIC8vIEJpbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgZWFjaCBsb2cgbGV2ZWxcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgbGV2ZWxzKSB7XG4gICAgICAvLyBFbnN1cmUgZnVuY3Rpb24gZXhpc3RzIGluIGxvZ2dlciBwYXNzZWRcbiAgICAgIGlmIChlbGVtZW50ID09PSAnZmF0YWwnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlci5mYXRhbCA9XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5lcnJvcikgfHxcbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXIuaW5mbykgfHxcbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXIubG9nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlcltlbGVtZW50XSA9XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5pbmZvKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5sb2cpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYCR7ZWxlbWVudH1cXGAgbXVzdCBiZSBhIGZ1bmN0aW9uIG9uIHRoZSBsb2dnZXIuYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEJpbmQgbG9nIGhhbmRsZXIgd2hpY2ggbm9ybWFsaXplcyBhcmdzIGFuZCBwb3B1bGF0ZXMgbWV0YVxuICAgICAgdGhpc1tlbGVtZW50XSA9ICguLi5hcmdzKSA9PlxuICAgICAgICB0aGlzLmxvZyhlbGVtZW50LCAuLi5BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRMZXZlbCA9IHRoaXMuc2V0TGV2ZWwuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldE5vcm1hbGl6ZWRMZXZlbCA9IHRoaXMuZ2V0Tm9ybWFsaXplZExldmVsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXROYW1lID0gdGhpcy5zZXROYW1lLmJpbmQodGhpcyk7XG5cbiAgICAvLyBTZXQgdGhlIGxvZ2dlciBuYW1lXG4gICAgaWYgKHRoaXMuY29uZmlnLm5hbWUpIHRoaXMuc2V0TmFtZSh0aGlzLmNvbmZpZy5uYW1lKTtcblxuICAgIC8vIFNldCB0aGUgbG9nZ2VyIGxldmVsXG4gICAgdGhpcy5zZXRMZXZlbCh0aGlzLmNvbmZpZy5sZXZlbCk7XG5cbiAgICAvLyBBbGlhc2VzXG4gICAgdGhpcy5lcnIgPSB0aGlzLmVycm9yO1xuICAgIHRoaXMud2FybmluZyA9IHRoaXMud2FybjtcblxuICAgIC8vIFByZSBhbmQgUG9zdCBIb29rc1xuICAgIHRoaXMucHJlID0gZnVuY3Rpb24gKGxldmVsLCBmbikge1xuICAgICAgdGhpcy5jb25maWcuaG9va3MucHJlLnB1c2goZnVuY3Rpb24gKF9sZXZlbCwgLi4uYXJncykge1xuICAgICAgICBpZiAobGV2ZWwgIT09IF9sZXZlbCkgcmV0dXJuIFsuLi5hcmdzXTtcbiAgICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMucG9zdCA9IGZ1bmN0aW9uIChsZXZlbCwgZm4pIHtcbiAgICAgIHRoaXMuY29uZmlnLmhvb2tzLnBvc3QucHVzaChmdW5jdGlvbiAoX2xldmVsLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChsZXZlbCAhPT0gX2xldmVsKSByZXR1cm4gWy4uLmFyZ3NdO1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgc2V0TGV2ZWwobGV2ZWwpIHtcbiAgICBpZiAoIWlzU3RyaW5nKGxldmVsKSB8fCBsZXZlbHMuaW5kZXhPZihsZXZlbCkgPT09IC0xKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGxldmVsRXJyb3IpO1xuICAgIC8vIFN1cHBvcnQgc2lnbmFsZSBsb2dnZXIgYW5kIG90aGVyIGxvZ2dlcnMgdGhhdCB1c2UgYGxvZ0xldmVsYFxuICAgIGlmIChpc1N0cmluZyh0aGlzLmNvbmZpZy5sb2dnZXIubG9nTGV2ZWwpKVxuICAgICAgdGhpcy5jb25maWcubG9nZ2VyLmxvZ0xldmVsID0gbGV2ZWw7XG4gICAgZWxzZSB0aGlzLmNvbmZpZy5sb2dnZXIubGV2ZWwgPSBsZXZlbDtcbiAgICAvLyBBZGp1c3RzIGB0aGlzLmNvbmZpZy5sZXZlbHNgIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCBoYXMgYWxsIHByb2NlZWRpbmcgKGluY2x1c2l2ZSlcbiAgICB0aGlzLmNvbmZpZy5sZXZlbHMgPSBsZXZlbHMuc2xpY2UobGV2ZWxzLmluZGV4T2YobGV2ZWwpKTtcbiAgfVxuXG4gIGdldE5vcm1hbGl6ZWRMZXZlbChsZXZlbCkge1xuICAgIGlmICghaXNTdHJpbmcobGV2ZWwpKSByZXR1cm4gJ2luZm8nO1xuICAgIGlmIChpc1N0cmluZyhhbGlhc2VzW2xldmVsXSkpIHJldHVybiBhbGlhc2VzW2xldmVsXTtcbiAgICBpZiAobGV2ZWxzLmluZGV4T2YobGV2ZWwpID09PSAtMSkgcmV0dXJuICdpbmZvJztcbiAgICByZXR1cm4gbGV2ZWw7XG4gIH1cblxuICBzZXROYW1lKG5hbWUpIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoJ2BuYW1lYCBtdXN0IGJlIGEgU3RyaW5nJyk7XG4gICAgLy8gU3VwcG9ydCBzaWduYWxlIGxvZ2dlciBhbmQgb3RoZXIgbG9nZ2VycyB0aGF0IHVzZSBgc2NvcGVgXG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuY29uZmlnLmxvZ2dlci5zY29wZSkpIHRoaXMuY29uZmlnLmxvZ2dlci5zY29wZSA9IG5hbWU7XG4gICAgZWxzZSB0aGlzLmNvbmZpZy5sb2dnZXIubmFtZSA9IG5hbWU7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBsb2cobGV2ZWwsIG1lc3NhZ2UsIG1ldGEsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBvcmlnaW5hbEFyZ3MgPSBbXTtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICBsZXQgaGFzTWVzc2FnZSA9IGZhbHNlO1xuICAgIGxldCBoYXNMZXZlbCA9IHRydWU7XG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKGxldmVsKSkgb3JpZ2luYWxBcmdzLnB1c2gobGV2ZWwpO1xuICAgIGlmICghaXNVbmRlZmluZWQobWVzc2FnZSkpIG9yaWdpbmFsQXJncy5wdXNoKG1lc3NhZ2UpO1xuICAgIGlmICghaXNVbmRlZmluZWQobWV0YSkpIG9yaWdpbmFsQXJncy5wdXNoKG1ldGEpO1xuICAgIGZvciAoY29uc3QgYXJnIG9mIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpKSB7XG4gICAgICBvcmlnaW5hbEFyZ3MucHVzaChhcmcpO1xuICAgIH1cblxuICAgIGxldCBtb2RpZmllciA9IDA7XG5cbiAgICBpZiAoaXNTdHJpbmcobGV2ZWwpICYmIGlzU3RyaW5nKGFsaWFzZXNbbGV2ZWxdKSkge1xuICAgICAgbGV2ZWwgPSBhbGlhc2VzW2xldmVsXTtcbiAgICB9IGVsc2UgaWYgKGlzRXJyb3IobGV2ZWwpKSB7XG4gICAgICBoYXNMZXZlbCA9IGZhbHNlO1xuICAgICAgbWV0YSA9IG1lc3NhZ2U7XG4gICAgICBtZXNzYWdlID0gbGV2ZWw7XG4gICAgICBsZXZlbCA9ICdlcnJvcic7XG4gICAgfSBlbHNlIGlmICghaXNTdHJpbmcobGV2ZWwpIHx8IGxldmVscy5pbmRleE9mKGxldmVsKSA9PT0gLTEpIHtcbiAgICAgIGhhc0xldmVsID0gZmFsc2U7XG4gICAgICBtZXRhID0gbWVzc2FnZTtcbiAgICAgIG1lc3NhZ2UgPSBsZXZlbDtcbiAgICAgIGxldmVsID0gdGhpcy5nZXROb3JtYWxpemVkTGV2ZWwobGV2ZWwpO1xuICAgICAgbW9kaWZpZXIgPSAtMTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZWFybHkgaWYgaXQgaXMgbm90IGEgdmFsaWQgbG9nZ2luZyBsZXZlbFxuICAgIGlmICh0aGlzLmNvbmZpZy5sZXZlbHMuaW5kZXhPZihsZXZlbCkgPT09IC0xKSByZXR1cm47XG5cbiAgICAvLyBCdW55YW4gc3VwcG9ydCAobWV0YSwgbWVzc2FnZSwgLi4uYXJncylcbiAgICBsZXQgaXNCdW55YW4gPSBmYWxzZTtcbiAgICBpZiAoKGlzT2JqZWN0KG1lc3NhZ2UpIHx8IEFycmF5LmlzQXJyYXkobWVzc2FnZSkpICYmIGlzU3RyaW5nKG1ldGEpKSB7XG4gICAgICBpc0J1bnlhbiA9IHRydWU7XG4gICAgICBjb25zdCBfbWV0YSA9IG1ldGE7XG4gICAgICBtZXRhID0gbWVzc2FnZTtcbiAgICAgIG1lc3NhZ2UgPVxuICAgICAgICBpc1N0cmluZyhfbWV0YSkgJiYgb3JpZ2luYWxBcmdzLmxlbmd0aCA+PSAzICsgbW9kaWZpZXJcbiAgICAgICAgICA/IGZvcm1hdCguLi5vcmlnaW5hbEFyZ3Muc2xpY2UoMiArIG1vZGlmaWVyKSlcbiAgICAgICAgICA6IF9tZXRhO1xuICAgIH1cblxuICAgIC8vIElmIG1lc3NhZ2Ugd2FzIHVuZGVmaW5lZCB0aGVuIHNldCBpdCB0byBsZXZlbFxuICAgIGlmIChpc1VuZGVmaW5lZChtZXNzYWdlKSkgbWVzc2FnZSA9IGxldmVsO1xuXG4gICAgLy8gSWYgb25seSBgbWVzc2FnZWAgd2FzIHBhc3NlZCB0aGVuIGlmIGl0IHdhcyBhbiBPYmplY3RcbiAgICAvLyBwcmVzZXJ2ZSBpdCBhcyBhbiBPYmplY3QgYnkgc2V0dGluZyBpdCBhcyBtZXRhXG4gICAgaWYgKFxuICAgICAgb3JpZ2luYWxBcmdzLnNsaWNlKDEgKyBtb2RpZmllcikubGVuZ3RoID09PSAxICYmXG4gICAgICAhaXNTdHJpbmcobWVzc2FnZSkgJiZcbiAgICAgICFpc0Vycm9yKG1lc3NhZ2UpXG4gICAgKSB7XG4gICAgICBtZXRhID0geyBtZXNzYWdlIH07XG4gICAgICBtZXNzYWdlID0gbGV2ZWw7XG4gICAgfSBlbHNlIGlmICghaXNCdW55YW4gJiYgb3JpZ2luYWxBcmdzLmxlbmd0aCA+PSA0ICsgbW9kaWZpZXIpIHtcbiAgICAgIG1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICBtZXRhID0ge307XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBhcmcgb2Ygb3JpZ2luYWxBcmdzLnNsaWNlKFxuICAgICAgICBoYXNMZXZlbCAmJiBtb2RpZmllciA9PT0gMCA/IDEgOiAwXG4gICAgICApKSB7XG4gICAgICAgIGlmIChpc0Vycm9yKGFyZykpIGVycm9ycy5wdXNoKGFyZyk7XG4gICAgICAgIC8vIHB1c2hlcyBudW1iZXIsIG9iamVjdCwgc3RyaW5nLCBldGMgZm9yIGZvcm1hdHRpbmdcbiAgICAgICAgZWxzZSBtZXNzYWdlcy5wdXNoKGFyZyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQoLi4ubWVzc2FnZXMpO1xuICAgICAgICBoYXNNZXNzYWdlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwICYmIGxldmVsID09PSAnbG9nJykgbGV2ZWwgPSAnZXJyb3InO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhaXNCdW55YW4gJiZcbiAgICAgIG9yaWdpbmFsQXJncy5sZW5ndGggPT09IDMgKyBtb2RpZmllciAmJlxuICAgICAgaXNTdHJpbmcobWVzc2FnZSkgJiZcbiAgICAgICEobWV0YSAmJiBtZXRhLmlzX2h0dHApICYmXG4gICAgICBmb3JtYXRTcGVjaWZpZXJzLnNvbWUoKHQpID0+IG1lc3NhZ2UuaW5kZXhPZih0KSAhPT0gLTEpXG4gICAgKSB7XG4gICAgICAvLyBPdGhlcndpc2UgaWYgdGhlcmUgYXJlIHRocmVlIGFyZ3MgYW5kIGlmIHRoZSBgbWVzc2FnZWAgY29udGFpbnNcbiAgICAgIC8vIGEgcGxhY2Vob2xkZXIgdG9rZW4gKGUuZy4gJyVzJyBvciAnJWQnIC0gc2VlIGFib3ZlIGBmb3JtYXRTcGVjaWZpZXJzYCB2YXJpYWJsZSlcbiAgICAgIC8vIHRoZW4gd2UgY2FuIGluZmVyIHRoYXQgdGhlIGBtZXRhYCBhcmcgcGFzc2VkIGlzIHVzZWQgZm9yIGZvcm1hdHRpbmdcbiAgICAgIG1lc3NhZ2UgPSBmb3JtYXQobWVzc2FnZSwgbWV0YSk7XG4gICAgICBtZXRhID0ge307XG4gICAgfSBlbHNlIGlmICghaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgaWYgKGlzRXJyb3IobWV0YSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobWV0YSk7XG4gICAgICAgIG1ldGEgPSB7fTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzT2JqZWN0KG1ldGEpICYmICFpc1VuZGVmaW5lZChtZXRhKSAmJiAhaXNOdWxsKG1ldGEpKSB7XG4gICAgICAgIC8vIElmIHRoZSBgbWV0YWAgdmFyaWFibGUgcGFzc2VkIHdhcyBub3QgYW4gT2JqZWN0IHRoZW4gY29udmVydCBpdFxuICAgICAgICBtZXNzYWdlID0gZm9ybWF0KG1lc3NhZ2UsIG1ldGEpO1xuICAgICAgICBtZXRhID0ge307XG4gICAgICB9IGVsc2UgaWYgKCFpc1N0cmluZyhtZXNzYWdlKSkge1xuICAgICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBub3QgYSBzdHJpbmcgdGhlbiB3ZSBzaG91bGQgcnVuIGB1dGlsLmZvcm1hdGAgb24gaXRcbiAgICAgICAgLy8gYXNzdW1pbmcgd2UncmUgZm9ybWF0dGluZyBpdCBsaWtlIGl0IHdhcyBhbm90aGVyIGFyZ3VtZW50XG4gICAgICAgIC8vIChhcyBvcHBvc2VkIHRvIHVzaW5nIHNvbWV0aGluZyBsaWtlIGZhc3QtanNvbi1zdHJpbmdpZnkpXG4gICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQobWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0Vycm9yKG1ldGEpKSB7XG4gICAgICBlcnJvcnMucHVzaChtZXRhKTtcbiAgICAgIC8vIGhhbmRsZSBhZGRpdGlvbmFsIGFyZ3NcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gW107XG4gICAgICBpZiAoaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgICBlcnJvcnMudW5zaGlmdChtZXNzYWdlKTtcbiAgICAgICAgbWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBhcmcgb2Ygb3JpZ2luYWxBcmdzLnNsaWNlKDIgKyBtb2RpZmllcikpIHtcbiAgICAgICAgLy8gc2hvdWxkIHNraXAgdGhpcyBiZXR0ZXIgd2l0aCBzbGljZSBhbmQgbW9kaWZpZXIgYWRqdXN0bWVudFxuICAgICAgICBpZiAobWV0YSA9PT0gYXJnKSBjb250aW51ZTtcbiAgICAgICAgaWYgKGlzRXJyb3IoYXJnKSkgZXJyb3JzLnB1c2goYXJnKTtcbiAgICAgICAgZWxzZSBtZXNzYWdlcy5wdXNoKGFyZyk7XG5cbiAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBtZXNzYWdlID0gZm9ybWF0KC4uLm1lc3NhZ2VzKTtcbiAgICAgICAgICBoYXNNZXNzYWdlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobGV2ZWwgPT09ICdsb2cnKSBsZXZlbCA9ICdlcnJvcic7XG5cbiAgICAgIG1ldGEgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKG1ldGEpICYmICFpc09iamVjdChtZXRhKSkgbWV0YSA9IHsgb3JpZ2luYWxfbWV0YTogbWV0YSB9O1xuICAgIGVsc2UgaWYgKCFpc09iamVjdChtZXRhKSkgbWV0YSA9IHt9O1xuXG4gICAgaWYgKGlzRXJyb3IobWVzc2FnZSkpIHtcbiAgICAgIGVycm9ycy51bnNoaWZ0KG1lc3NhZ2UpO1xuICAgICAgbWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIHJld3JpdGUgYG1ldGEuZXJyYCB0byBgbWV0YS5vcmlnaW5hbF9lcnJgIGZvciBjb25zaXN0ZW5jeVxuICAgIC8vIChpbiBjYXNlIHNvbWVvbmUgaGFzIGFuIG9iamVjdCB3aXRoIGAuZXJyYCBwcm9wZXJ0eSBvbiBpdCB3aXRoIGFuIGVycm9yKVxuICAgIC8vXG4gICAgaWYgKGlzT2JqZWN0KG1ldGEuZXJyKSkge1xuICAgICAgaWYgKGlzRXJyb3IobWV0YS5lcnIpKSBlcnJvcnMucHVzaChtZXRhLmVycik7XG4gICAgICBtZXRhLm9yaWdpbmFsX2VyciA9IGlzRXJyb3IobWV0YS5lcnIpID8gcGFyc2VFcnIobWV0YS5lcnIpIDogbWV0YS5lcnI7XG4gICAgfVxuXG4gICAgbGV0IGVycjtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGVyciA9IGVycm9yc1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICAgICBbLi4ubmV3IFNldChlcnJvcnMubWFwKChlKSA9PiBlLm1lc3NhZ2UpLmZpbHRlcihCb29sZWFuKSldLmpvaW4oJzsgJylcbiAgICAgICAgKTtcbiAgICAgICAgZXJyLnN0YWNrID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQoZXJyb3JzLm1hcCgoZSkgPT4gZS5zdGFjaykuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICBdLmpvaW4oJ1xcblxcbicpO1xuICAgICAgICBlcnIuZXJyb3JzID0gZXJyb3JzO1xuICAgICAgfVxuXG4gICAgICBtZXRhLmVyciA9IHBhcnNlRXJyKGVycik7XG4gICAgICBpZiAoIWlzU3RyaW5nKG1lc3NhZ2UpKSBtZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBOT1RFOiB0aGlzIHdhcyByZW1vdmVkIGluIHYxMC4yLjIgZHVlIHRvIGNpcmN1bGFyIHJlZmVyZW5jZSBpc3N1ZXNcbiAgICAvLyAgICAgICAodGhlIHdvcmthcm91bmQgd291bGQgaW52b2x2ZSBzYWZlU3RyaW5naWZ5IGFuZCB0aGVuIEpTT04ucGFyc2Ugd2hpY2ggd291bGQgYmUgcGVyZiBibG9hdClcbiAgICAvLyAgICAgICAodGhlcmUgc3RpbGwgbWlnaHQgYmUgYW5vdGhlciB3b3JrYXJvdW5kIG9yIHBlcmhhcHMgd2UgZG9uJ3QgYWRkIGFsbCB0aGUgYXJncyBoZXJlIGV4Y2VwdCBhZGRpdGlvbmFsKVxuICAgIC8vXG4gICAgLy8gU2V0IGBhcmdzYCBwcm9wIHdpdGggb3JpZ2luYWwgYXJndW1lbnRzIHBhc3NlZFxuICAgIC8vIG1ldGEuYXJncyA9IG9yaWdpbmFsQXJncztcblxuICAgIC8vIFNldCBkZWZhdWx0IGxldmVsIG9uIG1ldGFcbiAgICBtZXRhLmxldmVsID0gbGV2ZWw7XG5cbiAgICAvLyBBZGQgYGFwcGAgb2JqZWN0IHRvIG1ldGFkYXRhXG4gICAgaWYgKHRoaXMuYXBwSW5mbykgbWV0YS5hcHAgPSB0aGlzLmFwcEluZm87XG5cbiAgICAvL1xuICAgIC8vIGRldGVybWluZSBsb2cgbWV0aG9kIHRvIHVzZVxuICAgIC8vXG4gICAgLy8gaWYgd2UgZGlkbid0IHBhc3MgYSBsZXZlbCBhcyBhIG1ldGhvZFxuICAgIC8vIChlLmcuIGNvbnNvbGUuaW5mbyksIHRoZW4gd2Ugc2hvdWxkIHN0aWxsXG4gICAgLy8gdXNlIHRoZSBsb2dnZXIncyBgbG9nYCBtZXRob2QgdG8gb3V0cHV0XG4gICAgLy9cbiAgICAvLyBhbmQgZmF0YWwgc2hvdWxkIHVzZSBlcnJvciAoZS5nLiBpbiBicm93c2VyKVxuICAgIC8vXG4gICAgY29uc3QgbWV0aG9kID0gbW9kaWZpZXIgPT09IC0xID8gJ2xvZycgOiBsZXZlbDtcblxuICAgIC8vIHByZS1ob29rc1xuICAgIGZvciAoY29uc3QgaG9vayBvZiB0aGlzLmNvbmZpZy5ob29rcy5wcmUpIHtcbiAgICAgIFtlcnIsIG1lc3NhZ2UsIG1ldGFdID0gaG9vayhtZXRob2QsIGVyciwgbWVzc2FnZSwgbWV0YSk7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBOT1RFOiB1c2luZyBsb2Rhc2ggXy5vbWl0IGFuZCBfLnBpY2sgd291bGQgaGF2ZSBiZWVuIF92ZXJ5IHNsb3dfXG4gICAgLy9cbiAgICAvLyBjb25zdCBvbWl0dGVkQW5kUGlja2VkRmllbGRzID0ge1xuICAgIC8vICAgLi4uXy5vbWl0KG1ldGEsIHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcyksXG4gICAgLy8gICAuLi5fLnBpY2sobWV0YSwgdGhpcy5jb25maWcubWV0YS5waWNrZWRGaWVsZHMpXG4gICAgLy8gfTtcbiAgICAvL1xuICAgIC8vIGFsc28gd2UgZG9uJ3Qgd2FudCB0byBtdXRhdGUgYW55dGhpbmcgaW4gYG1ldGFgXG4gICAgLy8gYW5kIGlkZWFsbHkgd2Ugb25seSB3YW50IHRvIHBpY2sgZXhhY3RseSB3aGF0IHdlIG5lZWRcbiAgICAvLyAoYW5kIG5vdCBoYXZlIHR3byBvcGVyYXRpb25zLCBvbmUgZm9yIG9taXQsIGFuZCBvbmUgZm9yIHBpY2spXG4gICAgLy9cblxuICAgIC8vIHNldCBhIGJvb2xlYW4gZmxhZyBpZiB3ZSBoYWQgdGhlIHNpbGVudCBzeW1ib2wgb3Igbm90XG4gICAgY29uc3QgaGFkVHJ1ZVNpbGVudFN5bWJvbCA9IGJvb2xlYW4obWV0YVtzaWxlbnRTeW1ib2xdKTtcblxuICAgIGlmICghaXNFbXB0eSh0aGlzLmNvbmZpZy5tZXRhLnJlbWFwcGVkRmllbGRzKSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHRoaXMuY29uZmlnLm1ldGEucmVtYXBwZWRGaWVsZHMpKSB7XG4gICAgICAgIHNldChtZXRhLCB0aGlzLmNvbmZpZy5tZXRhLnJlbWFwcGVkRmllbGRzW2tleV0sIGdldChtZXRhLCBrZXkpKTtcbiAgICAgICAgdW5zZXQobWV0YSwga2V5KTtcbiAgICAgICAgLy8gY2xlYW51cCBlbXB0eSBvYmplY3RzIGFmdGVyIHJlbWFwcGluZ1xuICAgICAgICBpZiAodGhpcy5jb25maWcubWV0YS5jbGVhbnVwUmVtYXBwaW5nKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBrZXkubGFzdEluZGV4T2YoJy4nKTtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBwYXJlbnRLZXkgPSBrZXkuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICAgIGlmIChpc0VtcHR5KGdldChtZXRhLCBwYXJlbnRLZXkpKSkgdW5zZXQobWV0YSwgcGFyZW50S2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcykgfHxcbiAgICAgICFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEucGlja2VkRmllbGRzKVxuICAgICkge1xuICAgICAgY29uc3QgZG90aWZpZWQgPSBkb3RpZnlUb0FycmF5KG1ldGEpO1xuICAgICAgLy8gZG90aWZpZWQgPSBbXG4gICAgICAvLyAgICdlcnIubmFtZScsXG4gICAgICAvLyAgICdlcnIubWVzc2FnZScsXG4gICAgICAvLyAgICdlcnIuc3RhY2snLFxuICAgICAgLy8gICAnbGV2ZWwnLFxuICAgICAgLy8gICAnYXBwLm5hbWUnLFxuICAgICAgLy8gICAnYXBwLnZlcnNpb24nLFxuICAgICAgLy8gICAnYXBwLm5vZGUnLFxuICAgICAgLy8gICAnYXBwLmhhc2gnLFxuICAgICAgLy8gICAvLyAuLi5cbiAgICAgIC8vIF1cblxuICAgICAgaWYgKCFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcykpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcykge1xuICAgICAgICAgIC8vIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTg4MjM0OT5cbiAgICAgICAgICBsZXQgaSA9IGRvdGlmaWVkLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRvdGlmaWVkW2ldID09PSBwcm9wIHx8XG4gICAgICAgICAgICAgICghaXNTeW1ib2woZG90aWZpZWRbaV0pICYmIGRvdGlmaWVkW2ldLmluZGV4T2YoYCR7cHJvcH0uYCkgPT09IDApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIGRvdGlmaWVkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcGlja2VkU3ltYm9scyA9IFtdO1xuXG4gICAgICBpZiAoIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5waWNrZWRGaWVsZHMpKSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLmNvbmZpZy5tZXRhLnBpY2tlZEZpZWxkcykge1xuICAgICAgICAgIC8vIHJlc3BvbnNlLmhlYWRlcnMuYm9vcFxuICAgICAgICAgIC8vIHJlc3BvbnNlLmhlYWRlcnMuYmVlcFxuICAgICAgICAgIC8vIHJlc3BvbnNlLmJvZHlcbiAgICAgICAgICAvLyByZXNwb25zZS50ZXh0XG4gICAgICAgICAgLy8gcmVzcG9uc2VcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gc3BsaXQgYnkgdGhlIGZpcnN0IHBlcmlvZCBhbmQgb21pdCBhbnkga2V5cyBmcm9tIGRvdGlmaWVkIHN0YXJ0aW5nIHdpdGggaXRcbiAgICAgICAgICBpZiAoaXNTeW1ib2wocHJvcCkpIHtcbiAgICAgICAgICAgIGlmIChtZXRhW3Byb3BdKSBwaWNrZWRTeW1ib2xzLnB1c2goW3Byb3AsIG1ldGFbcHJvcF1dKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwcm9wLmluZGV4T2YoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHByb3Auc2xpY2UoMCwgaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgbGV0IGkgPSBkb3RpZmllZC5sZW5ndGg7XG4gICAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAoZG90aWZpZWRbaV0gPT09IGtleS5zbGljZSgwLCAtMSkpIGRvdGlmaWVkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChkb3RpZmllZFtpXS5pbmRleE9mKGtleSkgPT09IDApIGRvdGlmaWVkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGZpbmFsbHkgYWRkIGl0IGlmIGl0IGRpZCBub3QgYWxyZWFkeSBleGlzdFxuICAgICAgICAgIGlmIChkb3RpZmllZC5pbmRleE9mKHByb3ApID09PSAtMSkgZG90aWZpZWQucHVzaChwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL1xuICAgICAgLy8gaXRlcmF0ZSBvdmVyIGFsbCBkb3RpZmllZCB2YWx1ZXMgdG8gY2hlY2sgZm9yIHN5bWJvbHNcbiAgICAgIC8vXG4gICAgICAvLyBOT1RFOiB0aGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhleSBjb3VsZCBhbHJlYWR5IGJlIGluIGBwaWNrZWRTeW1ib2xzYFxuICAgICAgLy8gICAgICAgKGFuZCBpdCBkb2Vzbid0IGFsc28gZG8gYmlnaW50cyB5ZXQpXG4gICAgICAvL1xuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGRvdGlmaWVkKSB7XG4gICAgICAgIGlmIChpc1N5bWJvbChwcm9wKSkge1xuICAgICAgICAgIGlmIChtZXRhW3Byb3BdICE9PSB1bmRlZmluZWQpIHBpY2tlZFN5bWJvbHMucHVzaChbcHJvcCwgbWV0YVtwcm9wXV0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFbU3ltYm9sLmZvcihwcm9wKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBpY2tlZFN5bWJvbHMucHVzaChbU3ltYm9sLmZvcihwcm9wKSwgbWV0YVtTeW1ib2wuZm9yKHByb3ApXV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vXG4gICAgICAvLyBub3cgd2UgY2FsbCBwaWNrLWRlZXAgdXNpbmcgdGhlIGZpbmFsIGFycmF5XG4gICAgICAvL1xuICAgICAgLy8gTk9URTogdGhpcyBkb2VzIG5vdCBwaWNrIHN5bWJvbHMsIGJpZ2ludHMsIG5vciBzdHJlYW1zXG4gICAgICAvLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3N0cmlrZWVudGNvL3BpY2stZGVlcC9pc3N1ZXMvMj5cbiAgICAgIC8vICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vc3RyaWtlZW50Y28vcGljay1kZWVwL2lzc3Vlcy8yPlxuICAgICAgLy9cbiAgICAgIC8vIE5PVEU6IHRoaXMgaXMgd3JhcHBlZCBpbiB0cnkvY2F0Y2ggaW4gY2FzZSBzaW1pbGFyIGVycm9ycyBvY2N1clxuICAgICAgLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zdHJpcGUvc3RyaXBlLW5vZGUvaXNzdWVzLzE3OTY+XG4gICAgICAvL1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWV0YSA9IHBpY2tEZWVwKG1ldGEsIGRvdGlmaWVkKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXIuZXJyb3IoZXJyKTtcbiAgICAgIH1cblxuICAgICAgLy9cbiAgICAgIC8vIGlmIHRoZXJlIHdlcmUgYW55IHRvcC1sZXZlbCBzeW1ib2xzIHRvIGJlXG4gICAgICAvLyBwaWNrZWQgdGhlbiB3ZSBuZWVkIHRvIGFkZCB0aGVtIGJhY2sgaGVyZSB0byB0aGUgbGlzdFxuICAgICAgLy9cbiAgICAgIC8vIE5PVEU6IHdlJ2QgcHJvYmFibHkgd2FudCB0byBkbyB0aGUgc2FtZSBmb3IgYmlnaW50cyBhcyBzeW1ib2xzXG4gICAgICAvL1xuICAgICAgaWYgKHBpY2tlZFN5bWJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBwaWNrZWRTeW1ib2xzKSB7XG4gICAgICAgICAgbWV0YVtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBvbmx5IGludm9rZSBsb2dnZXIgbWV0aG9kcyBpZiBpdCB3YXMgbm90IHNpbGVudFxuICAgIGlmICghdGhpcy5jb25maWcuc2lsZW50ICYmICFoYWRUcnVlU2lsZW50U3ltYm9sKSB7XG4gICAgICAvLyBTaG93IHN0YWNrIHRyYWNlIGlmIG5lY2Vzc2FyeSAoYWxvbmcgd2l0aCBhbnkgbWV0YWRhdGEpXG4gICAgICBpZiAoaXNFcnJvcihlcnIpICYmIHRoaXMuY29uZmlnLnNob3dTdGFjaykge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLm1ldGEuc2hvdyB8fCBpc0VtcHR5KG1ldGEpKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0oLi4uKGhhc01lc3NhZ2UgPyBbbWVzc2FnZSwgZXJyXSA6IFtlcnJdKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy5jb25maWcubWV0YS5oaWRlTWV0YSAmJlxuICAgICAgICAgIG1ldGFbdGhpcy5jb25maWcubWV0YS5oaWRlTWV0YV1cbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0oLi4uKGhhc01lc3NhZ2UgPyBbbWVzc2FnZSwgZXJyXSA6IFtlcnJdKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0oXG4gICAgICAgICAgICAuLi4oaGFzTWVzc2FnZSA/IFttZXNzYWdlLCBlcnIsIG1ldGFdIDogW2VyciwgbWV0YV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb25maWcubWV0YS5zaG93IHx8IGlzRW1wdHkobWV0YSkpIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0obWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodGhpcy5jb25maWcubWV0YS5oaWRlTWV0YSAmJiBtZXRhW3RoaXMuY29uZmlnLm1ldGEuaGlkZU1ldGFdKSB8fFxuICAgICAgICAodGhpcy5jb25maWcubWV0YS5oaWRlSFRUUCAmJiBtZXRhW3RoaXMuY29uZmlnLm1ldGEuaGlkZUhUVFBdKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlclttZXRob2RdKG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0obWVzc2FnZSwgbWV0YSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcG9zdC1ob29rc1xuICAgIGlmICh0aGlzLmNvbmZpZy5ob29rcy5wb3N0Lmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiB7IG1ldGhvZCwgZXJyLCBtZXNzYWdlLCBtZXRhIH07XG4gICAgcmV0dXJuIHJ1blBvc3RIb29rcyh7XG4gICAgICBob29rczogdGhpcy5jb25maWcuaG9va3MucG9zdCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGVycixcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBtZXRhLFxuICAgICAgbG9nZ2VyOiB0aGlzLmNvbmZpZy5sb2dnZXJcbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEF4ZTtcbiJdLCJtYXBw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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "axe",
3
3
  "description": "Axe is a logger-agnostic wrapper that normalizes logs regardless of argument style. Great for large development teams, old and new projects, and works with Pino, Bunyan, Winston, console, and more. It is lightweight, performant, highly-configurable, and automatically adds OS, CPU, and Git information to your logs. It supports hooks (useful for masking sensitive data) and dot-notation remapping, omitting, and picking of log metadata properties. Made for Forward Email, Lad, and Cabin.",
4
- "version": "13.0.1",
4
+ "version": "14.0.0",
5
5
  "author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",
6
6
  "browser": {
7
7
  "parse-app-info": false
@@ -23,51 +23,50 @@
23
23
  "console-polyfill": "0.3.0",
24
24
  "format-specifiers": "^1.0.0",
25
25
  "is-buffer": "^2.0.5",
26
- "is-symbol": "^1.0.4",
26
+ "is-symbol": "^1.1.1",
27
27
  "iserror": "0.0.2",
28
28
  "merge-options": "3.0.4",
29
- "p-map-series": "2",
30
29
  "parse-app-info": "^6.0.0",
31
30
  "parse-err": "^1.0.0",
32
31
  "pick-deep": "1.0.0",
33
32
  "unset-value": "2.0.1"
34
33
  },
35
34
  "devDependencies": {
36
- "@babel/cli": "^7.25.9",
37
- "@babel/core": "^7.26.0",
38
- "@babel/preset-env": "^7.26.0",
39
- "@commitlint/cli": "^19.6.0",
40
- "@commitlint/config-conventional": "^19.6.0",
35
+ "@babel/cli": "^7.29.7",
36
+ "@babel/core": "^7.29.7",
37
+ "@babel/preset-env": "^7.29.7",
38
+ "@commitlint/cli": "^19.8.1",
39
+ "@commitlint/config-conventional": "^19.8.1",
41
40
  "ava": "5.3.1",
42
41
  "babelify": "^10.0.0",
43
- "browserify": "^17.0.0",
44
- "consola": "^3.2.3",
42
+ "browserify": "^17.0.1",
43
+ "consola": "^3.4.2",
45
44
  "cross-env": "^7.0.3",
46
- "eslint": "8.49.0",
45
+ "eslint": "8.57.1",
47
46
  "eslint-config-xo-lass": "^2.0.1",
48
- "eslint-plugin-compat": "^4.2.0",
47
+ "eslint-plugin-compat": "6.0.0",
49
48
  "eslint-plugin-node": "^11.1.0",
50
- "express": "^4.21.1",
49
+ "express": "^5.2.1",
51
50
  "fixpack": "^4.0.0",
52
- "husky": "^9.0.11",
53
- "jsdom": "15",
54
- "koa": "^2.15.3",
55
- "lint-staged": "^15.2.10",
56
- "lodash": "^4.17.21",
51
+ "husky": "^9.1.7",
52
+ "jsdom": "26",
53
+ "koa": "^3.2.1",
54
+ "lint-staged": "^15.5.2",
55
+ "lodash": "^4.18.1",
57
56
  "nyc": "^17.1.0",
58
- "pino": "^9.5.0",
57
+ "pino": "10.1.0",
59
58
  "remark-cli": "11.0.0",
60
59
  "remark-preset-github": "^4.0.4",
61
- "rimraf": "^5.0.5",
60
+ "rimraf": "^5.0.10",
62
61
  "signale": "^1.4.0",
63
- "sinon": "^18.0.0",
62
+ "sinon": "^22.1.0",
64
63
  "tinyify": "3.0.0",
65
- "tsd": "^0.31.2",
66
- "typescript": "5.5.4",
67
- "xo": "0.56.0"
64
+ "tsd": "^0.33.0",
65
+ "typescript": "5.9.3",
66
+ "xo": "0.60.0"
68
67
  },
69
68
  "engines": {
70
- "node": ">=14"
69
+ "node": ">=18.18"
71
70
  },
72
71
  "files": [
73
72
  "lib",
@@ -129,7 +128,7 @@
129
128
  "lint-build": "npm run lint-lib && npm run lint-dist",
130
129
  "lint-dist": "eslint --no-inline-config -c .dist.eslintrc.json dist",
131
130
  "lint-lib": "eslint --no-inline-config -c .lib.eslintrc.json lib",
132
- "minify": "cross-env NODE_ENV=production browserify src/index.js -o dist/axe.min.js -s Axe -g [ babelify --configFile ./.dist.babelrc.json ] -p tinyify",
131
+ "minify": "cross-env NODE_ENV=production browserify src/index.js -o dist/axe.min.js -s Axe -g [ babelify --configFile ./.dist.babelrc.json ] -p [ tinyify --no-flat ]",
133
132
  "nyc": "cross-env NODE_ENV=test nyc ava",
134
133
  "prepare": "husky install",
135
134
  "pretest": "npm run lint",
package/src/index.js CHANGED
@@ -10,7 +10,6 @@ const isError = require('iserror');
10
10
  const isSymbol = require('is-symbol');
11
11
  const isBuffer = require('is-buffer');
12
12
  const mergeOptions = require('merge-options');
13
- const pMapSeries = require('p-map-series');
14
13
  const parseAppInfo = require('parse-app-info');
15
14
  const parseErr = require('parse-err');
16
15
  const pickDeep = require('pick-deep');
@@ -29,6 +28,26 @@ const name =
29
28
  ? false
30
29
  : process.env.HOSTNAME || os.hostname();
31
30
 
31
+ async function mapSeries(iterable, mapper) {
32
+ const values = [...iterable];
33
+ const results = [];
34
+ async function map(index) {
35
+ if (index === values.length) return results;
36
+ results.push(await mapper(values[index]));
37
+ return map(index + 1);
38
+ }
39
+
40
+ return map(0);
41
+ }
42
+
43
+ async function runPostHooks({ hooks, method, err, message, meta, logger }) {
44
+ try {
45
+ return await mapSeries(hooks, (hook) => hook(method, err, message, meta));
46
+ } catch (err_) {
47
+ logger.error(err_);
48
+ }
49
+ }
50
+
32
51
  // <https://github.com/sindresorhus/is-plain-obj/blob/main/index.js>
33
52
  function isPlainObject(value) {
34
53
  if (typeof value !== 'object' || value === null) {
@@ -631,13 +650,14 @@ class Axe {
631
650
  // post-hooks
632
651
  if (this.config.hooks.post.length === 0)
633
652
  return { method, err, message, meta };
634
- return pMapSeries(this.config.hooks.post, (hook) =>
635
- hook(method, err, message, meta)
636
- )
637
- .then()
638
- .catch((err) => {
639
- this.config.logger.error(err);
640
- });
653
+ return runPostHooks({
654
+ hooks: this.config.hooks.post,
655
+ method,
656
+ err,
657
+ message,
658
+ meta,
659
+ logger: this.config.logger
660
+ });
641
661
  }
642
662
  }
643
663